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')