From 5f0c9ee933c72266423f8016be4ecf9be7f2d98c Mon Sep 17 00:00:00 2001 From: Shazron Abdullah Date: Tue, 21 Jan 2025 23:22:03 +0800 Subject: [PATCH 1/4] fix: remove use of node-fetch, use built-in fetch --- jest.setup.js | 7 +++++++ package.json | 1 - src/lib/npm-helper.js | 1 - test/commands/templates/rollback.test.js | 1 - test/lib/npm-helper.test.js | 13 +++---------- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/jest.setup.js b/jest.setup.js index 309fc53..426d48b 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -17,6 +17,13 @@ const eol = require('eol') jest.setTimeout(30000) +global.setFetchMock = (ok = true, mockData = {}) => { + global.fetch = jest.fn().mockResolvedValue({ + ok, + json: () => ok ? Promise.resolve(mockData) : Promise.reject(mockData) + }) +} + const fixturesFolder = path.join(__dirname, 'test/__fixtures__') global.fixturePath = (file) => { return `${fixturesFolder}/${file}` diff --git a/package.json b/package.json index e8fd500..4987c41 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "fs-extra": "^10.1.0", "inquirer": "^8.2.4", "js-yaml": "^3.14.1", - "node-fetch": "^2.6.7", "ora": "^4.1.1", "yeoman-environment": "^4.2.1" }, diff --git a/src/lib/npm-helper.js b/src/lib/npm-helper.js index cf82c01..9122a1b 100644 --- a/src/lib/npm-helper.js +++ b/src/lib/npm-helper.js @@ -10,7 +10,6 @@ * governing permissions and limitations under the License. */ -const fetch = require('node-fetch') const fs = require('fs-extra') const path = require('path') const aioLogger = require('@adobe/aio-lib-core-logging')('@adobe/aio-cli-plugin-app-templates:lib-npm-helper', { provider: 'debug' }) diff --git a/test/commands/templates/rollback.test.js b/test/commands/templates/rollback.test.js index 1fa1376..eb146b2 100644 --- a/test/commands/templates/rollback.test.js +++ b/test/commands/templates/rollback.test.js @@ -15,7 +15,6 @@ const BaseCommand = require('../../../src/BaseCommand') const { TEMPLATE_PACKAGE_JSON_KEY, getNpmLocalVersion, hideNPMWarnings, readPackageJson, writeObjectToPackageJson } = require('../../../src/lib/npm-helper') const { prompt } = require('../../../src/lib/helper') -// const fetch = require('node-fetch') const inquirer = require('inquirer') const { stdout } = require('stdout-stderr') diff --git a/test/lib/npm-helper.test.js b/test/lib/npm-helper.test.js index b1c5a25..8c79632 100644 --- a/test/lib/npm-helper.test.js +++ b/test/lib/npm-helper.test.js @@ -21,7 +21,6 @@ const { hideNPMWarnings } = require('../../src/lib/npm-helper') -const fetch = require('node-fetch') const fs = require('fs-extra') const { stderr } = require('stdout-stderr') const path = require('path') @@ -29,17 +28,11 @@ const os = require('os') const processCwd = process.cwd() jest.mock('fs-extra') // do not touch the real fs -jest.mock('node-fetch') - -const createMockResponse = _json => { - return { - json: async () => _json - } -} beforeEach(() => { fs.readJson.mockReset() fs.writeJson.mockReset() + global.setFetchMock(true, {}) }) describe('processNpmPackageSpec', () => { @@ -189,7 +182,7 @@ test('npmTextSearch', async () => { const json = { objects: [] } - fetch.mockResolvedValueOnce(createMockResponse(json)) + global.setFetchMock(true, json) return expect(npmTextSearch()).resolves.toStrictEqual(json) }) @@ -201,7 +194,7 @@ test('getNpmLatestVersion', async () => { } } - fetch.mockResolvedValueOnce(createMockResponse(json)) + global.setFetchMock(true, json) return expect(getNpmLatestVersion('foo')).resolves.toStrictEqual(json['dist-tags'].latest) }) From 7510272992c77313d54343b450c084034815e9e5 Mon Sep 17 00:00:00 2001 From: Shazron Abdullah <36107+shazron@users.noreply.github.com> Date: Tue, 7 Apr 2026 20:16:06 +0800 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- jest.setup.js | 2 +- test/lib/npm-helper.test.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jest.setup.js b/jest.setup.js index 426d48b..3efa0e4 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -20,7 +20,7 @@ jest.setTimeout(30000) global.setFetchMock = (ok = true, mockData = {}) => { global.fetch = jest.fn().mockResolvedValue({ ok, - json: () => ok ? Promise.resolve(mockData) : Promise.reject(mockData) + json: () => Promise.resolve(mockData) }) } diff --git a/test/lib/npm-helper.test.js b/test/lib/npm-helper.test.js index 8c79632..36b89b5 100644 --- a/test/lib/npm-helper.test.js +++ b/test/lib/npm-helper.test.js @@ -32,7 +32,9 @@ jest.mock('fs-extra') // do not touch the real fs beforeEach(() => { fs.readJson.mockReset() fs.writeJson.mockReset() - global.setFetchMock(true, {}) + if (global.fetchMock && typeof global.fetchMock.resetMocks === 'function') { + global.fetchMock.resetMocks() + } }) describe('processNpmPackageSpec', () => { From 6503522e01061a459ecb28d2b3433846a96fe206 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 7 Apr 2026 12:27:23 +0000 Subject: [PATCH 3/4] fix: use global.fetch.mockReset() instead of no-op global.fetchMock check Agent-Logs-Url: https://github.com/adobe/aio-cli-plugin-app-templates/sessions/32ce92b5-76ec-4dbe-9268-5c8558eb60b7 Co-authored-by: shazron <36107+shazron@users.noreply.github.com> --- test/lib/npm-helper.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/lib/npm-helper.test.js b/test/lib/npm-helper.test.js index 36b89b5..e1af12c 100644 --- a/test/lib/npm-helper.test.js +++ b/test/lib/npm-helper.test.js @@ -32,8 +32,8 @@ jest.mock('fs-extra') // do not touch the real fs beforeEach(() => { fs.readJson.mockReset() fs.writeJson.mockReset() - if (global.fetchMock && typeof global.fetchMock.resetMocks === 'function') { - global.fetchMock.resetMocks() + if (global.fetch && typeof global.fetch.mockReset === 'function') { + global.fetch.mockReset() } }) From 125882818736f2f51d29ca37771e4baa40d8a45d Mon Sep 17 00:00:00 2001 From: Shazron Abdullah <36107+shazron@users.noreply.github.com> Date: Tue, 7 Apr 2026 23:15:09 +0800 Subject: [PATCH 4/4] fix: add secrets inherit to reusable workflow Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/node.js.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2e82716..e790d3a 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -12,3 +12,4 @@ on: jobs: build: uses: adobe/aio-reusable-workflows/.github/workflows/node.js.yml@main + secrets: inherit