mcdev 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/.eslintrc.json +4 -4
  2. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +2 -2
  4. package/.github/workflows/coverage-develop-branch.yml +0 -2
  5. package/.github/workflows/coverage-main-branch.yml +0 -2
  6. package/.github/workflows/coverage.yml +0 -2
  7. package/.husky/post-checkout +1 -0
  8. package/.husky/post-merge +1 -0
  9. package/.vscode/extensions.json +4 -0
  10. package/docs/dist/documentation.md +633 -286
  11. package/lib/Deployer.js +25 -25
  12. package/lib/MetadataTypeDefinitions.js +1 -1
  13. package/lib/MetadataTypeInfo.js +1 -1
  14. package/lib/Retriever.js +1 -1
  15. package/lib/cli.js +159 -9
  16. package/lib/index.js +395 -95
  17. package/lib/metadataTypes/Asset.js +10 -11
  18. package/lib/metadataTypes/AttributeGroup.js +76 -2
  19. package/lib/metadataTypes/AttributeSet.js +260 -0
  20. package/lib/metadataTypes/Automation.js +413 -96
  21. package/lib/metadataTypes/DataExtension.js +2 -2
  22. package/lib/metadataTypes/DataExtensionField.js +1 -1
  23. package/lib/metadataTypes/Event.js +2 -3
  24. package/lib/metadataTypes/Folder.js +1 -1
  25. package/lib/metadataTypes/Journey.js +5 -6
  26. package/lib/metadataTypes/MetadataType.js +149 -49
  27. package/lib/metadataTypes/MobileKeyword.js +8 -8
  28. package/lib/metadataTypes/MobileMessage.js +5 -5
  29. package/lib/metadataTypes/Query.js +26 -10
  30. package/lib/metadataTypes/Script.js +3 -3
  31. package/lib/metadataTypes/TransactionalSMS.js +5 -5
  32. package/lib/metadataTypes/TriggeredSend.js +25 -50
  33. package/lib/metadataTypes/User.js +7 -4
  34. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +117 -106
  35. package/lib/metadataTypes/definitions/{SetDefinition.definition.js → AttributeSet.definition.js} +54 -27
  36. package/lib/metadataTypes/definitions/Automation.definition.js +22 -15
  37. package/lib/metadataTypes/definitions/ImportFile.definition.js +36 -6
  38. package/lib/metadataTypes/definitions/TriggeredSend.definition.js +1 -0
  39. package/lib/util/cache.js +9 -4
  40. package/lib/util/cli.js +40 -0
  41. package/lib/util/file.js +2 -2
  42. package/lib/util/init.js +84 -0
  43. package/lib/util/util.js +121 -13
  44. package/package.json +11 -11
  45. package/test/mockRoot/.mcdevrc.json +1 -1
  46. package/test/mockRoot/deploy/testInstance/testBU/automation/testExisting_automation.automation-meta.json +1 -2
  47. package/test/mockRoot/deploy/testInstance/testBU/automation/testNew_automation.automation-meta.json +5 -6
  48. package/test/mockRoot/deploy/testInstance/testBU/dataExtract/testExisting_dataExtract.dataExtract-meta.json +35 -0
  49. package/test/mockRoot/deploy/testInstance/testBU/dataExtract/testNew_dataExtract.dataExtract-meta.json +35 -0
  50. package/test/mockRoot/deploy/testInstance/testBU/fileTransfer/testExisting_fileTransfer.fileTransfer-meta.json +17 -0
  51. package/test/mockRoot/deploy/testInstance/testBU/fileTransfer/testNew_fileTransfer.fileTransfer-meta.json +17 -0
  52. package/test/mockRoot/deploy/testInstance/testBU/importFile/testExisting_importFile.importFile-meta.json +29 -0
  53. package/test/mockRoot/deploy/testInstance/testBU/importFile/testNew_importFile.importFile-meta.json +29 -0
  54. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.json +11 -0
  55. package/test/mockRoot/deploy/testInstance/testBU/query/testExisting_query_fixKeys.query-meta.sql +6 -0
  56. package/test/mockRoot/deploy/testInstance/testBU/script/testExisting_script.script-meta.json +6 -0
  57. package/test/mockRoot/deploy/testInstance/testBU/script/testExisting_script.script-meta.ssjs +1 -0
  58. package/test/mockRoot/deploy/testInstance/testBU/script/testNew_script.script-meta.json +6 -0
  59. package/test/mockRoot/deploy/testInstance/testBU/script/testNew_script.script-meta.ssjs +1 -0
  60. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testExisting_triggeredSend.triggeredSend-meta.json +29 -0
  61. package/test/mockRoot/deploy/testInstance/testBU/triggeredSend/testNew_triggeredSend.triggeredSend-meta.json +29 -0
  62. package/test/resourceFactory.js +77 -12
  63. package/test/resources/1111111/accountUser/retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml +27 -0
  64. package/test/resources/1111111/accountUser/retrieve-ActiveFlag=falseANDEmaillike@-response.xml +156 -0
  65. package/test/resources/1111111/accountUser/retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml +87 -0
  66. package/test/resources/1111111/accountUser/retrieve-ActiveFlag=trueANDEmaillike@-response.xml +156 -0
  67. package/test/resources/1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml +27 -0
  68. package/test/resources/1111111/accountUserAccount/retrieve-AccountUser.AccountUserID=700301950-response.xml +60 -0
  69. package/test/resources/1111111/user/retrieve-expected.md +4 -2
  70. package/test/resources/9999999/attributeGroup/retrieve-expected.json +25 -0
  71. package/test/resources/9999999/attributeSet/retrieve-expected.json +748 -0
  72. package/test/resources/9999999/automation/build-expected.json +1 -2
  73. package/test/resources/9999999/automation/create-expected.json +7 -8
  74. package/test/resources/9999999/automation/create-testNew_automation-expected.md +4 -4
  75. package/test/resources/9999999/automation/patch_fixKeys-pause-expected.json +44 -0
  76. package/test/resources/9999999/automation/patch_fixKeys-schedule-expected.json +44 -0
  77. package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +42 -0
  78. package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-fixKey_pause-response.xml +42 -0
  79. package/test/resources/9999999/automation/perform-08afb0e2-b00a-4c88-fixKey_schedule-response.xml +42 -0
  80. package/test/resources/9999999/automation/perform-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +42 -0
  81. package/test/resources/9999999/automation/retrieve-expected.json +1 -2
  82. package/test/resources/9999999/automation/retrieve-testExisting_automation-expected.md +2 -2
  83. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +52 -0
  84. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-ad2e-pause-response.xml +38 -0
  85. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_pause-response.xml +52 -0
  86. package/test/resources/9999999/automation/schedule-08afb0e2-b00a-4c88-fixKey_schedule-response.xml +52 -0
  87. package/test/resources/9999999/automation/schedule-a8afb0e2-b00a-4c88-ad2e-1f7f8788c560-response.xml +52 -0
  88. package/test/resources/9999999/automation/template-expected.json +1 -2
  89. package/test/resources/9999999/automation/update-expected.json +1 -2
  90. package/test/resources/9999999/automation/update-testExisting_automation-expected.md +2 -2
  91. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-pause/get-response.json +85 -0
  92. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-ad2e-pause/patch-response.json +85 -0
  93. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_pause/get-response.json +85 -0
  94. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_pause/patch-response.json +85 -0
  95. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_schedule/get-response.json +85 -0
  96. package/test/resources/9999999/automation/v1/automations/08afb0e2-b00a-4c88-fixKey_schedule/patch-response.json +85 -0
  97. package/test/resources/9999999/automation/v1/automations/a8afb0e2-b00a-4c88-ad2e-1f7f8788c560/get-response.json +1 -1
  98. package/test/resources/9999999/automation/v1/automations/post-response.json +20 -19
  99. package/test/resources/9999999/automation/v1/dataextracts/56c5370a-f988-4f36-b0ee-0f876573f6d7/patch-response.json +38 -0
  100. package/test/resources/9999999/automation/v1/dataextracts/post-response.json +38 -0
  101. package/test/resources/9999999/automation/v1/dataextracttypes/get-response.json +50 -0
  102. package/test/resources/9999999/automation/v1/filetransfers/72c328ac-f5b0-4e37-91d3-a775666f15a6/patch-response.json +18 -0
  103. package/test/resources/9999999/automation/v1/filetransfers/post-response.json +18 -0
  104. package/test/resources/9999999/automation/v1/ftplocations/get-response.json +18 -0
  105. package/test/resources/9999999/automation/v1/imports/9d16f42c-2260-ed11-b849-48df37d1de8b/patch-response.json +31 -0
  106. package/test/resources/9999999/automation/v1/imports/get-response.json +1 -1
  107. package/test/resources/9999999/automation/v1/imports/post-response.json +30 -0
  108. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dae/actions/start/post-response.txt +1 -0
  109. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeys/get-response.json +17 -0
  110. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat_fixKeys/patch-response.json +18 -0
  111. package/test/resources/9999999/automation/v1/queries/get-response.json +18 -1
  112. package/test/resources/9999999/automation/v1/scripts/39f6a488-20eb-4ba0-b0b9-023725b574e4/patch-response.json +10 -0
  113. package/test/resources/9999999/automation/v1/scripts/get-response.json +12 -2
  114. package/test/resources/9999999/automation/v1/scripts/post-response.json +10 -0
  115. package/test/resources/9999999/dataExtension/retrieve-Name=testExisting_dataExtension-response.xml +52 -0
  116. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testExisting_dataExtension-response.xml +98 -0
  117. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_dataExtensionORDataExtension.CustomerKey=testExisting_dataExtension-response.xml +99 -0
  118. package/test/resources/9999999/dataExtract/build-expected.json +35 -0
  119. package/test/resources/9999999/dataExtract/get-expected.json +39 -0
  120. package/test/resources/9999999/dataExtract/patch-expected.json +37 -0
  121. package/test/resources/9999999/dataExtract/post-expected.json +37 -0
  122. package/test/resources/9999999/dataExtract/template-expected.json +35 -0
  123. package/test/resources/9999999/dataFolder/retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml +136 -0
  124. package/test/resources/9999999/dataFolder/retrieve-ContentType=ssjsactivity-response.xml +48 -0
  125. package/test/resources/9999999/dataFolder/retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml +276 -0
  126. package/test/resources/9999999/dataFolder/retrieve-response.xml +23 -0
  127. package/test/resources/9999999/email/retrieve-response.xml +203 -0
  128. package/test/resources/9999999/fileTransfer/build-expected.json +15 -0
  129. package/test/resources/9999999/fileTransfer/get-expected.json +17 -0
  130. package/test/resources/9999999/fileTransfer/patch-expected.json +17 -0
  131. package/test/resources/9999999/fileTransfer/post-expected.json +17 -0
  132. package/test/resources/9999999/fileTransfer/template-expected.json +15 -0
  133. package/test/resources/9999999/hub/v1/contacts/schema/attributeGroups/get-response.json +585 -0
  134. package/test/resources/9999999/hub/v1/contacts/schema/setDefinitions/get-response.json +19807 -0
  135. package/test/resources/9999999/importFile/build-expected.json +27 -0
  136. package/test/resources/9999999/importFile/get-expected.json +29 -0
  137. package/test/resources/9999999/importFile/patch-expected.json +29 -0
  138. package/test/resources/9999999/importFile/post-expected.json +29 -0
  139. package/test/resources/9999999/importFile/template-expected.json +27 -0
  140. package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_pause-response.xml +32 -0
  141. package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixKey_schedule-response.xml +32 -0
  142. package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_paused-response.xml +32 -0
  143. package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_fixedKey_scheduled-response.xml +32 -0
  144. package/test/resources/9999999/program/retrieve-CustomerKey=testExisting_automation_pause-response.xml +30 -0
  145. package/test/resources/9999999/program/retrieve-response.xml +21 -3
  146. package/test/resources/9999999/query/patch_fixKeys-expected.json +11 -0
  147. package/test/resources/9999999/query/patch_fixKeys-expected.sql +6 -0
  148. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixKeysANDStatus=Active-response.xml +30 -0
  149. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testExisting_query_fixedKeysANDStatus=Active-response.xml +30 -0
  150. package/test/resources/9999999/queryDefinition/retrieve-CustomerKey=testNew_queryANDStatus=Active-response.xml +30 -0
  151. package/test/resources/9999999/script/build-expected.json +6 -0
  152. package/test/resources/9999999/script/build-expected.ssjs +1 -0
  153. package/test/resources/9999999/script/get-expected.json +8 -0
  154. package/test/resources/9999999/script/get-expected.ssjs +1 -0
  155. package/test/resources/9999999/script/get_noScriptTag-expected.html +1 -0
  156. package/test/resources/9999999/script/get_noScriptTag-expected.json +8 -0
  157. package/test/resources/9999999/script/patch-expected.json +8 -0
  158. package/test/resources/9999999/script/patch-expected.ssjs +1 -0
  159. package/test/resources/9999999/script/post-expected.json +8 -0
  160. package/test/resources/9999999/script/post-expected.ssjs +1 -0
  161. package/test/resources/9999999/script/template-expected.json +6 -0
  162. package/test/resources/9999999/script/template-expected.ssjs +1 -0
  163. package/test/resources/9999999/triggeredSend/build-expected.json +29 -0
  164. package/test/resources/9999999/triggeredSend/get-expected.json +29 -0
  165. package/test/resources/9999999/triggeredSend/patch-expected.json +29 -0
  166. package/test/resources/9999999/triggeredSend/post-expected.json +29 -0
  167. package/test/resources/9999999/triggeredSend/template-expected.json +29 -0
  168. package/test/resources/9999999/triggeredSendDefinition/create-response.xml +75 -0
  169. package/test/resources/9999999/triggeredSendDefinition/delete-response.xml +36 -0
  170. package/test/resources/9999999/triggeredSendDefinition/{retrieve-response.xml → retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml} +4 -4
  171. package/test/resources/9999999/triggeredSendDefinition/update-response.xml +74 -0
  172. package/test/type.attributeGroup.test.js +55 -0
  173. package/test/type.attributeSet.test.js +55 -0
  174. package/test/type.automation.test.js +638 -11
  175. package/test/type.dataExtension.test.js +0 -1
  176. package/test/type.dataExtract.test.js +187 -0
  177. package/test/type.fileTransfer.test.js +185 -0
  178. package/test/type.importFile.test.js +186 -0
  179. package/test/type.mobileKeyword.test.js +0 -1
  180. package/test/type.query.test.js +464 -13
  181. package/test/type.script.test.js +367 -0
  182. package/test/type.triggeredSend.test.js +152 -0
  183. package/test/type.user.test.js +22 -10
  184. package/test/utils.js +4 -1
  185. package/lib/metadataTypes/SetDefinition.js +0 -37
  186. /package/test/resources/1111111/accountUser/{retrieve-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml} +0 -0
  187. /package/test/resources/1111111/accountUserAccount/{retrieve-response.xml → retrieve-AccountUser.AccountUserIDIN700301950,700301951,7471228-response.xml} +0 -0
  188. /package/test/resources/1111111/businessUnit/{retrieve-response.xml → retrieve-ID=1111111-response.xml} +0 -0
  189. /package/test/resources/1111111/list/{retrieve-response.xml → retrieve-CustomerKey=All SubscribersORListName=All Subscribers-response.xml} +0 -0
  190. /package/test/resources/1111111/role/{retrieve-response.xml → retrieve-IsPrivate=false-response.xml} +0 -0
  191. /package/test/resources/9999999/emailSendDefinition/{retrieve-response.xml → retrieve-IsPlatformObject=falseANDDescriptionnotEqualsSFSendDefinition-response.xml} +0 -0
  192. /package/test/resources/9999999/queryDefinition/{retrieve-response.xml → retrieve-CustomerKey=testExisting_queryANDStatus=Active-response.xml} +0 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "allowErrors": true,
