You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict'
  2. const test = require('ava')
  3. const { stub } = require('sinon')
  4. const Hapi = require('@hapi/hapi')
  5. const UserService = require('../lib/services/user.js')
  6. const plugin = require('../lib/plugins/user.js')
  7. const payload = 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk'
  8. const hashedSessionToken = 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk'
  9. const activeSessions = {
  10. 'a;lsdkfja;ldfjka;ldfja;lskjdfa;dfjk': {
  11. email: 'test@testemail.com',
  12. name: 'john_doe',
  13. seeking: 'position',
  14. sessionToken: 'efasdf;laksdfja;lkdjfa;lkdjf',
  15. expiration: Date.now() + 600000,
  16. emailWasRespondedTo: false,
  17. accessToken: null,
  18. },
  19. }
  20. const mockReturn = {
  21. sessionTokenIsRemoved: true,
  22. }
  23. const pathToTest = {
  24. method: 'POST',
  25. url: '/remove-session',
  26. payload: JSON.stringify(payload),
  27. }
  28. test('path /remove-session should return confirmation of removed session', async t => {
  29. /**
  30. * Create a new server and register services,
  31. * models and routes for testing
  32. */
  33. const server = Hapi.server()
  34. server.registrations = {
  35. 'main-app-plugin': {
  36. options: {},
  37. },
  38. }
  39. /**
  40. * Register Services
  41. */
  42. await plugin.register(server)
  43. server.services()['userService'] = new UserService(server)
  44. const removeSession = hashedSessionToken => {
  45. const userSession = activeSessions[hashedSessionToken]
  46. if (!userSession) {
  47. throw new Error(
  48. 'hashedSessionToken not in activeSessions registry!',
  49. )
  50. } else {
  51. delete activeSessions[hashedSessionToken]
  52. }
  53. }
  54. stub(server.services()['userService'], 'removeSession').returns(
  55. removeSession(hashedSessionToken),
  56. )
  57. /**
  58. * Test the server with registered models and services
  59. */
  60. const { payload } = await server.inject(pathToTest)
  61. const res = JSON.parse(payload)
  62. t.deepEqual(res.ok, true)
  63. t.deepEqual(res.data, mockReturn)
  64. server.stop()
  65. })