'use strict' const test = require('ava') const Hapi = require('@hapi/hapi') const UserService = require('../lib/services/user.js') const plugin = require('../lib/plugins/user.js') const params = { hashedSessionToken: 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk', // Replace to get hashToMatchNotFound // hashedSessionToken : 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk1' } // Existing activeSession to test against const activeSessions = { 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk': { email: 'test@testemail.com', name: 'john_doe', seeking: 'position', sessionToken: 'efasdf;laksdfja;lkdjfa;lkdjf', expiration: Date.now() + 600000, // Should return error took too long to respond to email // expiration: 600000, emailWasRespondedTo: false, accessToken: null, }, } const mockReturn = { hashesMatch: true, } const pathToTest = { method: 'GET', url: `/verify/${params.hashedSessionToken}`, } test(`path /verify/${params.hashedSessionToken} should return OK on GET`, async t => { /** * Create a new server and register services, * models and routes for testing */ const server = Hapi.server() server.registrations = { 'main-app-plugin': { options: {}, }, } /** * Register Routes and Services as usual */ await plugin.register(server) server.services()['userService'] = new UserService(server) server.services()['userService']['activeSessions'] = activeSessions /** * Test the server with registered models and services */ const { payload } = await server.inject(pathToTest) const res = JSON.parse(payload) t.deepEqual(res.ok, true) t.deepEqual( activeSessions[params.hashedSessionToken].emailWasRespondedTo, true, ) t.deepEqual(res.data, mockReturn) server.stop() })