85 lines
2.2 KiB
TypeScript
85 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import {
|
|
execContainer,
|
|
findResourceInstance,
|
|
removeContainer,
|
|
runContainer,
|
|
runTerraformApply,
|
|
runTerraformInit,
|
|
testRequiredVariables,
|
|
} from "~test";
|
|
|
|
describe("code-server", async () => {
|
|
await runTerraformInit(import.meta.dir);
|
|
|
|
testRequiredVariables(import.meta.dir, {
|
|
agent_id: "foo",
|
|
});
|
|
|
|
it("use_cached and offline can not be used together", () => {
|
|
const t = async () => {
|
|
await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
use_cached: "true",
|
|
offline: "true",
|
|
});
|
|
};
|
|
expect(t).toThrow("Offline and Use Cached can not be used together");
|
|
});
|
|
|
|
it("offline and extensions can not be used together", () => {
|
|
const t = async () => {
|
|
await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
offline: "true",
|
|
extensions: '["1", "2"]',
|
|
});
|
|
};
|
|
expect(t).toThrow("Offline mode does not allow extensions to be installed");
|
|
});
|
|
|
|
it("installs and runs code-server", async () => {
|
|
const state = await runTerraformApply(import.meta.dir, {
|
|
agent_id: "foo",
|
|
});
|
|
|
|
const id = await runContainer("ubuntu:latest");
|
|
try {
|
|
await execContainer(id, [
|
|
"bash",
|
|
"-c",
|
|
"apt-get update && apt-get install -y curl",
|
|
]);
|
|
|
|
const script = findResourceInstance(state, "coder_script").script;
|
|
const result = await execContainer(id, ["bash", "-c", script]);
|
|
if (result.exitCode !== 0) {
|
|
console.log(result.stdout);
|
|
console.log(result.stderr);
|
|
}
|
|
expect(result.exitCode).toBe(0);
|
|
|
|
const version = await execContainer(id, [
|
|
"/tmp/code-server/bin/code-server",
|
|
"--version",
|
|
]);
|
|
expect(version.exitCode).toBe(0);
|
|
expect(version.stdout).toMatch(/\d+\.\d+\.\d+/);
|
|
|
|
const health = await execContainer(id, [
|
|
"curl",
|
|
"--retry",
|
|
"10",
|
|
"--retry-delay",
|
|
"1",
|
|
"--retry-all-errors",
|
|
"-sf",
|
|
"http://localhost:13337/healthz",
|
|
]);
|
|
expect(health.exitCode).toBe(0);
|
|
} finally {
|
|
await removeContainer(id);
|
|
}
|
|
}, 60000);
|
|
});
|