You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.5 KiB
TypeScript
128 lines
4.5 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import {
|
|
runTerraformApply,
|
|
runTerraformInit,
|
|
testRequiredVariables,
|
|
} from "../test";
|
|
|
|
describe("git-config", async () => {
|
|
await runTerraformInit(import.meta.dir);
|
|
|
|
testRequiredVariables(import.meta.dir, {
|
|
agent_id: "foo",
|
|
});
|
|
|
|
it("can run apply allow_username_change and allow_email_change disabled", async () => {
|
|
const state = await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
allow_username_change: "false",
|
|
allow_email_change: "false",
|
|
});
|
|
|
|
const resources = state.resources;
|
|
expect(resources).toHaveLength(6);
|
|
expect(resources).toMatchObject([
|
|
{ type: "coder_workspace", name: "me" },
|
|
{ type: "coder_workspace_owner", name: "me" },
|
|
{ type: "coder_env", name: "git_author_email" },
|
|
{ type: "coder_env", name: "git_author_name" },
|
|
{ type: "coder_env", name: "git_commmiter_email" },
|
|
{ type: "coder_env", name: "git_commmiter_name" },
|
|
]);
|
|
});
|
|
|
|
it("can run apply allow_email_change enabled", async () => {
|
|
const state = await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
allow_email_change: "true",
|
|
});
|
|
|
|
const resources = state.resources;
|
|
expect(resources).toHaveLength(8);
|
|
expect(resources).toMatchObject([
|
|
{ type: "coder_parameter", name: "user_email" },
|
|
{ type: "coder_parameter", name: "username" },
|
|
{ type: "coder_workspace", name: "me" },
|
|
{ type: "coder_workspace_owner", name: "me" },
|
|
{ type: "coder_env", name: "git_author_email" },
|
|
{ type: "coder_env", name: "git_author_name" },
|
|
{ type: "coder_env", name: "git_commmiter_email" },
|
|
{ type: "coder_env", name: "git_commmiter_name" },
|
|
]);
|
|
});
|
|
|
|
it("can run apply allow_email_change enabled", async () => {
|
|
const state = await runTerraformApply(
|
|
import.meta.dir,
|
|
{
|
|
agent_id: "foo",
|
|
allow_username_change: "false",
|
|
allow_email_change: "false",
|
|
},
|
|
{ CODER_WORKSPACE_OWNER_EMAIL: "foo@email.com" },
|
|
);
|
|
|
|
const resources = state.resources;
|
|
expect(resources).toHaveLength(6);
|
|
expect(resources).toMatchObject([
|
|
{ type: "coder_workspace", name: "me" },
|
|
{ type: "coder_workspace_owner", name: "me" },
|
|
{ type: "coder_env", name: "git_author_email" },
|
|
{ type: "coder_env", name: "git_author_name" },
|
|
{ type: "coder_env", name: "git_commmiter_email" },
|
|
{ type: "coder_env", name: "git_commmiter_name" },
|
|
]);
|
|
});
|
|
|
|
it("set custom order for coder_parameter for both fields", async () => {
|
|
const order = 20;
|
|
const state = await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
allow_username_change: "true",
|
|
allow_email_change: "true",
|
|
coder_parameter_order: order.toString(),
|
|
});
|
|
const resources = state.resources;
|
|
expect(resources).toHaveLength(8);
|
|
expect(resources).toMatchObject([
|
|
{ type: "coder_parameter", name: "user_email" },
|
|
{ type: "coder_parameter", name: "username" },
|
|
{ type: "coder_workspace", name: "me" },
|
|
{ type: "coder_workspace_owner", name: "me" },
|
|
{ type: "coder_env", name: "git_author_email" },
|
|
{ type: "coder_env", name: "git_author_name" },
|
|
{ type: "coder_env", name: "git_commmiter_email" },
|
|
{ type: "coder_env", name: "git_commmiter_name" },
|
|
]);
|
|
// user_email order is the same as the order
|
|
expect(resources[0].instances[0].attributes.order).toBe(order);
|
|
// username order is incremented by 1
|
|
// @ts-ignore: Object is possibly 'null'.
|
|
expect(resources[1].instances[0]?.attributes.order).toBe(order + 1);
|
|
});
|
|
|
|
it("set custom order for coder_parameter for just username", async () => {
|
|
const order = 30;
|
|
const state = await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
allow_email_change: "false",
|
|
allow_username_change: "true",
|
|
coder_parameter_order: order.toString(),
|
|
});
|
|
const resources = state.resources;
|
|
expect(resources).toHaveLength(7);
|
|
expect(resources).toMatchObject([
|
|
{ type: "coder_parameter", name: "username" },
|
|
{ type: "coder_workspace", name: "me" },
|
|
{ type: "coder_workspace_owner", name: "me" },
|
|
{ type: "coder_env", name: "git_author_email" },
|
|
{ type: "coder_env", name: "git_author_name" },
|
|
{ type: "coder_env", name: "git_commmiter_email" },
|
|
{ type: "coder_env", name: "git_commmiter_name" },
|
|
]);
|
|
// user_email was not created
|
|
// username order is incremented by 1
|
|
expect(resources[0].instances[0].attributes.order).toBe(order + 1);
|
|
});
|
|
});
|