49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
Object.assign(process.env, {
|
|
NODE_ENV: "test",
|
|
DISCORD_GUILD_ID: "1",
|
|
SHINUWA_USER_ID: "1",
|
|
WEB_SERVER_PORT: "3000",
|
|
WEB_API_KEY: "test-key",
|
|
DISCORD_APPLICATION_ID: "1",
|
|
DISCORD_TOKEN: "test-token",
|
|
VOICE_CHANNEL_ID: "1",
|
|
TEXT_CHANNEL_ID: "1",
|
|
GAME_SERVERS_MESSAGE_ID: "1",
|
|
});
|
|
|
|
const { authMiddleware } = await import("../src/web/middlewares/auth.js");
|
|
|
|
function runAuth(authorization) {
|
|
let nextCalled = false;
|
|
let statusCode;
|
|
let payload;
|
|
const request = { headers: { authorization } };
|
|
const response = {
|
|
status(code) {
|
|
statusCode = code;
|
|
return this;
|
|
},
|
|
json(value) {
|
|
payload = value;
|
|
return this;
|
|
},
|
|
};
|
|
|
|
authMiddleware(request, response, () => {
|
|
nextCalled = true;
|
|
});
|
|
return { nextCalled, statusCode, payload };
|
|
}
|
|
|
|
test("API authentication accepts only an exact Bearer token", () => {
|
|
assert.equal(runAuth("Bearer test-key").nextCalled, true);
|
|
assert.deepEqual(runAuth("test-key"), {
|
|
nextCalled: false,
|
|
statusCode: 401,
|
|
payload: { error: "Unauthorized" },
|
|
});
|
|
assert.equal(runAuth("Bearer wrong-key").statusCode, 401);
|
|
});
|