serverus/tests/07_test_route_sorting.test.ts

48 lines
1.1 KiB
TypeScript

import * as asserts from '@std/assert';
import { EPHEMERAL_SERVER, get_ephemeral_listen_server } from './helpers.ts';
Deno.test({
name: 'test that routes are sorted most to least specific',
permissions: {
env: true,
read: true,
write: true,
net: true
},
fn: async () => {
let test_server_info: EPHEMERAL_SERVER | null = null;
try {
Deno.env.set('SERVERUS_ROOT', './tests/www');
test_server_info = await get_ephemeral_listen_server();
const echoes: Record<string, string> = {
'': 'echo! .... echo. ................... echo?',
hi: 'hello',
yo: 'yo',
'whoa there': 'whoa there'
};
for await (const key of Object.keys(echoes)) {
const response = await fetch(`http://${test_server_info.hostname}:${test_server_info.port}/echo/${key}`, {
method: 'GET'
});
const body = await response.text();
asserts.assert(response.ok);
asserts.assert(body);
console.dir({
body,
key
});
asserts.assertEquals(body, echoes[key]);
}
} finally {
Deno.env.delete('SERVERUS_ROOT');
if (test_server_info) {
await test_server_info?.server?.stop();
}
}
}
});