mcdev 7.0.3 → 7.1.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.
- package/.github/ISSUE_TEMPLATE/bug.yml +2 -0
- package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
- package/.github/workflows/code-test.yml +48 -0
- package/.husky/post-checkout +1 -1
- package/.husky/post-merge +7 -1
- package/.husky/pre-commit +3 -1
- package/@types/lib/Builder.d.ts +13 -13
- package/@types/lib/Builder.d.ts.map +1 -1
- package/@types/lib/Deployer.d.ts +19 -16
- package/@types/lib/Deployer.d.ts.map +1 -1
- package/@types/lib/Retriever.d.ts +15 -15
- package/@types/lib/Retriever.d.ts.map +1 -1
- package/@types/lib/cli.d.ts +1 -1
- package/@types/lib/cli.d.ts.map +1 -1
- package/@types/lib/index.d.ts +102 -51
- package/@types/lib/index.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Asset.d.ts +71 -59
- package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeGroup.d.ts +6 -8
- package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
- package/@types/lib/metadataTypes/AttributeSet.d.ts +10 -21
- package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Automation.d.ts +47 -49
- package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Campaign.d.ts +12 -18
- package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ContentArea.d.ts +13 -31
- package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtension.d.ts +28 -33
- package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionField.d.ts +15 -22
- package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +12 -11
- package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtract.d.ts +13 -28
- package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DataExtractType.d.ts +11 -10
- package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts +11 -10
- package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Discovery.d.ts +11 -10
- package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Email.d.ts +14 -34
- package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
- package/@types/lib/metadataTypes/EmailSend.d.ts +18 -10
- package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Event.d.ts +22 -16
- package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileLocation.d.ts +11 -10
- package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
- package/@types/lib/metadataTypes/FileTransfer.d.ts +12 -18
- package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Filter.d.ts +11 -10
- package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Folder.d.ts +49 -35
- package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
- package/@types/lib/metadataTypes/ImportFile.d.ts +16 -15
- package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Journey.d.ts +55 -35
- package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
- package/@types/lib/metadataTypes/List.d.ts +13 -12
- package/@types/lib/metadataTypes/List.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MetadataType.d.ts +73 -26
- package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileCode.d.ts +12 -20
- package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileKeyword.d.ts +23 -14
- package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
- package/@types/lib/metadataTypes/MobileMessage.d.ts +18 -42
- package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Query.d.ts +15 -12
- package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Role.d.ts +12 -11
- package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Script.d.ts +18 -25
- package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SendClassification.d.ts +13 -10
- package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/SenderProfile.d.ts +12 -25
- package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts +18 -12
- package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts +12 -32
- package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalPush.d.ts +15 -21
- package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts +16 -18
- package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
- package/@types/lib/metadataTypes/TriggeredSend.d.ts +19 -24
- package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
- package/@types/lib/metadataTypes/User.d.ts +23 -40
- package/@types/lib/metadataTypes/User.d.ts.map +1 -1
- package/@types/lib/metadataTypes/Verification.d.ts +16 -13
- package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
- package/@types/lib/metadataTypes/definitions/Asset.definition.d.ts +24 -14
- package/@types/lib/metadataTypes/definitions/AttributeGroup.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/AttributeSet.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Automation.definition.d.ts +16 -0
- package/@types/lib/metadataTypes/definitions/Campaign.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ContentArea.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtension.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionField.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtensionTemplate.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtract.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DataExtractType.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/DeliveryProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Discovery.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Email.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/EmailSend.definition.d.ts +8 -0
- package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +10 -1
- package/@types/lib/metadataTypes/definitions/FileLocation.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/FileTransfer.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Filter.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Folder.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/ImportFile.definition.d.ts +5 -0
- package/@types/lib/metadataTypes/definitions/Journey.definition.d.ts +13 -0
- package/@types/lib/metadataTypes/definitions/List.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileCode.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/MobileKeyword.definition.d.ts +9 -0
- package/@types/lib/metadataTypes/definitions/MobileMessage.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/Query.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/Role.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Script.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/SendClassification.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/SenderProfile.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalEmail.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/TransactionalMessage.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/TransactionalPush.definition.d.ts +3 -0
- package/@types/lib/metadataTypes/definitions/TransactionalSMS.definition.d.ts +4 -0
- package/@types/lib/metadataTypes/definitions/TriggeredSend.definition.d.ts +6 -0
- package/@types/lib/metadataTypes/definitions/User.definition.d.ts +1 -0
- package/@types/lib/metadataTypes/definitions/Verification.definition.d.ts +3 -0
- package/@types/lib/util/auth.d.ts +19 -18
- package/@types/lib/util/auth.d.ts.map +1 -1
- package/@types/lib/util/businessUnit.d.ts +17 -17
- package/@types/lib/util/businessUnit.d.ts.map +1 -1
- package/@types/lib/util/cache.d.ts +34 -32
- package/@types/lib/util/cache.d.ts.map +1 -1
- package/@types/lib/util/cli.d.ts +30 -33
- package/@types/lib/util/cli.d.ts.map +1 -1
- package/@types/lib/util/config.d.ts +20 -20
- package/@types/lib/util/config.d.ts.map +1 -1
- package/@types/lib/util/devops.d.ts +21 -21
- package/@types/lib/util/devops.d.ts.map +1 -1
- package/@types/lib/util/file.d.ts +179 -18
- package/@types/lib/util/file.d.ts.map +1 -1
- package/@types/lib/util/init.config.d.ts +19 -19
- package/@types/lib/util/init.config.d.ts.map +1 -1
- package/@types/lib/util/init.d.ts +20 -20
- package/@types/lib/util/init.d.ts.map +1 -1
- package/@types/lib/util/init.git.d.ts +2 -2
- package/@types/lib/util/init.git.d.ts.map +1 -1
- package/@types/lib/util/init.npm.d.ts +2 -2
- package/@types/lib/util/init.npm.d.ts.map +1 -1
- package/@types/lib/util/replaceContentBlockReference.d.ts +55 -32
- package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
- package/@types/lib/util/util.d.ts +64 -39
- package/@types/lib/util/util.d.ts.map +1 -1
- package/@types/types/mcdev.d.d.ts +160 -52
- package/@types/types/mcdev.d.d.ts.map +1 -1
- package/boilerplate/files/.vscode/settings.json +1 -0
- package/boilerplate/forcedUpdates.json +4 -0
- package/boilerplate/gitignore-template +0 -1
- package/eslint.config.js +0 -1
- package/lib/Builder.js +13 -8
- package/lib/Deployer.js +13 -8
- package/lib/Retriever.js +4 -1
- package/lib/cli.js +384 -288
- package/lib/index.js +620 -241
- package/lib/metadataTypes/Asset.js +455 -209
- package/lib/metadataTypes/Automation.js +34 -0
- package/lib/metadataTypes/DataExtension.js +36 -31
- package/lib/metadataTypes/DataExtensionField.js +2 -3
- package/lib/metadataTypes/Event.js +227 -37
- package/lib/metadataTypes/Folder.js +64 -49
- package/lib/metadataTypes/Journey.js +340 -58
- package/lib/metadataTypes/MetadataType.js +272 -61
- package/lib/metadataTypes/MobileKeyword.js +12 -1
- package/lib/metadataTypes/Role.js +9 -7
- package/lib/metadataTypes/Script.js +4 -3
- package/lib/metadataTypes/SenderProfile.js +18 -5
- package/lib/metadataTypes/TransactionalEmail.js +2 -2
- package/lib/metadataTypes/TriggeredSend.js +21 -5
- package/lib/metadataTypes/User.js +31 -27
- package/lib/metadataTypes/definitions/Asset.definition.js +10 -2
- package/lib/metadataTypes/definitions/AttributeGroup.definition.js +1 -0
- package/lib/metadataTypes/definitions/AttributeSet.definition.js +11 -0
- package/lib/metadataTypes/definitions/Automation.definition.js +9 -0
- package/lib/metadataTypes/definitions/Campaign.definition.js +1 -0
- package/lib/metadataTypes/definitions/ContentArea.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtension.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionField.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +1 -0
- package/lib/metadataTypes/definitions/DataExtract.definition.js +2 -1
- package/lib/metadataTypes/definitions/DataExtractType.definition.js +1 -0
- package/lib/metadataTypes/definitions/DeliveryProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/Discovery.definition.js +1 -0
- package/lib/metadataTypes/definitions/Email.definition.js +1 -0
- package/lib/metadataTypes/definitions/EmailSend.definition.js +8 -0
- package/lib/metadataTypes/definitions/Event.definition.js +9 -8
- package/lib/metadataTypes/definitions/FileLocation.definition.js +1 -0
- package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
- package/lib/metadataTypes/definitions/Filter.definition.js +1 -0
- package/lib/metadataTypes/definitions/Folder.definition.js +10 -8
- package/lib/metadataTypes/definitions/ImportFile.definition.js +8 -1
- package/lib/metadataTypes/definitions/Journey.definition.js +28 -0
- package/lib/metadataTypes/definitions/List.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileCode.definition.js +1 -0
- package/lib/metadataTypes/definitions/MobileKeyword.definition.js +7 -0
- package/lib/metadataTypes/definitions/MobileMessage.definition.js +9 -0
- package/lib/metadataTypes/definitions/Query.definition.js +3 -0
- package/lib/metadataTypes/definitions/Role.definition.js +1 -0
- package/lib/metadataTypes/definitions/Script.definition.js +1 -0
- package/lib/metadataTypes/definitions/SendClassification.definition.js +4 -0
- package/lib/metadataTypes/definitions/SenderProfile.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalEmail.definition.js +7 -0
- package/lib/metadataTypes/definitions/TransactionalMessage.definition.js +1 -0
- package/lib/metadataTypes/definitions/TransactionalPush.definition.js +3 -0
- package/lib/metadataTypes/definitions/TransactionalSMS.definition.js +4 -0
- package/lib/metadataTypes/definitions/TriggeredSend.definition.js +10 -3
- package/lib/metadataTypes/definitions/User.definition.js +3 -0
- package/lib/metadataTypes/definitions/Verification.definition.js +1 -0
- package/lib/util/auth.js +0 -1
- package/lib/util/cache.js +35 -0
- package/lib/util/cli.js +96 -140
- package/lib/util/config.js +11 -19
- package/lib/util/devops.js +42 -43
- package/lib/util/file.js +7 -10
- package/lib/util/init.config.js +6 -10
- package/lib/util/init.git.js +43 -57
- package/lib/util/init.js +35 -59
- package/lib/util/replaceContentBlockReference.js +110 -61
- package/lib/util/util.js +90 -4
- package/package.json +22 -19
- package/test/general.test.js +1144 -172
- package/test/mockRoot/.mcdevrc.json +1 -1
- package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +233 -0
- package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +194 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD.mobileKeyword-meta.json +1 -0
- package/test/mockRoot/deploy/testInstance/testBU/mobileKeyword/4912312345678.TESTNEW_KEYWORD_BLOCKED.mobileKeyword-meta.json +1 -0
- package/test/resourceFactory.js +43 -11
- package/test/resources/1111111/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +364 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.html → build-asset_htmlblock-expected.html} +1 -1
- package/test/resources/9999999/asset/build-asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/build-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/resolveId-1295064-noPath-expected.json +3 -3
- package/test/resources/9999999/asset/resolveId-1295064-withPath-expected.json +3 -3
- package/test/resources/9999999/asset/retrieve-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-emailTemplate-expected.json +20 -0
- package/test/resources/9999999/asset/template-templatebasedemail-expected.json +65 -0
- package/test/resources/9999999/asset/template-testExisting_asset_htmlblock-expected.json +29 -0
- package/test/resources/9999999/asset/testExisting_asset_htmlblock-retrieve-expected.html +23 -0
- package/test/resources/9999999/asset/{block-1157-retrieve-expected.json → testExisting_asset_htmlblock-retrieve-expected.json} +3 -3
- package/test/resources/9999999/asset/testExisting_asset_message-html-rcb-key-expected.html +6 -6
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-id-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/testExisting_asset_message-preheader-rcb-name-expected.amp +1 -1
- package/test/resources/9999999/asset/testExisting_asset_message-text-rcb-key-expected.amp +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295064/get-response.json +4 -4
- package/test/resources/9999999/asset/v1/content/assets/1295065/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/1295066/get-response.json +60 -0
- package/test/resources/9999999/asset/v1/content/assets/5289/get-response.json +75 -0
- package/test/resources/9999999/asset/v1/content/assets/808714/get-response.json +3 -3
- package/test/resources/9999999/asset/v1/content/assets/950143/get-response.json +97 -0
- package/test/resources/9999999/asset/v1/content/assets/get-response-customerKey=testExisting_asset.json +1 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN195,196,197,198,199,200,201,202,203,210,211,212,213,3.json +78 -2
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,207,208,209,5,214,4,215,216.json +370 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,14,193,194,15,195,196,197,198,199,200,201,202,203,210,211,212,213,3,215,216,217,218,219,220,221,222.json +243 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1,207,208,209,5.json +229 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN205,206,230,232,1.json +98 -1
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN217,218,219,220,221,222,223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228,214,4.json +35 -0
- package/test/resources/9999999/asset/v1/content/assets/query/post-response-assetType.idIN223,224,225,226,227,228.json +7 -0
- package/test/resources/9999999/asset/v1/content/assets/query/{post-response-customerKey=mcdev-issue-1157.json → post-response-customerKey=testExisting_asset_htmlblock.json} +2 -2
- package/test/resources/9999999/automation/v1/queries/get-response-Name=testExisting_query.json +24 -0
- package/test/resources/9999999/automation/v1/scripts/get-response-name=testExisting_script.json +17 -0
- package/test/resources/9999999/automation/v1/scripts/get-response.json +2 -2
- package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
- package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
- package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
- package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
- package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
- package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
- package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=asset-shared-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentType=journey-response.xml +48 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,automatio,dataexten,hidden,journey,list,mysubs,publicati,queryacti,salesforc,shared_da,shared_da,shared_sa,ssjsactiv,synchroni,triggered,triggered,useriniti-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-sha,dataexten,salesforc,shared_da,shared_da,shared_sa,synchroni,automatio,useriniti,journey,mysubs,list,publicati,queryacti,ssjsactiv,triggered,triggered-response.xml +519 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,journey-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +115 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared,ssjsactivity-response.xml +92 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset,asset-shared-QAA-response.xml +70 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINasset-shared,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +431 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINautomations,queryactivity-response.xml +70 -0
- package/test/resources/9999999/dataFolder/{retrieve-response.xml → retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +32 -119
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINdataextension,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +117 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINhidden,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml +46 -0
- package/test/resources/9999999/dataFolder/retrieve-ContentTypeINshared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-QAA-response.xml +251 -0
- package/test/resources/9999999/dataFolder/retrieve-response-.xml +519 -0
- package/test/resources/9999999/event/build-expected.json +227 -0
- package/test/resources/9999999/event/get-expected.json +234 -0
- package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +20 -0
- package/test/resources/9999999/event/post_withExistingDE-expected.json +23 -0
- package/test/resources/9999999/event/post_withSchema-callout-expected.json +199 -0
- package/test/resources/9999999/event/post_withSchema-expected.json +234 -0
- package/test/resources/9999999/event/put-callout-expected.json +204 -0
- package/test/resources/9999999/event/put-expected.json +233 -0
- package/test/resources/9999999/event/template-expected.json +227 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +242 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +28 -0
- package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +243 -0
- package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
- package/test/resources/9999999/interaction/v1/interactions/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/key_testExisting_journey_Quicksend/get-response.json +4 -4
- package/test/resources/9999999/interaction/v1/interactions/publishAsync/3c3f4112-9b43-43ca-8a89-aa0375b2c1a2/post-response.json +4 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-failed.json +34 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-success.json +5 -0
- package/test/resources/9999999/interaction/v1/interactions/publishStatus/45f06c0a-3ed2-48b2-a6a8-b5119253f01c/get-response-successWarnings.json +36 -0
- package/test/resources/9999999/journey/build-expected.json +5 -5
- package/test/resources/9999999/journey/get-multistep-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-expected.json +5 -5
- package/test/resources/9999999/journey/get-quicksend-rcb-id-expected.json +1 -1
- package/test/resources/9999999/journey/get-quicksend-rcb-key-expected.json +7 -7
- package/test/resources/9999999/journey/get-quicksend-rcb-name-expected.json +1 -1
- package/test/resources/9999999/journey/post-expected.json +1 -1
- package/test/resources/9999999/journey/publish-callout-expected.json +1 -0
- package/test/resources/9999999/journey/put-expected.json +1 -1
- package/test/resources/9999999/journey/template-expected.json +5 -5
- package/test/resources/9999999/mobileKeyword/build-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/get-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/post-create-expected.json +1 -0
- package/test/resources/9999999/mobileKeyword/template-expected.json +1 -0
- package/test/resources/{1111111/accountUser/retrieve-CustomerKey=testExisting_userANDActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → 9999999/queryDefinition/retrieve-CustomerKey=badANDStatus=Active-response.xml} +10 -11
- package/test/resources/9999999/script/get_ampincluded-rcb-key-expected.html +2 -2
- package/test/resources/9999999/script/get_ampscript-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-id-expected.html +1 -0
- package/test/resources/9999999/script/get_ampscript-rcb-key-expected.html +3 -2
- package/test/resources/9999999/script/get_ampscript-rcb-name-expected.html +3 -0
- package/test/resources/9999999/script/get_mixed-expected.html +2 -2
- package/test/resources/9999999/script/get_mixed-rcb-key-expected.html +2 -2
- package/test/resources/9999999/senderProfile/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/senderProfile/retrieve-response.xml +1 -1
- package/test/resources/9999999/triggeredSend/get-rcb-key-expected.json +4 -4
- package/test/resources/9999999/triggeredSendDefinition/retrieve-TriggeredSendStatusINNew,Active,Inactive,Moved,Canceled-response.xml +1 -1
- package/test/type.asset.test.js +189 -42
- package/test/type.automation.test.js +135 -59
- package/test/type.dataExtension.test.js +4 -4
- package/test/type.dataExtract.test.js +4 -4
- package/test/type.emailSend.test.js +3 -3
- package/test/type.event.test.js +286 -7
- package/test/type.journey.test.js +335 -9
- package/test/type.query.test.js +33 -29
- package/test/type.script.test.js +61 -11
- package/test/type.senderProfile.test.js +36 -3
- package/test/type.transactionalEmail.test.js +3 -3
- package/test/type.triggeredSend.test.js +75 -6
- package/test/type.user.test.js +1 -1
- package/test/utils.js +31 -9
- package/tsconfig.json +6 -1
- package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
- package/tsconfig.precommit.json +26 -0
- package/types/mcdev.d.js +39 -14
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=falseANDEmaillike@-response.xml → retrieve-ActiveFlag=falseANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDCustomerKey=testExisting_userANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-response.xml → retrieve-ActiveFlag=trueANDEmailisNullORNamelikeapp userANDMustChangePassword=false-QAA-response.xml} +0 -0
- /package/test/resources/1111111/accountUser/{retrieve-ActiveFlag=trueANDEmaillike@-response.xml → retrieve-ActiveFlag=trueANDEmaillike@-QAA-response.xml} +0 -0
- /package/test/resources/1111111/businessUnit/{retrieve-ID=1111111-response.xml → retrieve-ID=1111111-QAA-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/1111111/dataFolder/{retrieve-response.xml → retrieve-response-.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=asset-sharedORContentType=asset-response.xml → retrieve-ContentTypeINasset,asset-shared-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=contextual_suppression_listORContentType=publicationORContentType=suppression_listORContentType=mysubsORContentType=list-response.xml → retrieve-ContentTypeINcontextual_suppression_list,list,mysubs,publication,suppression_list-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=synchronizeddataextensionORContentType=shared_salesforcedataextensionORContentType=shared_dataextensionORContentType=shared_dataORContentType=salesforcedataextensionORContentType=dataextensionORContentType=hidden-response.xml → retrieve-ContentTypeINdataextension,hidden,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml} +0 -0
- /package/test/resources/9999999/dataFolder/{retrieve-ContentType=triggered_send_journeybuilderORContentType=triggered_sendORContentType=hidden-response.xml → retrieve-ContentTypeINhidden,triggered_send,triggered_send_journeybuilder-response.xml} +0 -0
package/test/type.script.test.js
CHANGED
|
@@ -109,7 +109,7 @@ describe('type: script', () => {
|
|
|
109
109
|
|
|
110
110
|
assert.equal(
|
|
111
111
|
testUtils.getAPIHistoryLength(),
|
|
112
|
-
|
|
112
|
+
2,
|
|
113
113
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
114
114
|
);
|
|
115
115
|
return;
|
|
@@ -150,7 +150,7 @@ describe('type: script', () => {
|
|
|
150
150
|
|
|
151
151
|
assert.equal(
|
|
152
152
|
testUtils.getAPIHistoryLength(),
|
|
153
|
-
|
|
153
|
+
2,
|
|
154
154
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
155
155
|
);
|
|
156
156
|
return;
|
|
@@ -192,7 +192,7 @@ describe('type: script', () => {
|
|
|
192
192
|
|
|
193
193
|
assert.equal(
|
|
194
194
|
testUtils.getAPIHistoryLength(),
|
|
195
|
-
|
|
195
|
+
2,
|
|
196
196
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
197
197
|
);
|
|
198
198
|
return;
|
|
@@ -217,7 +217,7 @@ describe('type: script', () => {
|
|
|
217
217
|
.exist;
|
|
218
218
|
assert.equal(
|
|
219
219
|
testUtils.getAPIHistoryLength(),
|
|
220
|
-
|
|
220
|
+
2,
|
|
221
221
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
222
222
|
);
|
|
223
223
|
return;
|
|
@@ -261,7 +261,7 @@ describe('type: script', () => {
|
|
|
261
261
|
// check number of API calls
|
|
262
262
|
assert.equal(
|
|
263
263
|
testUtils.getAPIHistoryLength(),
|
|
264
|
-
|
|
264
|
+
4,
|
|
265
265
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
266
266
|
);
|
|
267
267
|
return;
|
|
@@ -312,7 +312,7 @@ describe('type: script', () => {
|
|
|
312
312
|
|
|
313
313
|
assert.equal(
|
|
314
314
|
testUtils.getAPIHistoryLength(),
|
|
315
|
-
|
|
315
|
+
2,
|
|
316
316
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
317
317
|
);
|
|
318
318
|
return;
|
|
@@ -364,11 +364,57 @@ describe('type: script', () => {
|
|
|
364
364
|
|
|
365
365
|
assert.equal(
|
|
366
366
|
testUtils.getAPIHistoryLength(),
|
|
367
|
-
|
|
367
|
+
2,
|
|
368
368
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
369
369
|
);
|
|
370
370
|
return;
|
|
371
371
|
});
|
|
372
|
+
|
|
373
|
+
it('Should create a script template via buildTemplate with --dependencies', async () => {
|
|
374
|
+
// download first before we test buildTemplate
|
|
375
|
+
await handler.retrieve('testInstance/testBU', ['script', 'asset']);
|
|
376
|
+
|
|
377
|
+
handler.setOptions({ dependencies: true, skipInteraction: true });
|
|
378
|
+
|
|
379
|
+
// GIVEN there is a template
|
|
380
|
+
const templatedItems = await handler.buildTemplate(
|
|
381
|
+
'testInstance/testBU',
|
|
382
|
+
'script',
|
|
383
|
+
['testExisting_script_ampscript'],
|
|
384
|
+
'testSourceMarket'
|
|
385
|
+
);
|
|
386
|
+
// WHEN
|
|
387
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
388
|
+
|
|
389
|
+
assert.deepEqual(
|
|
390
|
+
Object.keys(templatedItems),
|
|
391
|
+
['script', 'asset'],
|
|
392
|
+
'expected specific types to be templated'
|
|
393
|
+
);
|
|
394
|
+
|
|
395
|
+
// script
|
|
396
|
+
assert.equal(
|
|
397
|
+
templatedItems.script ? Object.keys(templatedItems.script).length : 0,
|
|
398
|
+
1,
|
|
399
|
+
'unexpected number of scripts templated'
|
|
400
|
+
);
|
|
401
|
+
assert.deepEqual(
|
|
402
|
+
templatedItems.script.map((item) => item.key),
|
|
403
|
+
['{{{prefix}}}script_ampscript'],
|
|
404
|
+
'expected specific scripts to be templated'
|
|
405
|
+
);
|
|
406
|
+
// asset
|
|
407
|
+
assert.equal(
|
|
408
|
+
templatedItems.asset ? Object.keys(templatedItems.asset).length : 0,
|
|
409
|
+
3,
|
|
410
|
+
'unexpected number of assets templated'
|
|
411
|
+
);
|
|
412
|
+
assert.deepEqual(
|
|
413
|
+
templatedItems.asset.map((item) => item.customerKey),
|
|
414
|
+
['{{{prefix}}}htmlblock1', '{{{prefix}}}asset_htmlblock', '{{{prefix}}}htmlblock2'],
|
|
415
|
+
'expected specific assets to be templated'
|
|
416
|
+
);
|
|
417
|
+
});
|
|
372
418
|
});
|
|
373
419
|
|
|
374
420
|
describe('Delete ================', () => {
|
|
@@ -434,7 +480,11 @@ describe('type: script', () => {
|
|
|
434
480
|
// retrieve result
|
|
435
481
|
assert.deepEqual(
|
|
436
482
|
replace['testInstance/testBU'].script,
|
|
437
|
-
[
|
|
483
|
+
[
|
|
484
|
+
'testExisting_script_ampscript',
|
|
485
|
+
'testExisting_script_ampincluded',
|
|
486
|
+
'testExisting_script_mixed',
|
|
487
|
+
],
|
|
438
488
|
'should have found the right scripts that need updating'
|
|
439
489
|
);
|
|
440
490
|
// get results from cache
|
|
@@ -482,7 +532,7 @@ describe('type: script', () => {
|
|
|
482
532
|
|
|
483
533
|
assert.equal(
|
|
484
534
|
testUtils.getAPIHistoryLength(),
|
|
485
|
-
|
|
535
|
+
8,
|
|
486
536
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
487
537
|
);
|
|
488
538
|
return;
|
|
@@ -548,7 +598,7 @@ describe('type: script', () => {
|
|
|
548
598
|
|
|
549
599
|
assert.equal(
|
|
550
600
|
testUtils.getAPIHistoryLength(),
|
|
551
|
-
|
|
601
|
+
8,
|
|
552
602
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
553
603
|
);
|
|
554
604
|
return;
|
|
@@ -619,7 +669,7 @@ describe('type: script', () => {
|
|
|
619
669
|
|
|
620
670
|
assert.equal(
|
|
621
671
|
testUtils.getAPIHistoryLength(),
|
|
622
|
-
|
|
672
|
+
8,
|
|
623
673
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
624
674
|
);
|
|
625
675
|
return;
|
|
@@ -128,6 +128,39 @@ describe('type: senderProfile', () => {
|
|
|
128
128
|
);
|
|
129
129
|
return;
|
|
130
130
|
});
|
|
131
|
+
|
|
132
|
+
it('Should create a senderProfile template via buildTemplate with --dependencies', async () => {
|
|
133
|
+
// download first before we test buildTemplate
|
|
134
|
+
handler.setOptions({ dependencies: true, retrieve: true });
|
|
135
|
+
|
|
136
|
+
// GIVEN there is a template
|
|
137
|
+
const templatedItems = await handler.buildTemplate(
|
|
138
|
+
'testInstance/testBU',
|
|
139
|
+
'senderProfile',
|
|
140
|
+
['testExisting_senderProfile'],
|
|
141
|
+
'testSourceMarket'
|
|
142
|
+
);
|
|
143
|
+
// WHEN
|
|
144
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
145
|
+
|
|
146
|
+
assert.deepEqual(
|
|
147
|
+
Object.keys(templatedItems),
|
|
148
|
+
['senderProfile'],
|
|
149
|
+
'expected specific types to be templated'
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
// senderProfile
|
|
153
|
+
assert.equal(
|
|
154
|
+
templatedItems.senderProfile ? Object.keys(templatedItems.senderProfile).length : 0,
|
|
155
|
+
1,
|
|
156
|
+
'unexpected number of senderProfiles templated'
|
|
157
|
+
);
|
|
158
|
+
assert.deepEqual(
|
|
159
|
+
templatedItems.senderProfile.map((item) => item.CustomerKey),
|
|
160
|
+
['{{{prefix}}}senderProfile'],
|
|
161
|
+
'expected specific senderProfiles to be templated'
|
|
162
|
+
);
|
|
163
|
+
});
|
|
131
164
|
});
|
|
132
165
|
|
|
133
166
|
describe('Delete ================', () => {
|
|
@@ -175,7 +208,7 @@ describe('type: senderProfile', () => {
|
|
|
175
208
|
|
|
176
209
|
assert.equal(
|
|
177
210
|
testUtils.getAPIHistoryLength(),
|
|
178
|
-
|
|
211
|
+
7,
|
|
179
212
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
180
213
|
);
|
|
181
214
|
return;
|
|
@@ -210,7 +243,7 @@ describe('type: senderProfile', () => {
|
|
|
210
243
|
|
|
211
244
|
assert.equal(
|
|
212
245
|
testUtils.getAPIHistoryLength(),
|
|
213
|
-
|
|
246
|
+
7,
|
|
214
247
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
215
248
|
);
|
|
216
249
|
return;
|
|
@@ -245,7 +278,7 @@ describe('type: senderProfile', () => {
|
|
|
245
278
|
|
|
246
279
|
assert.equal(
|
|
247
280
|
testUtils.getAPIHistoryLength(),
|
|
248
|
-
|
|
281
|
+
7,
|
|
249
282
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
250
283
|
);
|
|
251
284
|
return;
|
|
@@ -36,7 +36,7 @@ describe('type: transactionalEmail', () => {
|
|
|
36
36
|
);
|
|
37
37
|
assert.equal(
|
|
38
38
|
testUtils.getAPIHistoryLength(),
|
|
39
|
-
|
|
39
|
+
11,
|
|
40
40
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
41
41
|
);
|
|
42
42
|
return;
|
|
@@ -75,7 +75,7 @@ describe('type: transactionalEmail', () => {
|
|
|
75
75
|
// check number of API calls
|
|
76
76
|
assert.equal(
|
|
77
77
|
testUtils.getAPIHistoryLength(),
|
|
78
|
-
|
|
78
|
+
13,
|
|
79
79
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
80
80
|
);
|
|
81
81
|
return;
|
|
@@ -137,7 +137,7 @@ describe('type: transactionalEmail', () => {
|
|
|
137
137
|
);
|
|
138
138
|
assert.equal(
|
|
139
139
|
testUtils.getAPIHistoryLength(),
|
|
140
|
-
|
|
140
|
+
11,
|
|
141
141
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
142
142
|
);
|
|
143
143
|
return;
|
|
@@ -36,7 +36,7 @@ describe('type: triggeredSend', () => {
|
|
|
36
36
|
);
|
|
37
37
|
assert.equal(
|
|
38
38
|
testUtils.getAPIHistoryLength(),
|
|
39
|
-
|
|
39
|
+
10,
|
|
40
40
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
41
41
|
);
|
|
42
42
|
return;
|
|
@@ -75,7 +75,7 @@ describe('type: triggeredSend', () => {
|
|
|
75
75
|
// check number of API calls
|
|
76
76
|
assert.equal(
|
|
77
77
|
testUtils.getAPIHistoryLength(),
|
|
78
|
-
|
|
78
|
+
12,
|
|
79
79
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
80
80
|
);
|
|
81
81
|
return;
|
|
@@ -122,11 +122,80 @@ describe('type: triggeredSend', () => {
|
|
|
122
122
|
);
|
|
123
123
|
assert.equal(
|
|
124
124
|
testUtils.getAPIHistoryLength(),
|
|
125
|
-
|
|
125
|
+
10,
|
|
126
126
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
127
127
|
);
|
|
128
128
|
return;
|
|
129
129
|
});
|
|
130
|
+
|
|
131
|
+
it('Should create a script template via buildTemplate with --dependencies', async () => {
|
|
132
|
+
// download first before we test buildTemplate
|
|
133
|
+
|
|
134
|
+
handler.setOptions({ dependencies: true, retrieve: true });
|
|
135
|
+
|
|
136
|
+
// GIVEN there is a template
|
|
137
|
+
const templatedItems = await handler.buildTemplate(
|
|
138
|
+
'testInstance/testBU',
|
|
139
|
+
'triggeredSend',
|
|
140
|
+
['testExisting_triggeredSend', 'testExisting_triggeredSend_rcb'],
|
|
141
|
+
'testSourceMarket'
|
|
142
|
+
);
|
|
143
|
+
// WHEN
|
|
144
|
+
assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
|
|
145
|
+
|
|
146
|
+
assert.deepEqual(
|
|
147
|
+
Object.keys(templatedItems),
|
|
148
|
+
['triggeredSend', 'sendClassification', 'senderProfile', 'asset'],
|
|
149
|
+
'expected specific types to be templated'
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
// triggeredSend
|
|
153
|
+
assert.equal(
|
|
154
|
+
templatedItems.triggeredSend ? Object.keys(templatedItems.triggeredSend).length : 0,
|
|
155
|
+
2,
|
|
156
|
+
'unexpected number of triggeredSends templated'
|
|
157
|
+
);
|
|
158
|
+
assert.deepEqual(
|
|
159
|
+
templatedItems.triggeredSend.map((item) => item.CustomerKey),
|
|
160
|
+
['{{{prefix}}}triggeredSend', '{{{prefix}}}triggeredSend_rcb'],
|
|
161
|
+
'expected specific triggeredSends to be templated'
|
|
162
|
+
);
|
|
163
|
+
// sendClassification
|
|
164
|
+
assert.equal(
|
|
165
|
+
templatedItems.sendClassification
|
|
166
|
+
? Object.keys(templatedItems.sendClassification).length
|
|
167
|
+
: 0,
|
|
168
|
+
1,
|
|
169
|
+
'unexpected number of sendClassifications templated'
|
|
170
|
+
);
|
|
171
|
+
assert.deepEqual(
|
|
172
|
+
templatedItems.sendClassification.map((item) => item.CustomerKey),
|
|
173
|
+
['{{{prefix}}}sendClassification'],
|
|
174
|
+
'expected specific sendClassifications to be templated'
|
|
175
|
+
);
|
|
176
|
+
// senderProfile
|
|
177
|
+
assert.equal(
|
|
178
|
+
templatedItems.senderProfile ? Object.keys(templatedItems.senderProfile).length : 0,
|
|
179
|
+
2,
|
|
180
|
+
'unexpected number of senderProfiles templated'
|
|
181
|
+
);
|
|
182
|
+
assert.deepEqual(
|
|
183
|
+
templatedItems.senderProfile.map((item) => item.CustomerKey),
|
|
184
|
+
['{{{prefix}}}senderProfile', '{{{prefix}}}senderProfile_rcb'],
|
|
185
|
+
'expected specific senderProfiles to be templated'
|
|
186
|
+
);
|
|
187
|
+
// asset
|
|
188
|
+
assert.equal(
|
|
189
|
+
templatedItems.asset ? Object.keys(templatedItems.asset).length : 0,
|
|
190
|
+
3,
|
|
191
|
+
'unexpected number of assets templated'
|
|
192
|
+
);
|
|
193
|
+
assert.deepEqual(
|
|
194
|
+
templatedItems.asset.map((item) => item.customerKey),
|
|
195
|
+
['{{{prefix}}}asset_htmlblock', '{{{prefix}}}htmlblock1', '{{{prefix}}}htmlblock2'],
|
|
196
|
+
'expected specific assets to be templated'
|
|
197
|
+
);
|
|
198
|
+
});
|
|
130
199
|
});
|
|
131
200
|
|
|
132
201
|
describe('Delete ================', () => {
|
|
@@ -187,7 +256,7 @@ describe('type: triggeredSend', () => {
|
|
|
187
256
|
|
|
188
257
|
assert.equal(
|
|
189
258
|
testUtils.getAPIHistoryLength(),
|
|
190
|
-
|
|
259
|
+
16,
|
|
191
260
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
192
261
|
);
|
|
193
262
|
return;
|
|
@@ -222,7 +291,7 @@ describe('type: triggeredSend', () => {
|
|
|
222
291
|
|
|
223
292
|
assert.equal(
|
|
224
293
|
testUtils.getAPIHistoryLength(),
|
|
225
|
-
|
|
294
|
+
16,
|
|
226
295
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
227
296
|
);
|
|
228
297
|
return;
|
|
@@ -257,7 +326,7 @@ describe('type: triggeredSend', () => {
|
|
|
257
326
|
|
|
258
327
|
assert.equal(
|
|
259
328
|
testUtils.getAPIHistoryLength(),
|
|
260
|
-
|
|
329
|
+
16,
|
|
261
330
|
'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
|
|
262
331
|
);
|
|
263
332
|
return;
|
package/test/type.user.test.js
CHANGED
|
@@ -55,7 +55,7 @@ describe('type: user', () => {
|
|
|
55
55
|
await File.readFile(`./docs/user/testInstance.users.md`, {
|
|
56
56
|
encoding: 'utf8',
|
|
57
57
|
})
|
|
58
|
-
).replaceAll(regexFindDaysSinceLogin,
|
|
58
|
+
).replaceAll(regexFindDaysSinceLogin, expectedDaysSinceLogin[0]);
|
|
59
59
|
expect(actualFile).to.equal(expectedFile);
|
|
60
60
|
|
|
61
61
|
assert.equal(
|
package/test/utils.js
CHANGED
|
@@ -16,6 +16,17 @@ let apimock;
|
|
|
16
16
|
import { handleSOAPRequest, handleRESTRequest, soapUrl, restUrl } from './resourceFactory.js';
|
|
17
17
|
const authResources = File.readJsonSync(path.join(__dirname, './resources/auth.json'));
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* gets file from Retrieve folder
|
|
21
|
+
*
|
|
22
|
+
* @param {string} from source path (starting in bu folder)
|
|
23
|
+
* @param {string} to target path (starting in bu folder)
|
|
24
|
+
* @param {string} [mid] used when we need to test on ParentBU
|
|
25
|
+
* @returns {Promise.<{status:'ok'|'skipped'|'failed', statusMessage:string, file:string}>} -
|
|
26
|
+
*/
|
|
27
|
+
export async function copyFile(from, to, mid = '9999999') {
|
|
28
|
+
return File.copyFileSimple(`./test/resources/${mid}/${from}`, `./test/resources/${mid}/${to}`);
|
|
29
|
+
}
|
|
19
30
|
/**
|
|
20
31
|
* gets file from Retrieve folder
|
|
21
32
|
*
|
|
@@ -150,25 +161,34 @@ export function mockSetup(isDeploy) {
|
|
|
150
161
|
noLogFile: true,
|
|
151
162
|
// reset
|
|
152
163
|
api: undefined,
|
|
153
|
-
|
|
164
|
+
autoMidSuffix: undefined,
|
|
154
165
|
changeKeyField: undefined,
|
|
155
166
|
changeKeyValue: undefined,
|
|
156
167
|
commitHistory: undefined,
|
|
168
|
+
dependencies: undefined,
|
|
157
169
|
errorLog: undefined,
|
|
158
170
|
execute: undefined,
|
|
159
171
|
filter: undefined,
|
|
160
172
|
fixShared: undefined,
|
|
161
173
|
fromRetrieve: undefined,
|
|
162
174
|
json: undefined,
|
|
175
|
+
keySuffix: undefined,
|
|
163
176
|
like: undefined,
|
|
164
|
-
|
|
177
|
+
noUpdate: undefined,
|
|
178
|
+
publish: undefined,
|
|
179
|
+
referenceFrom: undefined,
|
|
180
|
+
referenceTo: undefined,
|
|
165
181
|
refresh: undefined,
|
|
166
|
-
|
|
182
|
+
retrieve: undefined,
|
|
167
183
|
schedule: undefined,
|
|
184
|
+
skipDeploy: undefined,
|
|
168
185
|
skipInteraction: undefined,
|
|
186
|
+
skipRetrieve: undefined,
|
|
187
|
+
skipStatusCheck: undefined,
|
|
188
|
+
_runningTest: undefined,
|
|
189
|
+
_welcomeMessageShown: undefined,
|
|
169
190
|
});
|
|
170
191
|
}
|
|
171
|
-
// @ts-expect-error somehow, MockAdapter does not expect type AxiosInstance
|
|
172
192
|
apimock = new MockAdapter(axiosInstance, { onNoMatch: 'throwException' });
|
|
173
193
|
// set access_token to mid to allow for autorouting of mock to correct resources
|
|
174
194
|
apimock.onPost(authResources.success.url).reply((config) => {
|
|
@@ -280,7 +300,7 @@ export function getRestCallout(method, url) {
|
|
|
280
300
|
* @param {string} [objectType] optionall filter requests by object
|
|
281
301
|
* @returns {object[]} json payload of the requests
|
|
282
302
|
*/
|
|
283
|
-
export function
|
|
303
|
+
export function getSoapCallouts(requestAction, objectType) {
|
|
284
304
|
const method = 'post';
|
|
285
305
|
const url = '/Service.asmx';
|
|
286
306
|
const subset = apimock.history[method];
|
|
@@ -290,10 +310,12 @@ export function getSoapCallout(requestAction, objectType) {
|
|
|
290
310
|
// find soap requestst of the correct request type
|
|
291
311
|
.filter((item) => item.headers.SOAPAction === requestAction)
|
|
292
312
|
// find soap requestst of the correct request type
|
|
293
|
-
.filter(
|
|
294
|
-
(
|
|
295
|
-
|
|
296
|
-
item.data.
|
|
313
|
+
.filter((item) =>
|
|
314
|
+
!objectType || item.data.includes('<ObjectType')
|
|
315
|
+
? item.data.split('<ObjectType>')[1].split('</ObjectType>')[0] === objectType
|
|
316
|
+
: item.data.includes('<Objects xsi:type="')
|
|
317
|
+
? item.data.split('<Objects xsi:type="')[1].split('">')[0] === objectType
|
|
318
|
+
: false
|
|
297
319
|
)
|
|
298
320
|
.map((item) => item.data);
|
|
299
321
|
return myCallout;
|
package/tsconfig.json
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
// Change this to match your project
|
|
3
|
-
"include": ["lib
|
|
3
|
+
"include": ["lib/**/*.js", "types/**/*.js", "test/**/*.js"],
|
|
4
4
|
"compilerOptions": {
|
|
5
|
+
"module": "nodenext",
|
|
6
|
+
"moduleResolution": "nodenext",
|
|
7
|
+
"checkJs": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"target": "es2022",
|
|
5
10
|
// Tells TypeScript to read JS files, as
|
|
6
11
|
// normally they are ignored as source files
|
|
7
12
|
"allowJs": true,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Change this to match your project
|
|
3
|
+
"include": ["lib/**/*.js"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"module": "nodenext",
|
|
6
|
+
"moduleResolution": "nodenext",
|
|
7
|
+
"target": "es2022",
|
|
8
|
+
"checkJs": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
// Tells TypeScript to read JS files, as
|
|
11
|
+
// normally they are ignored as source files
|
|
12
|
+
"allowJs": true,
|
|
13
|
+
// Generate d.ts files
|
|
14
|
+
"declaration": true,
|
|
15
|
+
// This compiler run should
|
|
16
|
+
// only output d.ts files
|
|
17
|
+
"emitDeclarationOnly": true,
|
|
18
|
+
// Types should go into this directory.
|
|
19
|
+
// Removing this would place the .d.ts files
|
|
20
|
+
// next to the .js files
|
|
21
|
+
"outDir": "@types",
|
|
22
|
+
// go to js file when using IDE functions like
|
|
23
|
+
// "Go to Definition" in VSCode
|
|
24
|
+
"declarationMap": true
|
|
25
|
+
}
|
|
26
|
+
}
|
package/types/mcdev.d.js
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
* @property {string} Scale the number of places after the decimal that the field can hold; example: "0","1", ...
|
|
95
95
|
*/
|
|
96
96
|
/**
|
|
97
|
-
* @typedef {Object.<string, DataExtensionFieldItem>} DataExtensionFieldMap
|
|
97
|
+
* @typedef {Object.<string, DataExtensionFieldItem>} DataExtensionFieldMap key: name of field, value: DataExtensionFieldItem
|
|
98
98
|
*/
|
|
99
99
|
/**
|
|
100
100
|
* @typedef {object} DataExtensionItem
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
* @property {number} [Client.ID] EID e.g:7281698
|
|
157
157
|
* @property {number} [Client.ModifiedBy] AccountUserID of user who last modified this user
|
|
158
158
|
* @property {'User'|'Installed Package'} c__type -
|
|
159
|
-
* @property {boolean
|
|
159
|
+
* @property {boolean} [IsLocked] (API only)
|
|
160
160
|
* @property {boolean} [Unlock] used to unlock a user that has IsLocked === true
|
|
161
161
|
* @property {boolean} c__IsLocked_readOnly copy of IsLocked
|
|
162
162
|
* @property {string} c__TimeZoneName name of timezone
|
|
@@ -175,11 +175,17 @@
|
|
|
175
175
|
* @typedef {Object.<string, UserDocument>} UserDocumentMap key=customer key
|
|
176
176
|
*/
|
|
177
177
|
/**
|
|
178
|
-
* @typedef {
|
|
179
|
-
* @property {
|
|
180
|
-
* @property {
|
|
181
|
-
* @property {
|
|
182
|
-
* @property {
|
|
178
|
+
* @typedef {object} UserDocumentDocumentHelper
|
|
179
|
+
* @property {string} ActiveFlagDocs docs: user.ActiveFlag === true ? '✓' : '-'
|
|
180
|
+
* @property {string} IsAPIUserDocs docs: user.IsAPIUser === true ? '✓' : '-'
|
|
181
|
+
* @property {string} MustChangePasswordDocs docs: user.MustChangePassword === true ? '✓' : '-'
|
|
182
|
+
* @property {string} DefaultBusinessUnitDocs docs: default MID; BUName after we resolved it
|
|
183
|
+
* @property {string} RolesDocs docs: list of roles as concatenated string
|
|
184
|
+
* @property {string} AssociatedBusDocs docs: list of associated BUs as concatenated string
|
|
185
|
+
* @property {string | number} ModifiedBy docs: user name who last modified this user
|
|
186
|
+
* @property {string} TimeZoneName docs: name of timezone
|
|
187
|
+
* @property {string} IsLockedDocs docs: if the user cannot login
|
|
188
|
+
* @typedef {UserDocument & UserDocumentDocumentHelper} UserDocumentDocument
|
|
183
189
|
*/
|
|
184
190
|
/**
|
|
185
191
|
* @typedef {object} AccountUserConfiguration
|
|
@@ -326,16 +332,9 @@
|
|
|
326
332
|
* @typedef {import('simple-git').DiffResultTextFile & McdevDeltaPkgItem} DeltaPkgItem
|
|
327
333
|
*/
|
|
328
334
|
/**
|
|
329
|
-
* @typedef {import('sfmc-sdk/auth').default} SDKauth
|
|
330
|
-
* @typedef {import('sfmc-sdk/rest').default} SDKrest
|
|
331
|
-
* @typedef {import('sfmc-sdk/soap').default} SDKsoap
|
|
332
335
|
* @typedef {import('sfmc-sdk/util').RestError} RestError
|
|
333
336
|
* @typedef {import('sfmc-sdk/util').SOAPError} SOAPError
|
|
334
337
|
* @typedef {SOAPError & RestError} SDKError
|
|
335
|
-
* @typedef {object} SDK
|
|
336
|
-
* @property {SDKauth} auth SDKauth
|
|
337
|
-
* @property {SDKrest} rest SDKrest
|
|
338
|
-
* @property {SDKsoap} soap SDKsoap
|
|
339
338
|
*/
|
|
340
339
|
|
|
341
340
|
/**
|
|
@@ -471,4 +470,30 @@ complex
|
|
|
471
470
|
* @property {boolean} supports.retrieveAsTemplate can you retrieve & template in one step
|
|
472
471
|
*/
|
|
473
472
|
|
|
473
|
+
/**
|
|
474
|
+
* @typedef {object} ListItem
|
|
475
|
+
* @property {object} [Client] wrapper
|
|
476
|
+
* @property {number} Client.ID owning BU's MID
|
|
477
|
+
* @property {string} [PartnerKey] not used
|
|
478
|
+
* @property {string} [CreatedDate] "2021-06-21T11:54:57.103"
|
|
479
|
+
* @property {string} [ModifiedDate] "2021-06-21T11:54:57.103"
|
|
480
|
+
* @property {number} [ID] unique identifier per BU
|
|
481
|
+
* @property {string} [ObjectID] not used
|
|
482
|
+
* @property {string} [CustomerKey] unique identifer per BU
|
|
483
|
+
* @property {string} [Path] customn field that tracks the exact directory path of the current folder including its own name
|
|
484
|
+
* @property {object} [ParentFolder] wrapper
|
|
485
|
+
* @property {number} ParentFolder.ID folder id of parent folder; 0 if current folder is already on top level
|
|
486
|
+
* @property {string} [ParentFolder.ObjectID] not used
|
|
487
|
+
* @property {string} [ParentFolder.Path] customn field that tracks the exact directory path of the current folder including its own name
|
|
488
|
+
* @property {string} Name folder name
|
|
489
|
+
* @property {string} [Description] deprecated option to describe the folder content
|
|
490
|
+
* @property {string} ContentType e.g. "shared_data"; see folder-subtypes for complete list
|
|
491
|
+
* @property {boolean} IsActive ?
|
|
492
|
+
* @property {boolean} IsEditable option to disable renaming/moving this folder via GUI
|
|
493
|
+
* @property {boolean} AllowChildren option to prevent creating subfolders via GUI
|
|
494
|
+
* @property {boolean} [_generated] helper flag for Deployer class to signal if the folder was auto-generated or manually placed
|
|
495
|
+
*
|
|
496
|
+
* @typedef {Object.<number, ListItem>} ListIdMap key=id
|
|
497
|
+
* @typedef {Object.<string, ListItem>} ListMap key=customer key
|
|
498
|
+
*/
|
|
474
499
|
export default {};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|