Compare commits

..

No commits in common. "1a98012cbd8f5401f3edcfe154dd0f9c2aa0729b" and "587699d7b3a523c977a977d8cdadc737df65189d" have entirely different histories.

2 changed files with 69 additions and 92 deletions

View file

@ -78,7 +78,7 @@ jobs:
e2e-test: e2e-test:
needs: [ ] needs: [ ]
runs-on: ubuntu-24.04-arm runs-on: ARM64
steps: steps:
- run: git config --global core.autocrlf false # Mainly for Windows - run: git config --global core.autocrlf false # Mainly for Windows
- uses: actions/checkout@v4 - uses: actions/checkout@v4

View file

@ -1,99 +1,76 @@
const { describe, test } = require("node:test"); const test = require("node:test");
const assert = require("node:assert"); const assert = require("node:assert");
const { websocket } = require("../../server/monitor-types/websocket"); const { websocket } = require("../../server/monitor-types/websocket");
const { UP, DOWN, PENDING } = require("../../src/util"); const { UP, DOWN, PENDING } = require("../../src/util");
describe("Websocket Test", { test("Test Websocket TLS", async () => {
}, () => { const websocketMonitor = new websocket();
test("Non Websocket Server", {}, async () => {
const websocketMonitor = new websocket();
const monitor = { const monitor = {
wsurl: "wss://example.org", wsurl: "wss://echo.websocket.org",
wsIgnoreHeaders: false, wsIgnoreHeaders: false,
}; };
const heartbeat = { const heartbeat = {
msg: "", msg: "",
status: PENDING, status: PENDING,
}; };
await websocketMonitor.check(monitor, heartbeat, {}); await websocketMonitor.check(monitor, heartbeat, {});
assert.strictEqual(heartbeat.status, DOWN); assert.strictEqual(heartbeat.status, UP);
assert.strictEqual(heartbeat.msg, "Unexpected server response: 200"); assert.strictEqual(heartbeat.msg, "101 - OK");
}); });
test("Secure Websocket", async () => { test("Test Websocket non TLS", async () => {
const websocketMonitor = new websocket(); const websocketMonitor = new websocket();
const monitor = { const monitor = {
wsurl: "wss://echo.websocket.org", wsurl: "ws://ws.ifelse.io",
wsIgnoreHeaders: false, wsIgnoreHeaders: false,
}; };
const heartbeat = { const heartbeat = {
msg: "", msg: "",
status: PENDING, status: PENDING,
}; };
await websocketMonitor.check(monitor, heartbeat, {}); await websocketMonitor.check(monitor, heartbeat, {});
assert.strictEqual(heartbeat.status, UP); assert.strictEqual(heartbeat.status, UP);
assert.strictEqual(heartbeat.msg, "101 - OK"); assert.strictEqual(heartbeat.msg, "101 - OK");
}); });
test("Insecure Websocket", { test("Test a non compliant WS server without ignore", async () => {
skip: !!process.env.CI, const websocketMonitor = new websocket();
}, async () => {
const websocketMonitor = new websocket(); const monitor = {
wsurl: "wss://c.img-cdn.net/yE4s7KehTFyj/",
const monitor = { wsIgnoreHeaders: false,
wsurl: "ws://ws.ifelse.io", };
wsIgnoreHeaders: false,
}; const heartbeat = {
msg: "",
const heartbeat = { status: PENDING,
msg: "", };
status: PENDING,
}; await websocketMonitor.check(monitor, heartbeat, {});
assert.strictEqual(heartbeat.status, DOWN);
await websocketMonitor.check(monitor, heartbeat, {}); assert.strictEqual(heartbeat.msg, "Invalid Sec-WebSocket-Accept header");
assert.strictEqual(heartbeat.status, UP); });
assert.strictEqual(heartbeat.msg, "101 - OK");
}); test("Test a non compliant WS server with ignore", async () => {
const websocketMonitor = new websocket();
test("Test a non compliant WS server without ignore", async () => {
const websocketMonitor = new websocket(); const monitor = {
wsurl: "wss://c.img-cdn.net/yE4s7KehTFyj/",
const monitor = { wsIgnoreHeaders: true,
wsurl: "wss://c.img-cdn.net/yE4s7KehTFyj/", };
wsIgnoreHeaders: false,
}; const heartbeat = {
msg: "",
const heartbeat = { status: PENDING,
msg: "", };
status: PENDING,
}; await websocketMonitor.check(monitor, heartbeat, {});
assert.strictEqual(heartbeat.status, UP);
await websocketMonitor.check(monitor, heartbeat, {}); assert.strictEqual(heartbeat.msg, "101 - OK");
assert.strictEqual(heartbeat.status, DOWN);
assert.strictEqual(heartbeat.msg, "Invalid Sec-WebSocket-Accept header");
});
test("Test a non compliant WS server with ignore", async () => {
const websocketMonitor = new websocket();
const monitor = {
wsurl: "wss://c.img-cdn.net/yE4s7KehTFyj/",
wsIgnoreHeaders: true,
};
const heartbeat = {
msg: "",
status: PENDING,
};
await websocketMonitor.check(monitor, heartbeat, {});
assert.strictEqual(heartbeat.status, UP);
assert.strictEqual(heartbeat.msg, "101 - OK");
});
}); });