// 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(appUrl); assert.ok(data.indexOf('') !== -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(`${appUrl}/index.html`); assert.ok(data.indexOf('') !== -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'); }); });