|
| 1 | +import*asosfrom"os" |
| 2 | +import{it,expect}from"vitest" |
| 3 | +import{getHeaders}from"./headers" |
| 4 | + |
| 5 | +constlogger={ |
| 6 | +writeToCoderOutputChannel(){ |
| 7 | +// no-op |
| 8 | +}, |
| 9 | +} |
| 10 | + |
| 11 | +it("should return no headers",async()=>{ |
| 12 | +awaitexpect(getHeaders(undefined,undefined,logger)).resolves.toStrictEqual({}) |
| 13 | +awaitexpect(getHeaders("localhost",undefined,logger)).resolves.toStrictEqual({}) |
| 14 | +awaitexpect(getHeaders(undefined,"command",logger)).resolves.toStrictEqual({}) |
| 15 | +awaitexpect(getHeaders("localhost","",logger)).resolves.toStrictEqual({}) |
| 16 | +awaitexpect(getHeaders("","command",logger)).resolves.toStrictEqual({}) |
| 17 | +awaitexpect(getHeaders("localhost"," ",logger)).resolves.toStrictEqual({}) |
| 18 | +awaitexpect(getHeaders(" ","command",logger)).resolves.toStrictEqual({}) |
| 19 | +}) |
| 20 | + |
| 21 | +it("should return headers",async()=>{ |
| 22 | +awaitexpect(getHeaders("localhost","printf foo=bar'\n'baz=qux",logger)).resolves.toStrictEqual({ |
| 23 | +foo:"bar", |
| 24 | +baz:"qux", |
| 25 | +}) |
| 26 | +awaitexpect(getHeaders("localhost","printf foo=bar'\r\n'baz=qux",logger)).resolves.toStrictEqual({ |
| 27 | +foo:"bar", |
| 28 | +baz:"qux", |
| 29 | +}) |
| 30 | +awaitexpect(getHeaders("localhost","printf foo=bar'\r\n'",logger)).resolves.toStrictEqual({foo:"bar"}) |
| 31 | +awaitexpect(getHeaders("localhost","printf foo=bar",logger)).resolves.toStrictEqual({foo:"bar"}) |
| 32 | +awaitexpect(getHeaders("localhost","printf foo=bar=",logger)).resolves.toStrictEqual({foo:"bar="}) |
| 33 | +awaitexpect(getHeaders("localhost","printf foo=bar=baz",logger)).resolves.toStrictEqual({foo:"bar=baz"}) |
| 34 | +awaitexpect(getHeaders("localhost","printf foo=",logger)).resolves.toStrictEqual({foo:""}) |
| 35 | +}) |
| 36 | + |
| 37 | +it("should error on malformed or empty lines",async()=>{ |
| 38 | +awaitexpect(getHeaders("localhost","printf foo=bar'\r\n\r\n'",logger)).rejects.toMatch(/Malformed/) |
| 39 | +awaitexpect(getHeaders("localhost","printf '\r\n'foo=bar",logger)).rejects.toMatch(/Malformed/) |
| 40 | +awaitexpect(getHeaders("localhost","printf =foo",logger)).rejects.toMatch(/Malformed/) |
| 41 | +awaitexpect(getHeaders("localhost","printf foo",logger)).rejects.toMatch(/Malformed/) |
| 42 | +awaitexpect(getHeaders("localhost","printf ' =foo'",logger)).rejects.toMatch(/Malformed/) |
| 43 | +awaitexpect(getHeaders("localhost","printf 'foo =bar'",logger)).rejects.toMatch(/Malformed/) |
| 44 | +awaitexpect(getHeaders("localhost","printf 'foo foo=bar'",logger)).rejects.toMatch(/Malformed/) |
| 45 | +awaitexpect(getHeaders("localhost","printf ''",logger)).rejects.toMatch(/Malformed/) |
| 46 | +}) |
| 47 | + |
| 48 | +it("should have access to environment variables",async()=>{ |
| 49 | +constcoderUrl="dev.coder.com" |
| 50 | +awaitexpect( |
| 51 | +getHeaders(coderUrl,os.platform()==="win32" ?"printf url=%CODER_URL" :"printf url=$CODER_URL",logger), |
| 52 | +).resolves.toStrictEqual({url:coderUrl}) |
| 53 | +}) |
| 54 | + |
| 55 | +it("should error on non-zero exit",async()=>{ |
| 56 | +awaitexpect(getHeaders("localhost","exit 10",logger)).rejects.toMatch(/exitedunexpectedlywithcode10/) |
| 57 | +}) |