feat(git-config): allow data.coder_workspace.me.owner_email to be blank (#222)
This commit is contained in:
69
git-config/main.test.ts
Normal file
69
git-config/main.test.ts
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
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(3);
|
||||||
|
expect(resources).toMatchObject([
|
||||||
|
{ type: "coder_workspace", name: "me" },
|
||||||
|
{ type: "coder_env", name: "git_author_name" },
|
||||||
|
{ 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(5);
|
||||||
|
expect(resources).toMatchObject([
|
||||||
|
{ type: "coder_parameter", name: "user_email" },
|
||||||
|
{ type: "coder_parameter", name: "username" },
|
||||||
|
{ type: "coder_workspace", name: "me" },
|
||||||
|
{ type: "coder_env", name: "git_author_name" },
|
||||||
|
{ 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@emai.com" },
|
||||||
|
);
|
||||||
|
|
||||||
|
const resources = state.resources;
|
||||||
|
expect(resources).toHaveLength(5);
|
||||||
|
expect(resources).toMatchObject([
|
||||||
|
{ type: "coder_workspace", 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" },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -65,10 +65,12 @@ resource "coder_env" "git_author_email" {
|
|||||||
agent_id = var.agent_id
|
agent_id = var.agent_id
|
||||||
name = "GIT_AUTHOR_EMAIL"
|
name = "GIT_AUTHOR_EMAIL"
|
||||||
value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email)
|
value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email)
|
||||||
|
count = data.coder_workspace.me.owner_email != "" ? 1 : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "coder_env" "git_commmiter_email" {
|
resource "coder_env" "git_commmiter_email" {
|
||||||
agent_id = var.agent_id
|
agent_id = var.agent_id
|
||||||
name = "GIT_COMMITTER_EMAIL"
|
name = "GIT_COMMITTER_EMAIL"
|
||||||
value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email)
|
value = coalesce(try(data.coder_parameter.user_email[0].value, ""), data.coder_workspace.me.owner_email)
|
||||||
|
count = data.coder_workspace.me.owner_email != "" ? 1 : 0
|
||||||
}
|
}
|
||||||
|
|||||||
2
test.ts
2
test.ts
@@ -171,9 +171,9 @@ export const testRequiredVariables = (
|
|||||||
export const runTerraformApply = async (
|
export const runTerraformApply = async (
|
||||||
dir: string,
|
dir: string,
|
||||||
vars: Record<string, string>,
|
vars: Record<string, string>,
|
||||||
|
env: Record<string, string> = {},
|
||||||
): Promise<TerraformState> => {
|
): Promise<TerraformState> => {
|
||||||
const stateFile = `${dir}/${crypto.randomUUID()}.tfstate`;
|
const stateFile = `${dir}/${crypto.randomUUID()}.tfstate`;
|
||||||
const env = {};
|
|
||||||
Object.keys(vars).forEach((key) => (env[`TF_VAR_${key}`] = vars[key]));
|
Object.keys(vars).forEach((key) => (env[`TF_VAR_${key}`] = vars[key]));
|
||||||
const proc = spawn(
|
const proc = spawn(
|
||||||
[
|
[
|
||||||
|
|||||||
Reference in New Issue
Block a user