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