| import fetch from 'node-fetch' |
|
|
| export const TEST_PROJECT_NAME = 'vtest314-e2e-tests' |
| export const TEST_TEAM_NAME = process.env.VERCEL_TEST_TEAM |
| export const TEST_TOKEN = process.env.VERCEL_TEST_TOKEN |
|
|
| export async function resetProject({ |
| teamId = TEST_TEAM_NAME, |
| projectName = TEST_PROJECT_NAME, |
| disableDeploymentProtection, |
| }) { |
| console.log(`Resetting project ${teamId}/${projectName}`) |
| |
| const deleteRes = await fetch( |
| `https://vercel.com/api/v8/projects/${encodeURIComponent( |
| projectName |
| )}?teamId=${teamId}`, |
| { |
| method: 'DELETE', |
| headers: { |
| Authorization: `Bearer ${TEST_TOKEN}`, |
| }, |
| } |
| ) |
|
|
| if (!deleteRes.ok && deleteRes.status !== 404) { |
| throw new Error( |
| `Failed to delete project got status ${ |
| deleteRes.status |
| }, ${await deleteRes.text()}` |
| ) |
| } |
|
|
| const createRes = await fetch( |
| `https://vercel.com/api/v8/projects?teamId=${teamId}`, |
| { |
| method: 'POST', |
| headers: { |
| 'content-type': 'application/json', |
| Authorization: `Bearer ${TEST_TOKEN}`, |
| }, |
| body: JSON.stringify({ |
| framework: 'nextjs', |
| name: projectName, |
| }), |
| } |
| ) |
|
|
| if (!createRes.ok) { |
| throw new Error( |
| `Failed to create project. Got status: ${ |
| createRes.status |
| }, ${await createRes.text()}` |
| ) |
| } |
|
|
| const { id: projectId } = await createRes.json() |
|
|
| if (!projectId) { |
| throw new Error("Couldn't get projectId from create project response") |
| } |
|
|
| if (disableDeploymentProtection) { |
| console.log('Disabling deployment protection...') |
|
|
| const patchRes = await fetch( |
| `https://vercel.com/api/v8/projects/${encodeURIComponent( |
| projectId |
| )}?teamId=${teamId}`, |
| { |
| method: 'PATCH', |
| headers: { |
| 'content-type': 'application/json', |
| Authorization: `Bearer ${TEST_TOKEN}`, |
| }, |
| body: JSON.stringify({ |
| ssoProtection: null, |
| }), |
| } |
| ) |
|
|
| if (!patchRes.ok) { |
| throw new Error( |
| `Failed to disable deployment protection. Got status: ${ |
| patchRes.status |
| }, ${await patchRes.text()}` |
| ) |
| } |
| } |
|
|
| console.log( |
| `Successfully created fresh Vercel project ${teamId}/${projectName}` |
| ) |
| } |
|
|