Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/vercel

scripts/test-dry-run.mjs

72 lines · 1.8 KB · JavaScript
import assert from 'node:assert/strict'
import vercel, {
	addDomain,
	createDeployment,
	createEnvVar,
	smokeTest,
	vercelRequest,
} from '../src/vercel.js'

const smoke = await smokeTest({ dryRun: true })
assert.equal(smoke.ok, true)
assert.equal(smoke.live, false)
assert.equal(smoke.dryRun, true)
assert.equal(smoke.path, '/v2/user')
assert.match(smoke.setup.tokenUrl, /name=vercelToken/)

const root = await vercel({ dryRun: true })
assert.equal(root.path, '/v2/user')

const deploy = await createDeployment({
	name: 'example-app',
	target: 'preview',
	dryRun: true,
})
assert.deepEqual(deploy, {
	dryRun: true,
	method: 'POST',
	path: '/v13/deployments',
	body: { name: 'example-app', target: 'preview' },
	query: {},
})

const domain = await addDomain({
	project: 'example-app',
	name: 'www.example.com',
	dryRun: true,
})
assert.equal(domain.dryRun, true)
assert.equal(domain.method, 'POST')
assert.equal(domain.path, '/v10/projects/example-app/domains')
assert.deepEqual(domain.body, { name: 'www.example.com' })

const accountDomain = await addDomain({ name: 'example.com', dryRun: true })
assert.equal(accountDomain.path, '/v7/domains')

const env = await createEnvVar({
	project: 'example-app',
	key: 'EXAMPLE_FLAG',
	value: 'should-not-appear',
	target: ['preview'],
	dryRun: true,
})
assert.equal(env.dryRun, true)
assert.equal(env.path, '/v10/projects/example-app/env')
assert.equal(env.body.key, 'EXAMPLE_FLAG')
assert.equal(env.body.value, '[redacted]')

const requestPreview = await vercelRequest({
	path: '/v13/deployments',
	method: 'POST',
	body: { name: 'example-app' },
	dryRun: true,
})
assert.equal(requestPreview.dryRun, true)
assert.equal(requestPreview.method, 'POST')

await assert.rejects(
	() => createDeployment({ name: 'example-app' }),
	/confirm: true/,
)

console.log('dry-run helper checks passed')