Skip to content

feat: fall back to CODER_HEADER_COMMAND environment variable if not set #160

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Nov 3, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
chore: add tests
  • Loading branch information
JoshVee committed Nov 3, 2023
commit 06c4364a4096dbf59e1197949d1c6489f3a1cfc8
84 changes: 41 additions & 43 deletions src/headers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,54 +9,52 @@ const logger = {
},
}

describe("getHeaders", () => {
it("should return no headers", async () => {
await expect(getHeaders(undefined, undefined, logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", undefined, logger)).resolves.toStrictEqual({})
await expect(getHeaders(undefined, "command", logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", "", logger)).resolves.toStrictEqual({})
await expect(getHeaders("", "command", logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", " ", logger)).resolves.toStrictEqual({})
await expect(getHeaders(" ", "command", logger)).resolves.toStrictEqual({})
})
it("should return no headers", async () => {
await expect(getHeaders(undefined, undefined, logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", undefined, logger)).resolves.toStrictEqual({})
await expect(getHeaders(undefined, "command", logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", "", logger)).resolves.toStrictEqual({})
await expect(getHeaders("", "command", logger)).resolves.toStrictEqual({})
await expect(getHeaders("localhost", " ", logger)).resolves.toStrictEqual({})
await expect(getHeaders(" ", "command", logger)).resolves.toStrictEqual({})
})

it("should return headers", async () => {
await expect(getHeaders("localhost", "printf 'foo=bar\\nbaz=qux'", logger)).resolves.toStrictEqual({
foo: "bar",
baz: "qux",
})
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\nbaz=qux'", logger)).resolves.toStrictEqual({
foo: "bar",
baz: "qux",
})
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\n'", logger)).resolves.toStrictEqual({ foo: "bar" })
await expect(getHeaders("localhost", "printf 'foo=bar'", logger)).resolves.toStrictEqual({ foo: "bar" })
await expect(getHeaders("localhost", "printf 'foo=bar='", logger)).resolves.toStrictEqual({ foo: "bar=" })
await expect(getHeaders("localhost", "printf 'foo=bar=baz'", logger)).resolves.toStrictEqual({ foo: "bar=baz" })
await expect(getHeaders("localhost", "printf 'foo='", logger)).resolves.toStrictEqual({ foo: "" })
it("should return headers", async () => {
await expect(getHeaders("localhost", "printf 'foo=bar\\nbaz=qux'", logger)).resolves.toStrictEqual({
foo: "bar",
baz: "qux",
})

it("should error on malformed or empty lines", async () => {
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\n\\r\\n'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf '\\r\\nfoo=bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf '=foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf ' =foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo =bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo foo=bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf ''", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\nbaz=qux'", logger)).resolves.toStrictEqual({
foo: "bar",
baz: "qux",
})
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\n'", logger)).resolves.toStrictEqual({ foo: "bar" })
await expect(getHeaders("localhost", "printf 'foo=bar'", logger)).resolves.toStrictEqual({ foo: "bar" })
await expect(getHeaders("localhost", "printf 'foo=bar='", logger)).resolves.toStrictEqual({ foo: "bar=" })
await expect(getHeaders("localhost", "printf 'foo=bar=baz'", logger)).resolves.toStrictEqual({ foo: "bar=baz" })
await expect(getHeaders("localhost", "printf 'foo='", logger)).resolves.toStrictEqual({ foo: "" })
})

it("should have access to environment variables", async () => {
const coderUrl = "dev.coder.com"
await expect(
getHeaders(coderUrl, os.platform() === "win32" ? "printf url=%CODER_URL%" : "printf url=$CODER_URL", logger),
).resolves.toStrictEqual({ url: coderUrl })
})
it("should error on malformed or empty lines", async () => {
await expect(getHeaders("localhost", "printf 'foo=bar\\r\\n\\r\\n'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf '\\r\\nfoo=bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf '=foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf ' =foo'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo =bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf 'foo foo=bar'", logger)).rejects.toMatch(/Malformed/)
await expect(getHeaders("localhost", "printf ''", logger)).rejects.toMatch(/Malformed/)
})

it("should error on non-zero exit", async () => {
await expect(getHeaders("localhost", "exit 10", logger)).rejects.toMatch(/exited unexpectedly with code 10/)
})
it("should have access to environment variables", async () => {
const coderUrl = "dev.coder.com"
await expect(
getHeaders(coderUrl, os.platform() === "win32" ? "printf url=%CODER_URL%" : "printf url=$CODER_URL", logger),
).resolves.toStrictEqual({ url: coderUrl })
})

it("should error on non-zero exit", async () => {
await expect(getHeaders("localhost", "exit 10", logger)).rejects.toMatch(/exited unexpectedly with code 10/)
})

describe("getHeaderCommand", () => {
Expand Down