3
+ "createdDate": "2022-11-09T05:32:30.533",
4
+ "customerKey": "testExisting_importFile",
5
+ "dateFormatLocale": "en-US",
6
+ "deleteFile": false,
7
+ "description": "updated on deploy",
8
+ "fieldMappingType": "InferFromColumnHeadings",
9
+ "fieldMappings": [],
10
+ "fileNamingPattern": "blabla",
11
+ "fileTransferLocationTypeId": 0,
12
+ "fileType": "CSV",
13
+ "filter": "",
14
+ "hasColumnHeader": true,
15
+ "isOrderedImport": true,
16
+ "isSequential": true,
17
+ "maxFileAgeHours": 0,
18
+ "maxFileAgeScheduleOffsetHours": 0,
19
+ "maxImportFrequencyHours": 0,
20
+ "modifiedDate": "2022-11-17T07:13:03.95",
21
+ "name": "testExisting_importFile",
22
+ "sendEmailNotification": false,
23
+ "standardQuotedStrings": true,
24
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
25
+ "c__destinationType": "DataExtension",
26
+ "r__dataExtension_CustomerKey": "testExisting_dataExtension",
27
+ "c__subscriberImportType": "DataExtension",
28
+ "c__dataAction": "AddUpdate"
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "allowErrors": true,
3
+ "createdDate": "2022-11-09T05:32:30.533",
4
+ "customerKey": "testNew_importFile",
5
+ "dateFormatLocale": "en-US",
6
+ "deleteFile": false,
7
+ "description": "created via deploy",
8
+ "fieldMappingType": "InferFromColumnHeadings",
9
+ "fieldMappings": [],
10
+ "fileNamingPattern": "blabla",
11
+ "fileTransferLocationTypeId": 0,
12
+ "fileType": "CSV",
13
+ "filter": "",
14
+ "hasColumnHeader": true,
15
+ "isOrderedImport": true,
16
+ "isSequential": true,
17
+ "maxFileAgeHours": 0,
18
+ "maxFileAgeScheduleOffsetHours": 0,
19
+ "maxImportFrequencyHours": 0,
20
+ "modifiedDate": "2022-11-17T07:13:03.95",
21
+ "name": "testNew_importFile",
22
+ "sendEmailNotification": false,
23
+ "standardQuotedStrings": true,
24
+ "r__fileLocation_name": "ExactTarget Enhanced FTP",
25
+ "c__destinationType": "DataExtension",
26
+ "r__dataExtension_CustomerKey": "testExisting_dataExtension",
27
+ "c__subscriberImportType": "DataExtension",
28
+ "c__dataAction": "AddUpdate"
29
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "testExisting_query_fixedKeys",
3
+ "key": "testExisting_query_fixKeys",
4
+ "description": "updated on deploy",
5
+ "targetKey": "testExisting_dataExtension",
6
+ "createdDate": "2022-04-26T15:21:16.453",
7
+ "modifiedDate": "2022-04-26T16:04:15.88",
8
+ "targetUpdateTypeName": "Overwrite",
9
+ "isFrozen": false,
10
+ "r__folder_Path": "Query"
11
+ }
@@ -0,0 +1,6 @@
1
+ SELECT
2
+ SubscriberKey as testField
3
+ FROM
4
+ _Subscribers
5
+ WHERE
6
+ country IN ('test')
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "updated on deploy",
3
+ "key": "testExisting_script",
4
+ "name": "testExisting_script",
5
+ "r__folder_Path": "Scripts"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "description": "created on deploy",
3
+ "key": "testNew_script",
4
+ "name": "testNew_script",
5
+ "r__folder_Path": "Scripts"
6
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "AllowedSlots": 0,
3
+ "AutoAddSubscribers": false,
4
+ "AutoUpdateSubscribers": false,
5
+ "BatchInterval": 0,
6
+ "BccEmail": "",
7
+ "CreatedDate": "2018-06-25T05:58:00",
8
+ "CustomerKey": "testExisting_triggeredSend",
9
+ "Description": "updated on deploy",
10
+ "DynamicEmailSubject": "You are successfully unsubscribed",
11
+ "EmailSubject": "You are successfully unsubscribed",
12
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
13
+ "FromName": "unsubscribe",
14
+ "IsMultipart": false,
15
+ "IsWrapped": true,
16
+ "Keyword": "",
17
+ "ModifiedDate": "2018-06-25T05:58:00",
18
+ "Name": "testExisting_triggeredSend",
19
+ "NewSlotTrigger": 0,
20
+ "Priority": 4,
21
+ "SendClassification": {
22
+ "CustomerKey": "Default Transactional"
23
+ },
24
+ "SuppressTracking": false,
25
+ "TriggeredSendStatus": "New",
26
+ "TriggeredSendType": "Continuous",
27
+ "r__email_Name": "Sporting Goods for September",
28
+ "r__folder_Path": "Triggered Sends"
29
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "AllowedSlots": 0,
3
+ "AutoAddSubscribers": false,
4
+ "AutoUpdateSubscribers": false,
5
+ "BatchInterval": 0,
6
+ "BccEmail": "",
7
+ "CreatedDate": "2018-06-25T05:58:00",
8
+ "CustomerKey": "testNew_triggeredSend",
9
+ "Description": "created on deploy",
10
+ "DynamicEmailSubject": "You are successfully unsubscribed",
11
+ "EmailSubject": "You are successfully unsubscribed",
12
+ "FromAddress": "unsubscribe@emails.mcdev.accenture.com",
13
+ "FromName": "unsubscribe",
14
+ "IsMultipart": false,
15
+ "IsWrapped": true,
16
+ "Keyword": "",
17
+ "ModifiedDate": "2018-06-25T05:58:00",
18
+ "Name": "testNew_triggeredSend",
19
+ "NewSlotTrigger": 0,
20
+ "Priority": 4,
21
+ "SendClassification": {
22
+ "CustomerKey": "Default Transactional"
23
+ },
24
+ "SuppressTracking": false,
25
+ "TriggeredSendStatus": "New",
26
+ "TriggeredSendType": "Continuous",
27
+ "r__email_Name": "Sporting Goods for September",
28
+ "r__folder_Path": "Triggered Sends"
29
+ }
@@ -1,22 +1,50 @@
1
1
  const fs = require('fs-extra');
