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