1
0
mirror of https://github.com/coder/code-server.git synced 2024-12-05 07:13:06 +08:00
code-server/test/unit/node/routes/health.test.ts
Asher d477972c68
Add origin checks to web sockets (#6048)
* Move splitOnFirstEquals to util

I will be making use of this to parse the forwarded header.

* Type splitOnFirstEquals with two items

Also add some test cases.

* Check origin header on web sockets

* Update changelog with origin check

* Fix web sockets not closing with error code
2023-03-03 03:12:34 -06:00

43 lines
1.3 KiB
TypeScript

import * as httpserver from "../../../utils/httpserver"
import * as integration from "../../../utils/integration"
describe("health", () => {
let codeServer: httpserver.HttpServer | undefined
afterEach(async () => {
if (codeServer) {
await codeServer.dispose()
codeServer = undefined
}
})
it("/healthz", async () => {
codeServer = await integration.setup(["--auth=none"], "")
const resp = await codeServer.fetch("/healthz")
expect(resp.status).toBe(200)
const json = await resp.json()
expect(json).toStrictEqual({ lastHeartbeat: 0, status: "expired" })
})
it("/healthz (websocket)", async () => {
codeServer = await integration.setup(["--auth=none"], "")
const ws = codeServer.ws("/healthz")
const message = await new Promise((resolve, reject) => {
ws.on("error", (err) => {
console.error("[healthz]", err)
})
ws.on("message", (message) => {
try {
const j = JSON.parse(message.toString())
resolve(j)
} catch (error) {
reject(error)
}
})
ws.on("open", () => ws.send(JSON.stringify({ event: "health" })))
})
ws.terminate()
expect(message).toStrictEqual({ event: "health", status: "expired", lastHeartbeat: 0 })
})
})