From 2472d4faecff224c7a2c140618fa662670696928 Mon Sep 17 00:00:00 2001 From: moritzraho Date: Thu, 11 Sep 2025 13:12:28 +0200 Subject: [PATCH] fix: for deploy service int interfaces, and apihost get urls output --- src/utils.js | 11 +++--- test/utils.test.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 5 deletions(-) diff --git a/src/utils.js b/src/utils.js index 90cdea6..b810721 100644 --- a/src/utils.js +++ b/src/utils.js @@ -22,17 +22,16 @@ const archiver = require('archiver') // this is a static list that comes from here: https://developer.adobe.com/runtime/docs/guides/reference/runtimes/ const SupportedRuntimes = ['sequence', 'blackbox', 'nodejs:10', 'nodejs:12', 'nodejs:14', 'nodejs:16', 'nodejs:18', 'nodejs:20', 'nodejs:22'] +// must cover 'deploy-service[-region][.env].app-builder[.int|.corp].adp.adobe.io/runtime const SUPPORTED_ADOBE_ANNOTATION_ENDPOINT_REGEXES = [ /http(s)?:\/\/localhost/, /http(s)?:\/\/127\.0\.0\.1/, /https:\/\/adobeioruntime\.net/, - /https:\/\/deploy-service.*\.app-builder\.corp\.adp\.adobe\.io\/runtime/, - /https:\/\/deploy-service.*\.app-builder\.adp\.adobe\.io\/runtime/ + /https:\/\/deploy-service.*\.app-builder.*\.adp\.adobe\.io\/runtime/ ] const NON_CUSTOM_ADOBE_APIHOSTS_REGEXES = [ /adobeioruntime\.net/, - /deploy-service.*\.app-builder\.corp\.adp\.adobe\.io\/runtime/, - /deploy-service.*\.app-builder\.adp\.adobe\.io\/runtime/ + /deploy-service.*\.app-builder.*\.adp\.adobe\.io\/runtime/ ] const DEFAULT_PACKAGE_RESERVED_NAME = 'default' @@ -1917,8 +1916,10 @@ function getActionUrls (appConfig, /* istanbul ignore next */ isRemoteDev = fals } else { // if (!actionIsBehindCdn && !apihostIsCustom) // https://.adobeioruntime.net/api/v1/web// + // note: if the apihost matches /deploy-service.*\.app-builder\.*\.adp\.adobe\.io\/runtime/ + // we still want to serve dataplane requests on adobeioruntime.net return urlJoin( - 'https://' + config.ow.namespace + '.' + cleanApihost, + 'https://' + config.ow.namespace + '.' + 'adobeioruntime.net', 'api', config.ow.apiversion, webUri, diff --git a/test/utils.test.js b/test/utils.test.js index 6a4edda..9aad044 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -2217,6 +2217,96 @@ describe('getActionUrls', () => { expect(result).toEqual(expected) }) + test('some non web actions, with ui, deploy-service prod environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service.app-builder.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + + test('some non web actions, with ui, deploy-service-region prod environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service-va6.app-builder.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + + test('some non web actions, with ui, deploy-service-region prod int environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service-va6.app-builder.int.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + + test('some non web actions, with ui, deploy-service-region stg corp environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service-va6.stg.app-builder.corp.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + + test('some non web actions, with ui, deploy-service-region stg int environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service-va6.stg.app-builder.int.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + + test('some non web actions, with ui, deploy-service-region dev int environment apihost, no custom hostname', () => { + const expected = { + 'sample-app-1.0.0/action': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action', + 'sample-app-1.0.0/action-sequence': 'https://fake_ns.adobeioruntime.net/api/v1/sample-app-1.0.0/action-sequence', + 'sample-app-1.0.0/action-zip': 'https://fake_ns.adobeio-static.net/api/v1/web/sample-app-1.0.0/action-zip', + 'pkg2/thataction': 'https://fake_ns.adobeioruntime.net/api/v1/pkg2/thataction', + 'pkg2/thatsequence': 'https://fake_ns.adobeio-static.net/api/v1/web/pkg2/thatsequence' + } + config.ow.apihost = 'deploy-service-va6.dev.app-builder.int.adp.adobe.io/runtime' + config.manifest.full.packages.__APP_PACKAGE__.sequences['action-sequence'].web = 'no' + config.manifest.full.packages.pkg2.actions.thataction.web = 'no' + const result = utils.getActionUrls(config, false, false) + expect(result).toEqual(expected) + }) + test('some non web actions, with ui, remote dev, no custom apihost, no custom hostname', () => { const expected = { 'sample-app-1.0.0/action': 'https://fake_ns.adobeioruntime.net/api/v1/web/sample-app-1.0.0/action',