From 92d4d7e181a2cd6ed2707797e2a827676e7e1561 Mon Sep 17 00:00:00 2001 From: Yujohn Nattrass Date: Mon, 3 Feb 2025 11:23:24 -0800 Subject: [PATCH] chore: remove feature flag to error builds if failed to fetch extensions --- packages/config/src/api/site_info.ts | 44 +++++---------- .../config/tests/api/snapshots/tests.js.md | 52 +----------------- .../config/tests/api/snapshots/tests.js.snap | Bin 2355 -> 2286 bytes packages/config/tests/api/tests.js | 25 +-------- 4 files changed, 15 insertions(+), 106 deletions(-) diff --git a/packages/config/src/api/site_info.ts b/packages/config/src/api/site_info.ts index 173384bfb7..e0612918d1 100644 --- a/packages/config/src/api/site_info.ts +++ b/packages/config/src/api/site_info.ts @@ -36,10 +36,8 @@ export const getSiteInfo = async function ({ offline = false, testOpts = {}, siteFeatureFlagPrefix, - featureFlags = {}, }: GetSiteInfoOpts) { const { env: testEnv = false } = testOpts - const errorOnExtensionFetchFail = featureFlags.error_builds_on_extension_fetch_fail if (api === undefined || mode === 'buildbot' || testEnv) { const siteInfo: { id?: string; account_id?: string } = {} @@ -48,9 +46,7 @@ export const getSiteInfo = async function ({ if (accountId !== undefined) siteInfo.account_id = accountId const integrations = - mode === 'buildbot' && !offline - ? await getIntegrations({ siteId, testOpts, offline, accountId, errorOnExtensionFetchFail }) - : [] + mode === 'buildbot' && !offline ? await getIntegrations({ siteId, testOpts, offline, accountId }) : [] return { siteInfo, accounts: [], addons: [], integrations } } @@ -59,7 +55,7 @@ export const getSiteInfo = async function ({ getSite(api, siteId, siteFeatureFlagPrefix), getAccounts(api), getAddons(api, siteId), - getIntegrations({ siteId, testOpts, offline, accountId, errorOnExtensionFetchFail }), + getIntegrations({ siteId, testOpts, offline, accountId }), ] const [siteInfo, accounts, addons, integrations] = await Promise.all(promises) @@ -113,7 +109,6 @@ type GetIntegrationsOpts = { accountId?: string testOpts: TestOptions offline: boolean - errorOnExtensionFetchFail?: boolean } const getIntegrations = async function ({ @@ -121,7 +116,6 @@ const getIntegrations = async function ({ accountId, testOpts, offline, - errorOnExtensionFetchFail, }: GetIntegrationsOpts): Promise { if (!siteId || offline) { return [] @@ -136,31 +130,19 @@ const getIntegrations = async function ({ ? `${baseUrl}team/${accountId}/integrations/installations/meta/${siteId}` : `${baseUrl}site/${siteId}/integrations/safe` - if (errorOnExtensionFetchFail) { - try { - const response = await fetch(url) - if (!response.ok) { - throw new Error(`Unexpected status code ${response.status} from fetching extensions`) - } - const bodyText = await response.text() - if (bodyText === '') { - return [] - } - - const integrations = await JSON.parse(bodyText) - return Array.isArray(integrations) ? integrations : [] - } catch (error) { - return throwUserError( - `Failed retrieving extensions for site ${siteId}: ${error.message}. ${ERROR_CALL_TO_ACTION}`, - ) - } - } - try { const response = await fetch(url) - const integrations = await response.json() + if (!response.ok) { + throw new Error(`Unexpected status code ${response.status} from fetching extensions`) + } + const bodyText = await response.text() + if (bodyText === '') { + return [] + } + + const integrations = await JSON.parse(bodyText) return Array.isArray(integrations) ? integrations : [] - } catch { - return [] + } catch (error) { + return throwUserError(`Failed retrieving extensions for site ${siteId}: ${error.message}. ${ERROR_CALL_TO_ACTION}`) } } diff --git a/packages/config/tests/api/snapshots/tests.js.md b/packages/config/tests/api/snapshots/tests.js.md index 76282a01b6..929e7dc6f1 100644 --- a/packages/config/tests/api/snapshots/tests.js.md +++ b/packages/config/tests/api/snapshots/tests.js.md @@ -2250,56 +2250,12 @@ Generated by [AVA](https://avajs.dev). "token": "test"␊ }` -## Integrations are not returned if failed to fetch integrations and if flag is true +## Integrations are not returned if failed to fetch integrations > Snapshot 1 'Failed retrieving extensions for site test: Unexpected status code 500 from fetching extensions. Double-check your login status with \'netlify status\' or contact support with details of your error.' -## Empty array of integrations are returned if failed to fetch integrations and if flag is false - -> Snapshot 1 - - `{␊ - "accounts": [],␊ - "addons": [],␊ - "branch": "branch",␊ - "buildDir": "packages/config/tests/api/fixtures/base",␊ - "config": {␊ - "build": {␊ - "environment": {},␊ - "processing": {␊ - "css": {},␊ - "html": {},␊ - "images": {},␊ - "js": {}␊ - },␊ - "publish": "packages/config/tests/api/fixtures/base",␊ - "publishOrigin": "default",␊ - "services": {}␊ - },␊ - "functions": {␊ - "*": {}␊ - },␊ - "headers": [],␊ - "plugins": [],␊ - "redirects": []␊ - },␊ - "configPath": "packages/config/tests/api/fixtures/base/netlify.toml",␊ - "context": "production",␊ - "env": {},␊ - "hasApi": true,␊ - "headersPath": "packages/config/tests/api/fixtures/base/_headers",␊ - "integrations": [],␊ - "redirectsPath": "packages/config/tests/api/fixtures/base/_redirects",␊ - "repositoryRoot": "packages/config/tests/api/fixtures/base",␊ - "siteInfo": {␊ - "account_id": "account1",␊ - "id": "test"␊ - },␊ - "token": "test"␊ - }` - ## baseRelDir is true if build.base is overridden > Snapshot 1 @@ -2463,9 +2419,3 @@ Generated by [AVA](https://avajs.dev). },␊ "token": "test"␊ }` - -## Integrations are not returned if failed to fetch integrations - -> Snapshot 1 - - 'Failed retrieving extensions for site test: Unexpected status code 500 from fetching extensions. Double-check your login status with \'netlify status\' or contact support with details of your error.' diff --git a/packages/config/tests/api/snapshots/tests.js.snap b/packages/config/tests/api/snapshots/tests.js.snap index fcd3582afbf02483f58189a5f0e0f0f3bd13e9b6..4cf9ceda68c58fcf87590926e1e14d48aaacbb41 100644 GIT binary patch literal 2286 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 Li2R { +test('Integrations are not returned if failed to fetch integrations', async (t) => { const { output } = await new Fixture('./fixtures/base') .withFlags({ siteId: 'test', mode: 'buildbot', accountId: 'account1', token: 'test', - featureFlags: { - error_builds_on_extension_fetch_fail: true, - }, - }) - .runConfigServer([ - SITE_INFO_DATA, - TEAM_INSTALLATIONS_META_RESPONSE_INTERNAL_SERVER_ERROR, - FETCH_INTEGRATIONS_EMPTY_RESPONSE, - ]) - - t.snapshot(normalizeOutput(output)) -}) - -test('Empty array of integrations are returned if failed to fetch integrations and if flag is false', async (t) => { - const { output } = await new Fixture('./fixtures/base') - .withFlags({ - siteId: 'test', - mode: 'buildbot', - accountId: 'account1', - token: 'test', - featureFlags: { - error_builds_on_extension_fetch_fail: false, - }, }) .runConfigServer([ SITE_INFO_DATA,