import assert from 'node:assert/strict'
import {
API_KEY_SECRET,
SECRET_URL,
assertNoRetiredAlias,
queryFromInput,
redactEnvValue,
requireConfirm,
setupUrls,
slimDeployment,
slimEnvVar,
slimProject,
slimTeam,
slimUser,
} from '../src/setup.js'
assert.equal(API_KEY_SECRET, 'vercelToken')
assert.match(SECRET_URL, /name=vercelToken/)
assert.match(SECRET_URL, /allowedHosts=api\.vercel\.com/)
assert.doesNotMatch(SECRET_URL, /kent/i)
const setup = setupUrls()
assert.equal(setup.tokenSecret, 'vercelToken')
assert.match(setup.oauthUrl, /provider=vercel/)
assert.match(setup.oauthUrl, /vercel\.com%2Foauth%2Fauthorize/)
assert.equal(setup.redirectUri, 'https://kody.codes/connect/oauth')
assert.throws(() => assertNoRetiredAlias('kentcdodds', 'account'), /not supported/)
assert.doesNotThrow(() => assertNoRetiredAlias('work', 'account'))
const preview = requireConfirm({ dryRun: true }, 'addDomain', 'POST', '/v10/projects/app/domains', {
name: 'www.example.com',
})
assert.deepEqual(preview, {
dryRun: true,
method: 'POST',
path: '/v10/projects/app/domains',
body: { name: 'www.example.com' },
query: {},
})
assert.throws(
() => requireConfirm({}, 'createDeployment', 'POST', '/v13/deployments', { name: 'app' }),
/dryRun: true/,
)
assert.equal(requireConfirm({ confirm: true }, 'createDeployment', 'POST', '/v13/deployments', {}), null)
assert.deepEqual(redactEnvValue({ key: 'FLAG', value: 'super-secret', target: ['preview'] }), {
key: 'FLAG',
value: '[redacted]',
target: ['preview'],
})
assert.deepEqual(
slimEnvVar({
id: 'env_1',
key: 'FLAG',
type: 'plain',
target: ['production'],
value: 'should-not-leak',
updatedAt: 1,
}),
{
id: 'env_1',
key: 'FLAG',
type: 'plain',
target: ['production'],
gitBranch: null,
createdAt: null,
updatedAt: 1,
comment: null,
},
)
assert.equal(
Object.prototype.hasOwnProperty.call(
slimEnvVar({ key: 'FLAG', value: 'secret', type: 'plain' }),
'value',
),
false,
)
assert.deepEqual(slimUser({ id: 'u1', username: 'ada', name: 'Ada', email: 'ada@example.com', defaultTeamId: 'team_1', billing: {} }), {
id: 'u1',
username: 'ada',
name: 'Ada',
email: 'ada@example.com',
defaultTeamId: 'team_1',
})
assert.deepEqual(slimTeam({ id: 'team_1', name: 'Acme', slug: 'acme', createdAt: 1, billing: {} }), {
id: 'team_1',
name: 'Acme',
slug: 'acme',
createdAt: 1,
limited: false,
})
assert.deepEqual(
slimProject({
id: 'prj_1',
name: 'example-app',
framework: 'nextjs',
updatedAt: 2,
env: [{ key: 'SECRET', value: 'nope' }],
}),
{
id: 'prj_1',
name: 'example-app',
framework: 'nextjs',
updatedAt: 2,
link: null,
},
)
assert.deepEqual(
slimDeployment({ uid: 'dpl_1', name: 'example-app', url: 'example.vercel.app', readyState: 'READY', target: 'preview', createdAt: 3 }),
{
id: 'dpl_1',
name: 'example-app',
url: 'example.vercel.app',
state: 'READY',
target: 'preview',
createdAt: 3,
inspectorUrl: null,
projectId: null,
},
)
assert.deepEqual(queryFromInput({ teamSlug: 'acme', search: 'docs', dryRun: true, secretName: 'x' }), {
slug: 'acme',
search: 'docs',
})
console.log('setup checks passed')