74 lines
2.5 KiB
TypeScript
74 lines
2.5 KiB
TypeScript
// For more information about this file see https://dove.feathersjs.com/guides/cli/app.test.html
|
|
import assert from 'assert';
|
|
import axios from 'axios';
|
|
import type { Server } from 'http';
|
|
import { app } from '../src/app';
|
|
|
|
const port = app.get('port');
|
|
const appUrl = `http://${app.get('host')}:${port}`;
|
|
|
|
describe('Feathers application tests', () => {
|
|
let server: Server;
|
|
|
|
before(async () => {
|
|
server = await app.listen(port);
|
|
});
|
|
|
|
after(async () => {
|
|
await app.teardown();
|
|
});
|
|
|
|
it('starts and shows the index page', async () => {
|
|
const { data } = await axios.get<string>(appUrl);
|
|
|
|
assert.ok(data.indexOf('<html lang="en">') !== -1);
|
|
});
|
|
|
|
it('shows a 404 JSON error', async () => {
|
|
try {
|
|
await axios.get(`${appUrl}/path/to/nowhere`, {
|
|
responseType: 'json',
|
|
});
|
|
assert.fail('should never get here');
|
|
} catch (error: any) {
|
|
const { response } = error;
|
|
assert.strictEqual(response?.status, 404);
|
|
assert.strictEqual(response?.data?.code, 404);
|
|
assert.strictEqual(response?.data?.name, 'NotFound');
|
|
}
|
|
});
|
|
|
|
it('requires authentication for aliases endpoint', async () => {
|
|
try {
|
|
await axios.get(`${appUrl}/aliases`, {
|
|
responseType: 'json',
|
|
});
|
|
assert.fail('should never get here');
|
|
} catch (error: any) {
|
|
const { response } = error;
|
|
assert.strictEqual(response?.status, 401);
|
|
assert.strictEqual(response?.data?.code, 401);
|
|
assert.strictEqual(response?.data?.name, 'NotAuthenticated');
|
|
}
|
|
});
|
|
|
|
it('serves static files from public directory', async () => {
|
|
const { data } = await axios.get<string>(`${appUrl}/index.html`);
|
|
|
|
assert.ok(data.indexOf('<html lang="en">') !== -1);
|
|
assert.ok(data.indexOf('WildDuck') !== -1);
|
|
});
|
|
|
|
it('has all services registered', () => {
|
|
assert.ok(app.service('aliases'), 'Aliases service registered');
|
|
assert.ok(app.service('auth-oidc'), 'Auth-OIDC service registered');
|
|
assert.ok(app.service('auth-oidc/callback'), 'Auth-OIDC callback service registered');
|
|
});
|
|
|
|
it('has correct configuration', () => {
|
|
assert.strictEqual(typeof app.get('port'), 'number', 'Port is a number');
|
|
assert.strictEqual(typeof app.get('host'), 'string', 'Host is a string');
|
|
assert.strictEqual(app.get('port'), 8998, 'Port is 8998 in test mode');
|
|
});
|
|
});
|