mirror of
https://github.com/coder/coder.git
synced 2026-06-04 05:28:20 +00:00
962608cde0
Closes coder/internal#168 Gets rid of the "global state" authentication, and adds a `login` helper which should be called at the beginning of each test. This means that not every test needs to authenticated as admin, and we can even have tests that encompass multiple permission levels. We also now create more than just the single admin user during setup, so that we can have a set of users to pick from as appropriate.
139 lines
4.2 KiB
TypeScript
139 lines
4.2 KiB
TypeScript
import { test } from "@playwright/test";
|
|
import {
|
|
createTemplate,
|
|
createWorkspace,
|
|
echoResponsesWithParameters,
|
|
updateTemplate,
|
|
updateWorkspace,
|
|
updateWorkspaceParameters,
|
|
verifyParameters,
|
|
} from "../../helpers";
|
|
import { login } from "../../helpers";
|
|
import { beforeCoderTest } from "../../hooks";
|
|
import {
|
|
fifthParameter,
|
|
firstParameter,
|
|
secondBuildOption,
|
|
secondParameter,
|
|
sixthParameter,
|
|
} from "../../parameters";
|
|
import type { RichParameter } from "../../provisionerGenerated";
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
beforeCoderTest(page);
|
|
await login(page);
|
|
});
|
|
|
|
test("update workspace, new optional, immutable parameter added", async ({
|
|
page,
|
|
}) => {
|
|
const richParameters: RichParameter[] = [firstParameter, secondParameter];
|
|
const template = await createTemplate(
|
|
page,
|
|
echoResponsesWithParameters(richParameters),
|
|
);
|
|
|
|
const workspaceName = await createWorkspace(page, template);
|
|
|
|
// Verify that parameter values are default.
|
|
await verifyParameters(page, workspaceName, richParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondParameter.name, value: secondParameter.defaultValue },
|
|
]);
|
|
|
|
// Push updated template.
|
|
const updatedRichParameters = [...richParameters, fifthParameter];
|
|
await updateTemplate(
|
|
page,
|
|
"coder",
|
|
template,
|
|
echoResponsesWithParameters(updatedRichParameters),
|
|
);
|
|
|
|
// Now, update the workspace, and select the value for immutable parameter.
|
|
await updateWorkspace(page, workspaceName, updatedRichParameters, [
|
|
{ name: fifthParameter.name, value: fifthParameter.options[0].value },
|
|
]);
|
|
|
|
// Verify parameter values.
|
|
await verifyParameters(page, workspaceName, updatedRichParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondParameter.name, value: secondParameter.defaultValue },
|
|
{ name: fifthParameter.name, value: fifthParameter.options[0].value },
|
|
]);
|
|
});
|
|
|
|
test("update workspace, new required, mutable parameter added", async ({
|
|
page,
|
|
}) => {
|
|
const richParameters: RichParameter[] = [firstParameter, secondParameter];
|
|
const template = await createTemplate(
|
|
page,
|
|
echoResponsesWithParameters(richParameters),
|
|
);
|
|
|
|
const workspaceName = await createWorkspace(page, template);
|
|
|
|
// Verify that parameter values are default.
|
|
await verifyParameters(page, workspaceName, richParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondParameter.name, value: secondParameter.defaultValue },
|
|
]);
|
|
|
|
// Push updated template.
|
|
const updatedRichParameters = [...richParameters, sixthParameter];
|
|
await updateTemplate(
|
|
page,
|
|
"coder",
|
|
template,
|
|
echoResponsesWithParameters(updatedRichParameters),
|
|
);
|
|
|
|
// Now, update the workspace, and provide the parameter value.
|
|
const buildParameters = [{ name: sixthParameter.name, value: "99" }];
|
|
await updateWorkspace(
|
|
page,
|
|
workspaceName,
|
|
updatedRichParameters,
|
|
buildParameters,
|
|
);
|
|
|
|
// Verify parameter values.
|
|
await verifyParameters(page, workspaceName, updatedRichParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondParameter.name, value: secondParameter.defaultValue },
|
|
...buildParameters,
|
|
]);
|
|
});
|
|
|
|
test("update workspace with ephemeral parameter enabled", async ({ page }) => {
|
|
const richParameters: RichParameter[] = [firstParameter, secondBuildOption];
|
|
const template = await createTemplate(
|
|
page,
|
|
echoResponsesWithParameters(richParameters),
|
|
);
|
|
|
|
const workspaceName = await createWorkspace(page, template);
|
|
|
|
// Verify that parameter values are default.
|
|
await verifyParameters(page, workspaceName, richParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
|
|
]);
|
|
|
|
// Now, update the workspace, and select the value for ephemeral parameter.
|
|
const buildParameters = [{ name: secondBuildOption.name, value: "true" }];
|
|
await updateWorkspaceParameters(
|
|
page,
|
|
workspaceName,
|
|
richParameters,
|
|
buildParameters,
|
|
);
|
|
|
|
// Verify that parameter values are default.
|
|
await verifyParameters(page, workspaceName, richParameters, [
|
|
{ name: firstParameter.name, value: firstParameter.defaultValue },
|
|
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
|
|
]);
|
|
});
|