2
2
  const path = require('node:path');
3
3
  const { XMLParser } = require('fast-xml-parser');
4
- const { color } = require('../lib/util/util');
4
+ const Util = require('../lib/util/util');
5
5
  const parser = new XMLParser();
6
6
  const attributeParser = new XMLParser({ ignoreAttributes: false });
7
+ let color;
8
+
9
+ /* eslint-disable unicorn/prefer-ternary */
10
+ if (
11
+ process.env.VSCODE_AMD_ENTRYPOINT === 'vs/workbench/api/node/extensionHostProcess' ||
12
+ process.env.VSCODE_CRASH_REPORTER_PROCESS_TYPE === 'extensionHost'
13
+ ) {
14
+ // when we execute the test in a VSCode extension host, we don't want CLI color codes.
15
+ color = new Proxy(
16
+ {},
17
+ {
18
+ /**
19
+ * catch-all for color
20
+ *
21
+ * @returns {string} empty string
22
+ */
23
+ get() {
24
+ return '';
25
+ },
26
+ }
27
+ );
28
+ } else {
29
+ // test is executed directly in a command prompt. Use colors.
30
+ color = Util.color;
31
+ }
32
+ /* eslint-enable unicorn/prefer-ternary */
33
+
7
34
  /**
8
35
  * gets mock SOAP metadata for responding
9
36
  *
10
37
  * @param {string} mcdevAction SOAP action
11
38
  * @param {string} type metadata Type
12
39
  * @param {string} mid of Business Unit
13
- * @param {object} filter likely for customer key
40
+ * @param {object|string} filter likely for customer key
14
41
  * @returns {string} relevant metadata stringified
15
42
  */
