import assert from 'node:assert/strict' import { API_KEY_SECRET, SECRET_URL, assertNoRetiredAlias, queryFromInput, redactEnvValue, requireConfirm, setupUrls, slimDeploy, slimEnvVar, slimSite, slimUser, } from '../src/setup.js' assert.equal(API_KEY_SECRET, 'netlifyToken') assert.match(SECRET_URL, /name=netlifyToken/) assert.match(SECRET_URL, /allowedHosts=api\.netlify\.com/) assert.doesNotMatch(SECRET_URL, /kent/i) const setup = setupUrls() assert.equal(setup.tokenSecret, 'netlifyToken') assert.match(setup.tokenDashboardUrl, /app\.netlify\.com/) assert.doesNotMatch(JSON.stringify(setup), /kent/i) assert.throws(() => assertNoRetiredAlias('kentcdodds', 'account'), /not supported/) assert.doesNotThrow(() => assertNoRetiredAlias('work', 'account')) const preview = requireConfirm({ dryRun: true }, 'createDeploy', 'POST', '/sites/example-site/deploys', { draft: true, }) assert.deepEqual(preview, { dryRun: true, method: 'POST', path: '/sites/example-site/deploys', body: { draft: true }, query: null, }) assert.throws( () => requireConfirm({}, 'restoreDeploy', 'POST', '/sites/example-site/deploys/d1/restore', null), /dryRun: true/, ) assert.equal( requireConfirm({ confirm: true }, 'createDeploy', 'POST', '/sites/example-site/deploys', {}), null, ) assert.deepEqual( redactEnvValue({ key: 'FLAG', values: [{ context: 'production', value: 'super-secret' }], }), { key: 'FLAG', values: [{ context: 'production', value: '[redacted]' }], }, ) assert.equal( Object.prototype.hasOwnProperty.call( slimEnvVar({ key: 'FLAG', scopes: ['builds'], is_secret: true, values: [{ id: 'v1', context: 'production', value: 'should-not-leak' }], }), 'value', ), false, ) assert.deepEqual( slimEnvVar({ key: 'FLAG', scopes: ['builds'], is_secret: true, updated_at: '2026-01-01', values: [{ id: 'v1', context: 'production', value: 'should-not-leak' }], }), { key: 'FLAG', scopes: ['builds'], is_secret: true, updated_at: '2026-01-01', values: [{ id: 'v1', context: 'production', context_parameter: null }], }, ) assert.deepEqual(slimUser({ id: 'u1', email: 'ada@example.com', full_name: 'Ada', billing: {} }), { id: 'u1', email: 'ada@example.com', full_name: 'Ada', avatar_url: null, slug: null, }) assert.equal( Object.prototype.hasOwnProperty.call( slimSite({ id: 's1', name: 'example-site', url: 'https://example.netlify.app', password: 'nope', deploy_hook: 'https://secret', build_settings: { env: { SECRET: 'nope' } }, default_hooks_data: { access_token: 'nope' }, }), 'password', ), false, ) assert.deepEqual( slimSite({ id: 's1', name: 'example-site', url: 'https://example.netlify.app', ssl_url: 'https://example.netlify.app', state: 'current', account_slug: 'acme', password: 'nope', published_deploy: { id: 'd1', state: 'ready', url: 'https://example.netlify.app' }, }), { id: 's1', name: 'example-site', url: 'https://example.netlify.app', ssl_url: 'https://example.netlify.app', admin_url: null, state: 'current', custom_domain: null, account_id: null, account_name: null, account_slug: 'acme', created_at: null, updated_at: null, published_deploy: { id: 'd1', site_id: null, state: 'ready', name: null, url: 'https://example.netlify.app', ssl_url: null, deploy_url: null, admin_url: null, branch: null, context: null, draft: false, error_message: null, commit_ref: null, title: null, created_at: null, published_at: null, framework: null, }, }, ) assert.deepEqual( slimDeploy({ id: 'd1', state: 'ready', context: 'production', skew_protection_token: 'nope' }), { id: 'd1', site_id: null, state: 'ready', name: null, url: null, ssl_url: null, deploy_url: null, admin_url: null, branch: null, context: 'production', draft: false, error_message: null, commit_ref: null, title: null, created_at: null, published_at: null, framework: null, }, ) assert.deepEqual(queryFromInput({ name: 'docs', dryRun: true, secretName: 'x', per_page: 10 }), { name: 'docs', per_page: 10, }) console.log('setup checks passed')