const { test } = require('node:test') const assert = require('node:assert/strict') const requireInternalKey = require('../src/middleware/requireInternalKey') const { startApp } = require('./_helper') const KEY = 'test-internal-key-1234567890' async function withApp(run) { const prev = process.env.BOT_INTERNAL_KEY process.env.BOT_INTERNAL_KEY = KEY const app = await startApp((a) => { a.get('/internal/thing', requireInternalKey, (req, res) => res.json({ ok: true })) }) try { await run(app) } finally { await app.close() if (prev === undefined) delete process.env.BOT_INTERNAL_KEY else process.env.BOT_INTERNAL_KEY = prev } } test('requireInternalKey: 401 when no key header is sent', async () => { await withApp(async (app) => { const res = await fetch(`${app.url}/internal/thing`) assert.equal(res.status, 401) }) }) test('requireInternalKey: 401 on a wrong key', async () => { await withApp(async (app) => { const res = await fetch(`${app.url}/internal/thing`, { headers: { 'X-Internal-Key': 'nope' }, }) assert.equal(res.status, 401) }) }) test('requireInternalKey: 200 with the correct key', async () => { await withApp(async (app) => { const res = await fetch(`${app.url}/internal/thing`, { headers: { 'X-Internal-Key': KEY }, }) assert.equal(res.status, 200) const body = await res.json() assert.deepEqual(body, { ok: true }) }) }) test('requireInternalKey: 401 when the expected key is empty (never a wildcard)', async () => { const prev = process.env.BOT_INTERNAL_KEY process.env.BOT_INTERNAL_KEY = '' const app = await startApp((a) => { a.get('/internal/thing', requireInternalKey, (req, res) => res.json({ ok: true })) }) try { // Even sending an empty key must not match an empty expected key. const res = await fetch(`${app.url}/internal/thing`, { headers: { 'X-Internal-Key': '' } }) assert.equal(res.status, 401) } finally { await app.close() if (prev === undefined) delete process.env.BOT_INTERNAL_KEY else process.env.BOT_INTERNAL_KEY = prev } })