16
43
  exports.loadSOAPRecords = async (mcdevAction, type, mid, filter) => {
17
44
  type = type[0].toLowerCase() + type.slice(1);
18
45
  const testPath = path.join('test', 'resources', mid.toString(), type, mcdevAction);
19
- const filterPath = this.filterToPath(filter);
46
+ const filterPath =
47
+ typeof filter === 'string' && filter ? '-' + filter : this.filterToPath(filter);
20
48
  if (await fs.pathExists(testPath + filterPath + '-response.xml')) {
21
49
  return fs.readFile(testPath + filterPath + '-response.xml', {
22
50
  encoding: 'utf8',
@@ -25,7 +53,7 @@ exports.loadSOAPRecords = async (mcdevAction, type, mid, filter) => {
25
53
  if (filterPath) {
26
54
  /* eslint-disable no-console */
27
55
  console.log(
28
- `${color.bgYellow}${color.fgBlack}test-warning${
56
+ `${color.bgYellow}${color.fgBlack}TEST-WARNING${
29
57
  color.reset
30
58
  }: You are loading your reponse from ${
31
59
  testPath + '-response.xml'
@@ -41,9 +69,9 @@ exports.loadSOAPRecords = async (mcdevAction, type, mid, filter) => {
41
69
  }
42
70
  /* eslint-disable no-console */
43
71
  console.log(
44
- `${color.bgRed}${color.fgBlack}test-error${color.reset}: Please create file ${
45
- testPath + filterPath + '-response.xml'
46
- } or ${testPath + '-response.xml'}`
72
+ `${color.bgRed}${color.fgBlack}TEST-ERROR${color.reset}: Please create file ${
73
+ filterPath ? testPath + filterPath + '-response.xml or ' : ''
74
+ }${testPath + '-response.xml'}`
47
75
  );
48
76
  /* eslint-enable no-console */
49
77
 
@@ -54,11 +82,26 @@ exports.loadSOAPRecords = async (mcdevAction, type, mid, filter) => {
54
82
  });
55
83
  };
56
84
  exports.filterToPath = (filter) => {
57
- if (filter && filter.Property && filter.SimpleOperator && filter.Value) {
58
- return `-${filter.Property}${filter.SimpleOperator.replace('equals', '=')}${filter.Value}`;
85
+ if (filter) {
86
+ return '-' + this._filterToPath(filter);
59
87
  }
60
88
  return '';
61
89
  };
90
+ exports._filterToPath = (filter) => {
91
+ if (filter.Property && filter.SimpleOperator) {
92
+ return `${filter.Property}${filter.SimpleOperator.replace('equals', '=')}${
93
+ filter.Value === undefined ? '' : filter.Value
94
+ }`;
95
+ } else if (filter.LeftOperand && filter.LogicalOperator && filter.RightOperand) {
96
+ return (
97
+ this._filterToPath(filter.LeftOperand) +
98
+ filter.LogicalOperator +
99
+ this._filterToPath(filter.RightOperand)
100
+ );
101
+ } else {
102
+ throw new Error('unknown filter type');
103
+ }
104
+ };
62
105
  /**
63
106
  * based on request, respond with different soap data
64
107
  *
@@ -123,8 +166,30 @@ exports.handleSOAPRequest = async (config) => {
123
166
 
124
167
  break;
125
168
  }
169
+ case 'Schedule': {
170
+ responseXML = await this.loadSOAPRecords(
171
+ config.headers.SOAPAction.toLocaleLowerCase(),
172
+ fullObj.Envelope.Body.ScheduleRequestMsg.Interactions.Interaction['@_xsi:type'],
173
+ jObj.Envelope.Header.fueloauth,
174
+ fullObj.Envelope.Body.ScheduleRequestMsg.Interactions.Interaction.ObjectID
175
+ );
176
+
177
+ break;
178
+ }
179
+ case 'Perform': {
180
+ responseXML = await this.loadSOAPRecords(
181
+ config.headers.SOAPAction.toLocaleLowerCase(),
182
+ fullObj.Envelope.Body.PerformRequestMsg.Definitions.Definition['@_xsi:type'],
183
+ jObj.Envelope.Header.fueloauth,
184
+ fullObj.Envelope.Body.PerformRequestMsg.Definitions.Definition.ObjectID
185
+ );
186
+
187
+ break;
188
+ }
126
189
  default: {
127
- throw new Error('This SOAP Action is not supported by test handler');
190
+ throw new Error(
191
+ `The SOAP Action ${config.headers.SOAPAction} is not supported by test handler`
192
+ );
128
193
  }
129
194
  }
130
195
 
@@ -190,14 +255,14 @@ exports.handleRESTRequest = async (config) => {
190
255
  } else {
191
256
  /* eslint-disable no-console */
192
257
  console.log(
193
- `${color.bgRed}${color.fgBlack}test-error${color.reset}: Please create file ${testPath}.json/.txt`
258
+ `${color.bgRed}${color.fgBlack}TEST-ERROR${color.reset}: Please create file ${testPath}.json/.txt`
194
259
  );
195
260
  /* eslint-enable no-console */
196
261
  process.exitCode = 404;
197
262
 
198
263
  return [
199
264
  404,
200
- fs.readFile(path.join('test', 'resources', 'rest404-response.json'), {
265
+ await fs.readFile(path.join('test', 'resources', 'rest404-response.json'), {
201
266
  encoding: 'utf8',
202
267
  }),
203
268
  ];
@@ -0,0 +1,27 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
4
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
5
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
6
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8
+ <soap:Header>
9
+ <wsa:Action>RetrieveResponse</wsa:Action>
10
+ <wsa:MessageID>urn:uuid:1babdae0-9282-4bba-b69f-2f1843deaf11</wsa:MessageID>
11
+ <wsa:RelatesTo>urn:uuid:39d1c021-b3df-49f9-a8f7-bb444172d2d3</wsa:RelatesTo>
12
+ <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
13
+ <wsse:Security>
14
+ <wsu:Timestamp wsu:Id="Timestamp-291db2ee-625d-49f7-8f6f-110317b081a5">
15
+ <wsu:Created>2023-03-11T13:53:00Z</wsu:Created>
16
+ <wsu:Expires>2023-03-11T13:58:00Z</wsu:Expires>
17
+ </wsu:Timestamp>
18
+ </wsse:Security>
19
+ </soap:Header>
20
+ <soap:Body>
21
+ <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
22
+ <OverallStatus>OK</OverallStatus>
23
+ <RequestID>5347bf1d-e801-486a-b4a9-c2d46a8909b6</RequestID>
24
+
25
+ </RetrieveResponseMsg>
26
+ </soap:Body>
27
+ </soap:Envelope>
@@ -0,0 +1,156 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
4
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
5
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
6
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8
+ <soap:Header>
9
+ <wsa:Action>RetrieveResponse</wsa:Action>
10
+ <wsa:MessageID>urn:uuid:1babdae0-9282-4bba-b69f-2f1843deaf11</wsa:MessageID>
11
+ <wsa:RelatesTo>urn:uuid:39d1c021-b3df-49f9-a8f7-bb444172d2d3</wsa:RelatesTo>
12
+ <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
13
+ <wsse:Security>
14
+ <wsu:Timestamp wsu:Id="Timestamp-291db2ee-625d-49f7-8f6f-110317b081a5">
15
+ <wsu:Created>2023-03-11T13:53:00Z</wsu:Created>
16
+ <wsu:Expires>2023-03-11T13:58:00Z</wsu:Expires>
17
+ </wsu:Timestamp>
18
+ </wsse:Security>
19
+ </soap:Header>
20
+ <soap:Body>
21
+ <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
22
+ <OverallStatus>OK</OverallStatus>
23
+ <RequestID>5347bf1d-e801-486a-b4a9-c2d46a8909b6</RequestID>
24
+ <Results xsi:type="AccountUser">
25
+ <Client>
26
+ <ID>1111111</ID>
27
+ <ModifiedBy>123456</ModifiedBy>
28
+ </Client>
29
+ <PartnerKey xsi:nil="true" />
30
+ <CreatedDate>2019-09-06T01:59:07.097</CreatedDate>
31
+ <ModifiedDate>2022-06-21T01:43:02.64</ModifiedDate>
32
+ <ID>700301951</ID>
33
+ <ObjectID xsi:nil="true" />
34
+ <CustomerKey>testExisting_user_inactive</CustomerKey>
35
+ <AccountUserID>700301951</AccountUserID>
36
+ <UserID>user_test-inactive@accenture.asgr</UserID>
37
+ <Name>user test-inactive</Name>
38
+ <Email>user_test-inactive@accenture.com</Email>
39
+ <MustChangePassword>false</MustChangePassword>
40
+ <ActiveFlag>false</ActiveFlag>
41
+ <UserPermissions>
42
+ <PartnerKey xsi:nil="true" />
43
+ <ID>2</ID>
44
+ <ObjectID xsi:nil="true" />
45
+ <Name xsi:nil="true" />
46
+ <Value xsi:nil="true" />
47
+ <Description xsi:nil="true" />
48
+ <Delete>0</Delete>
49
+ </UserPermissions>
50
+ <UserPermissions>
51
+ <PartnerKey xsi:nil="true" />
52
+ <ID>3</ID>
53
+ <ObjectID xsi:nil="true" />
54
+ <Name xsi:nil="true" />
55
+ <Value xsi:nil="true" />
56
+ <Description xsi:nil="true" />
57
+ <Delete>0</Delete>
58
+ </UserPermissions>
59
+ <Delete>0</Delete>
60
+ <LastSuccessfulLogin>2023-02-23T10:14:11.443</LastSuccessfulLogin>
61
+ <IsAPIUser>false</IsAPIUser>
62
+ <NotificationEmailAddress>user_test-inactive@accenture.com</NotificationEmailAddress>
63
+ <IsLocked>false</IsLocked>
64
+ <DefaultBusinessUnit>1111111</DefaultBusinessUnit>
65
+ <DefaultBusinessUnitObject>
66
+ <PartnerKey xsi:nil="true" />
67
+ <ID>1111111</ID>
68
+ <ObjectID xsi:nil="true" />
69
+ <AccountType>None</AccountType>
70
+ <Subscription xsi:nil="true" />
71
+ </DefaultBusinessUnitObject>
72
+ <Locale>
73
+ <PartnerKey xsi:nil="true" />
74
+ <ObjectID xsi:nil="true" />
75
+ <LocaleCode>en-GB</LocaleCode>
76
+ </Locale>
77
+ <TimeZone>
78
+ <PartnerKey xsi:nil="true" />
79
+ <ID>5</ID>
80
+ <ObjectID xsi:nil="true" />
81
+ <Name>(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna *</Name>
82
+ </TimeZone>
83
+ <Roles>
84
+ <Role>
85
+ <Client>
86
+ <ID>1111111</ID>
87
+ <CreatedBy>-1000</CreatedBy>
88
+ <ModifiedBy>-1000</ModifiedBy>
89
+ <EnterpriseID>1111111</EnterpriseID>
90
+ </Client>
91
+ <PartnerKey xsi:nil="true" />
92
+ <CreatedDate>2016-07-22T17:52:36.93</CreatedDate>
93
+ <ModifiedDate>2016-07-22T17:52:36.93</ModifiedDate>
94
+ <ObjectID>f1cfb80f-3550-e611-96fe-38eaa7142c61</ObjectID>
95
+ <CustomerKey>SYS_DEF_ADMIN</CustomerKey>
96
+ <Name>Administrator</Name>
97
+ <Description>Administrator</Description>
98
+ <IsPrivate>false</IsPrivate>
99
+ <IsSystemDefined>true</IsSystemDefined>
100
+ </Role>
101
+ <Role>
102
+ <Client>
103
+ <ID>1111111</ID>
104
+ <CreatedBy>-1000</CreatedBy>
105
+ <ModifiedBy>-1000</ModifiedBy>
106
+ <EnterpriseID>1111111</EnterpriseID>
107
+ </Client>
108
+ <PartnerKey xsi:nil="true" />
109
+ <CreatedDate>2016-07-22T17:52:36.93</CreatedDate>
110
+ <ModifiedDate>2016-07-22T17:52:36.93</ModifiedDate>
111
+ <ObjectID>f4cfb80f-3550-e611-96fe-38eaa7142c61</ObjectID>
112
+ <CustomerKey>SYS_DEF_CONTENT</CustomerKey>
113
+ <Name>Content Creator</Name>
114
+ <Description>Content Creator</Description>
115
+ <IsPrivate>false</IsPrivate>
116
+ <IsSystemDefined>true</IsSystemDefined>
117
+ </Role>
118
+ <Role>
119
+ <Client>
120
+ <ID>1111111</ID>
121
+ <CreatedBy>-1000</CreatedBy>
122
+ <ModifiedBy>-1000</ModifiedBy>
123
+ <EnterpriseID>1111111</EnterpriseID>
124
+ </Client>
125
+ <PartnerKey xsi:nil="true" />
126
+ <CreatedDate>2019-09-06T07:59:07.8</CreatedDate>
127
+ <ModifiedDate>2019-09-06T07:59:07.8</ModifiedDate>
128
+ <ObjectID>bd251431-7cd0-e911-a2d3-1402ec936979</ObjectID>
129
+ <CustomerKey>Individual role for 700301951</CustomerKey>
130
+ <Name>Individual role for 700301951</Name>
131
+ <Description>Individual role for 700301951</Description>
132
+ <IsPrivate>true</IsPrivate>
133
+ <IsSystemDefined>false</IsSystemDefined>
134
+ </Role>
135
+ <Role>
136
+ <Client>
137
+ <ID>0</ID>
138
+ <CreatedBy>0</CreatedBy>
139
+ <ModifiedBy>0</ModifiedBy>
140
+ <EnterpriseID>0</EnterpriseID>
141
+ </Client>
142
+ <PartnerKey xsi:nil="true" />
143
+ <CreatedDate>2012-02-21T02:09:19.983</CreatedDate>
144
+ <ModifiedDate>2013-12-23T16:48:50.533</ModifiedDate>
145
+ <ObjectID>63a50610-315c-e111-beee-8e001800001f</ObjectID>
146
+ <CustomerKey>SYS_DEF_IMHADMIN</CustomerKey>
147
+ <Name>Marketing Cloud Administrator</Name>
148
+ <Description>Assign Marketing Cloud roles to users and manage Mobile, Social and Sites Channels, Hub Apps and Marketing Cloud Tools</Description>
149
+ <IsPrivate>false</IsPrivate>
150
+ <IsSystemDefined>true</IsSystemDefined>
151
+ </Role>
152
+ </Roles>
153
+ </Results>
154
+ </RetrieveResponseMsg>
155
+ </soap:Body>
156
+ </soap:Envelope>
@@ -0,0 +1,87 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
4
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
5
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
6
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
7
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8
+ <soap:Header>
9
+ <wsa:Action>RetrieveResponse</wsa:Action>
10
+ <wsa:MessageID>urn:uuid:1babdae0-9282-4bba-b69f-2f1843deaf11</wsa:MessageID>
11
+ <wsa:RelatesTo>urn:uuid:39d1c021-b3df-49f9-a8f7-bb444172d2d3</wsa:RelatesTo>
12
+ <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
13
+ <wsse:Security>
14
+ <wsu:Timestamp wsu:Id="Timestamp-291db2ee-625d-49f7-8f6f-110317b081a5">
15
+ <wsu:Created>2023-03-11T13:53:00Z</wsu:Created>
16
+ <wsu:Expires>2023-03-11T13:58:00Z</wsu:Expires>
17
+ </wsu:Timestamp>
18
+ </wsse:Security>
19
+ </soap:Header>
20
+ <soap:Body>
21
+ <RetrieveResponseMsg xmlns="http://exacttarget.com/wsdl/partnerAPI">
22
+ <OverallStatus>OK</OverallStatus>
23
+ <RequestID>5347bf1d-e801-486a-b4a9-c2d46a8909b6</RequestID>
24
+ <Results xsi:type="AccountUser">
25
+ <Client>
26
+ <ID>1111111</ID>
27
+ <ModifiedBy>0</ModifiedBy>
28
+ </Client>
29
+ <PartnerKey xsi:nil="true" />
30
+ <CreatedDate>2016-07-22T11:52:37.42</CreatedDate>
31
+ <ModifiedDate>2023-05-27T07:05:55.113</ModifiedDate>
32
+ <ID>7471228</ID>
33
+ <ObjectID xsi:nil="true" />
34
+ <CustomerKey>45372cbb-06e0-438e-88d8-008981f7a18b</CustomerKey>
35
+ <AccountUserID>7471228</AccountUserID>
36
+ <UserID>20f2d94a-9a7d-4580-9fb6-c36a1ce32fb9</UserID>
37
+ <Name>igopredictiveemail app user</Name>
38
+ <Email />
39
+ <MustChangePassword>false</MustChangePassword>
40
+ <ActiveFlag>true</ActiveFlag>
41
+ <Delete>0</Delete>
42
+ <LastSuccessfulLogin></LastSuccessfulLogin>
43
+ <IsAPIUser>true</IsAPIUser>
44
+ <NotificationEmailAddress />
45
+ <IsLocked>false</IsLocked>
46
+ <DefaultBusinessUnit>1111111</DefaultBusinessUnit>
47
+ <Locale>
48
+ <PartnerKey xsi:nil="true" />
49
+ <ObjectID xsi:nil="true" />
50
+ <LocaleCode>en-GB</LocaleCode>
51
+ </Locale>
52
+ <TimeZone>
53
+ <PartnerKey xsi:nil="true" />
54
+ <ID>5</ID>
55
+ <ObjectID xsi:nil="true" />
56
+ <Name>(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</Name>
57
+ </TimeZone>
58
+ <DefaultBusinessUnitObject>
59
+ <PartnerKey xsi:nil="true" />
60
+ <ID>1111111</ID>
61
+ <ObjectID xsi:nil="true" />
62
+ <AccountType>None</AccountType>
63
+ <Subscription xsi:nil="true" />
64
+ </DefaultBusinessUnitObject>
65
+ <Roles>
66
+ <Role>
67
+ <Client>
68
+ <ID>1111111</ID>
69
+ <CreatedBy>0</CreatedBy>
70
+ <ModifiedBy>0</ModifiedBy>
71
+ <EnterpriseID>1111111</EnterpriseID>
72
+ </Client>
73
+ <PartnerKey xsi:nil="true" />
74
+ <CreatedDate>2016-07-22T17:52:37.88</CreatedDate>
75
+ <ModifiedDate>2016-07-22T17:52:37.88</ModifiedDate>
76
+ <ObjectID>44d0b80f-3550-e611-96fe-38eaa7142c61</ObjectID>
77
+ <CustomerKey>Individual role for 7471228</CustomerKey>
78
+ <Name>Individual role for 7471228</Name>
79
+ <Description>Individual role for 7471228</Description>
80
+ <IsPrivate>true</IsPrivate>
81
+ <IsSystemDefined>false</IsSystemDefined>
82
+ </Role>
83
+ </Roles>
84
+ </Results>
85
+ </RetrieveResponseMsg>
86
+ </soap:Body>
87
+ </soap:Envelope>