mirror of
https://github.com/FJurmanovic/sugarr.git
synced 2026-11-11 07:41:08 +00:00
Add core server Controller base, auth hook, and buildServer
This commit is contained in:
41
test/core/server/authHook.test.ts
Normal file
41
test/core/server/authHook.test.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import Fastify from 'fastify';
|
||||
import { registerAuthHook } from '../../../src/core/server/authHook';
|
||||
|
||||
function buildApp(secretKey: string) {
|
||||
const app = Fastify();
|
||||
registerAuthHook(app, secretKey);
|
||||
app.get('/health', async () => ({ status: 'ok' }));
|
||||
app.get('/recommendations', async () => ({ items: [] }));
|
||||
return app;
|
||||
}
|
||||
|
||||
describe('registerAuthHook', () => {
|
||||
it('allows all requests through when secretKey is empty', async () => {
|
||||
const app = buildApp('');
|
||||
const res = await app.inject({ method: 'GET', url: '/recommendations' });
|
||||
expect(res.statusCode).toBe(200);
|
||||
});
|
||||
|
||||
it('always exempts /health even when a secret is configured', async () => {
|
||||
const app = buildApp('s3cret');
|
||||
const res = await app.inject({ method: 'GET', url: '/health' });
|
||||
expect(res.statusCode).toBe(200);
|
||||
});
|
||||
|
||||
it('rejects requests without a matching bearer token', async () => {
|
||||
const app = buildApp('s3cret');
|
||||
const res = await app.inject({ method: 'GET', url: '/recommendations' });
|
||||
expect(res.statusCode).toBe(401);
|
||||
});
|
||||
|
||||
it('allows requests with the correct bearer token', async () => {
|
||||
const app = buildApp('s3cret');
|
||||
const res = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/recommendations',
|
||||
headers: { authorization: 'Bearer s3cret' },
|
||||
});
|
||||
expect(res.statusCode).toBe(200);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user