From 13f6b2291e56647a2d5b5f0d8419d526b9445d80 Mon Sep 17 00:00:00 2001 From: Justin Zhang Date: Mon, 8 Sep 2025 09:44:00 +0100 Subject: [PATCH 1/2] #0: Add test for empty-response handling --- @types/lib/metadataTypes/Folder.d.ts.map | 2 +- ...ion,synchronizeddataextension-response.xml | 26 ++++++++++++ test/type.dataExtension.test.js | 41 +++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml diff --git a/@types/lib/metadataTypes/Folder.d.ts.map b/@types/lib/metadataTypes/Folder.d.ts.map index 61f5ad8f6..43a42aa86 100644 --- a/@types/lib/metadataTypes/Folder.d.ts.map +++ b/@types/lib/metadataTypes/Folder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA2J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAzxBwB,mBAAmB"} \ No newline at end of file +{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA2J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA6BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA3xBwB,mBAAmB"} \ No newline at end of file diff --git a/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml b/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml new file mode 100644 index 000000000..c2d830483 --- /dev/null +++ b/test/resources/1111111/dataFolder/retrieve-ContentTypeINdataextension,hidden,queryactivity,salesforcedataextension,shared_data,shared_dataextension,shared_salesforcedataextension,synchronizeddataextension-response.xml @@ -0,0 +1,26 @@ + + + + RetrieveResponse + urn:uuid:998a6923-b781-40be-abad-0506f0f97477 + urn:uuid:a5d518cc-9bfb-45f1-a4a7-5d11cc1a8d44 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2025-09-05T16:29:03Z + 2025-09-05T16:34:03Z + + + + + + OK + ac40bccd-e8cd-4232-b1ee-e3cfbbfd0b89 + + + diff --git a/test/type.dataExtension.test.js b/test/type.dataExtension.test.js index 10802e197..7fd95951a 100644 --- a/test/type.dataExtension.test.js +++ b/test/type.dataExtension.test.js @@ -91,6 +91,47 @@ describe('type: dataExtension', () => { ); return; }); + + it('Should not fail if shared dataExtension cannot be retrieved', async () => { + // WHEN + await handler.retrieve('testInstance/_ParentBU_', ['dataExtension', 'query']); + // THEN + assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error'); + // get results from cache + const result = cache.getCache(); + assert.equal( + result.dataExtension ? Object.keys(result.dataExtension).length : 0, + 1, + 'only one dataExtension expected' + ); + assert.deepEqual( + await testUtils.getActualJson( + 'testExisting_dataExtensionShared', + 'dataExtension', + '_ParentBU_' + ), + await testUtils.getExpectedJson('1111111', 'dataExtension', 'retrieve'), + + 'returned metadata was not equal expected' + ); + // check if MD file was created and equals expectations + expect( + await testUtils.getActualDoc( + 'testExisting_dataExtensionShared', + 'dataExtension', + '_ParentBU_' + ) + ).to.equal( + await testUtils.getExpectedFile('1111111', 'dataExtension', 'retrieve', 'md') + ); + + assert.equal( + testUtils.getAPIHistoryLength(), + 7, + 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests' + ); + return; + }); }); describe('Deploy ================', () => { From db42cff0e2195af49d6de0588f8528a0a0d0b5fe Mon Sep 17 00:00:00 2001 From: Justin Zhang Date: Mon, 8 Sep 2025 09:44:41 +0100 Subject: [PATCH 2/2] #0: Null coalesce to empty array if response results are missing --- @types/lib/metadataTypes/Folder.d.ts.map | 2 +- lib/metadataTypes/Folder.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/@types/lib/metadataTypes/Folder.d.ts.map b/@types/lib/metadataTypes/Folder.d.ts.map index 43a42aa86..61f5ad8f6 100644 --- a/@types/lib/metadataTypes/Folder.d.ts.map +++ b/@types/lib/metadataTypes/Folder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA2J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA6BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA3xBwB,mBAAmB"} \ No newline at end of file +{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA2J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAzxBwB,mBAAmB"} \ No newline at end of file diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js index e4f43cd3e..87acf7fe7 100644 --- a/lib/metadataTypes/Folder.js +++ b/lib/metadataTypes/Folder.js @@ -714,7 +714,7 @@ class Folder extends MetadataType { ), options ); - return response.Results; + return response.Results ?? []; } /**