|
|
@@ -6,14 +6,21 @@ import Controller, {
|
|
|
} from 'if/controllers/controller.class.ts';
|
|
|
import { Logger } from 'infra/logger.ts';
|
|
|
|
|
|
+const testLogger = Logger.getInstance('test');
|
|
|
+
|
|
|
Deno.test('Controller class', async () => {
|
|
|
const mockHandler = (req: Request) => new Response('Hello, world!');
|
|
|
- const controller = new Controller({
|
|
|
+ const mockHandlers = {
|
|
|
'/_GET': mockHandler,
|
|
|
- });
|
|
|
+ '/x_POST': mockHandler,
|
|
|
+ };
|
|
|
+
|
|
|
+ const controller = new Controller({}, testLogger);
|
|
|
+ controller.setHandlers(mockHandlers);
|
|
|
|
|
|
// Test that the handler was stored correctly
|
|
|
assert(controller.hasHandler('/', 'GET'));
|
|
|
+ assertEquals(controller.getHandlers(), mockHandlers);
|
|
|
|
|
|
// Test the response method
|
|
|
const req = new Request('http://localhost/');
|
|
|
@@ -28,6 +35,17 @@ Deno.test('Controller class', async () => {
|
|
|
const jsonRes = controller.responseJSON(req, { message: 'Hello, world!' });
|
|
|
assertEquals(jsonRes.status, 200);
|
|
|
assertEquals(await jsonRes.json(), { message: 'Hello, world!' });
|
|
|
+
|
|
|
+ // Test basic auth username / password
|
|
|
+ const authReq = new Request('http://localhost/', {
|
|
|
+ headers: {
|
|
|
+ Authorization: 'Basic ZGVtbzpwQDU1dzByZA==',
|
|
|
+ },
|
|
|
+ });
|
|
|
+ const authRes = controller.response(authReq, 'Hello, world!');
|
|
|
+ assertEquals(authRes.status, 200);
|
|
|
+ const lastMessage = testLogger.getLastMessage();
|
|
|
+ assert(lastMessage?.startsWith('[INFO] GET / demo '));
|
|
|
});
|
|
|
|
|
|
Deno.test('Controller class error handling', async () => {
|
|
|
@@ -42,9 +60,8 @@ Deno.test('Controller class error handling', async () => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const controller = new Controller({
|
|
|
- '/_GET': errorHandler,
|
|
|
- });
|
|
|
+ const controller = new Controller();
|
|
|
+ controller.setHandler('/', 'GET', errorHandler);
|
|
|
|
|
|
// Test that the handler was stored correctly
|
|
|
assert(controller.hasHandler('/', 'GET'));
|
|
|
@@ -67,10 +84,7 @@ Deno.test('Controller class error handling', async () => {
|
|
|
Deno.test({
|
|
|
name: 'Controller should log debug message for health check user agent',
|
|
|
fn: async () => {
|
|
|
- let logger = Logger.getInstance('test');
|
|
|
-
|
|
|
const userAgent = Deno.env.get('DOCKER_USER_AGENT') ?? '';
|
|
|
- console.log(userAgent);
|
|
|
const req = new Request('http://localhost', {
|
|
|
method: 'GET',
|
|
|
headers: new Headers({
|
|
|
@@ -80,11 +94,11 @@ Deno.test({
|
|
|
const handler: ControllerHandler = (req: Request) => {
|
|
|
return controller.response(req, 'Hello, World!');
|
|
|
};
|
|
|
- const controller = new Controller({ '/_GET': handler }, logger);
|
|
|
+ const controller = new Controller({ '/_GET': handler }, testLogger);
|
|
|
const response = await controller.getHandler('/', 'GET')(req);
|
|
|
|
|
|
// Check if the expected debug message was logged
|
|
|
- const debugMessage = logger.getMessages().find((message) =>
|
|
|
+ const debugMessage = testLogger.getMessages().find((message) =>
|
|
|
message.startsWith('[DEBUG] ') && message.endsWith(`(${userAgent})`)
|
|
|
);
|
|
|
|