UserHelperTests.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. const AuthenticationManager = require('../../../app/src/Features/Authentication/AuthenticationManager')
  2. const UserHelper = require('./helpers/UserHelper')
  3. const Features = require('../../../app/src/infrastructure/Features')
  4. const { expect } = require('chai')
  5. describe('UserHelper', function () {
  6. // Disable all tests unless the registration feature is enabled
  7. beforeEach(function () {
  8. if (!Features.hasFeature('registration')) {
  9. this.skip()
  10. }
  11. })
  12. describe('UserHelper.createUser', function () {
  13. describe('with no args', function () {
  14. it('should create new user with default username and password', async function () {
  15. const userHelper = await UserHelper.createUser()
  16. userHelper.user.email.should.equal(userHelper.getDefaultEmail())
  17. const authedUser = await AuthenticationManager.promises.authenticate(
  18. { _id: userHelper.user._id },
  19. userHelper.getDefaultPassword()
  20. )
  21. expect(authedUser).to.not.be.null
  22. })
  23. })
  24. describe('with email', function () {
  25. it('should create new user with provided email and default password', async function () {
  26. const userHelper = await UserHelper.createUser({
  27. email: 'foo@test.com',
  28. })
  29. userHelper.user.email.should.equal('foo@test.com')
  30. const authedUser = await AuthenticationManager.promises.authenticate(
  31. { _id: userHelper.user._id },
  32. userHelper.getDefaultPassword()
  33. )
  34. expect(authedUser).to.not.be.null
  35. })
  36. })
  37. describe('with password', function () {
  38. it('should create new user with provided password and default email', async function () {
  39. const userHelper = await UserHelper.createUser({
  40. password: 'foofoofoo',
  41. })
  42. userHelper.user.email.should.equal(userHelper.getDefaultEmail())
  43. const authedUser = await AuthenticationManager.promises.authenticate(
  44. { _id: userHelper.user._id },
  45. 'foofoofoo'
  46. )
  47. expect(authedUser).to.not.be.null
  48. })
  49. })
  50. })
  51. describe('UserHelper.getUser', function () {
  52. let user
  53. beforeEach(async function () {
  54. user = (await UserHelper.createUser()).user
  55. })
  56. describe('with string id', function () {
  57. it('should fetch user', async function () {
  58. const userHelper = await UserHelper.getUser(user._id.toString())
  59. userHelper.user.email.should.equal(user.email)
  60. })
  61. })
  62. describe('with _id', function () {
  63. it('should fetch user', async function () {
  64. const userHelper = await UserHelper.getUser({ _id: user._id })
  65. userHelper.user.email.should.equal(user.email)
  66. })
  67. })
  68. })
  69. describe('UserHelper.loginUser', function () {
  70. let userHelper
  71. beforeEach(async function () {
  72. userHelper = await UserHelper.createUser()
  73. })
  74. describe('with email and password', function () {
  75. it('should login user', async function () {
  76. const newUserHelper = await UserHelper.loginUser({
  77. email: userHelper.getDefaultEmail(),
  78. password: userHelper.getDefaultPassword(),
  79. })
  80. newUserHelper.user.email.should.equal(userHelper.user.email)
  81. })
  82. })
  83. describe('without email', function () {
  84. it('should throw error', async function () {
  85. await UserHelper.loginUser({
  86. password: userHelper.getDefaultPassword(),
  87. }).should.be.rejectedWith('email and password required')
  88. })
  89. })
  90. describe('without password', function () {
  91. it('should throw error', async function () {
  92. await UserHelper.loginUser({
  93. email: userHelper.getDefaultEmail(),
  94. }).should.be.rejectedWith('email and password required')
  95. })
  96. })
  97. describe('without email and password', function () {
  98. it('should throw error', async function () {
  99. await UserHelper.loginUser().should.be.rejectedWith(
  100. 'email and password required'
  101. )
  102. })
  103. })
  104. })
  105. describe('UserHelper.registerUser', function () {
  106. describe('with no args', function () {
  107. it('should create new user with default username and password', async function () {
  108. const userHelper = await UserHelper.registerUser()
  109. userHelper.user.email.should.equal(userHelper.getDefaultEmail())
  110. const authedUser = await AuthenticationManager.promises.authenticate(
  111. { _id: userHelper.user._id },
  112. userHelper.getDefaultPassword()
  113. )
  114. expect(authedUser).to.not.be.null
  115. })
  116. })
  117. describe('with email', function () {
  118. it('should create new user with provided email and default password', async function () {
  119. const userHelper = await UserHelper.registerUser({
  120. email: 'foo2@test.com',
  121. })
  122. userHelper.user.email.should.equal('foo2@test.com')
  123. const authedUser = await AuthenticationManager.promises.authenticate(
  124. { _id: userHelper.user._id },
  125. userHelper.getDefaultPassword()
  126. )
  127. expect(authedUser).to.not.be.null
  128. })
  129. })
  130. describe('with password', function () {
  131. it('should create new user with provided password and default email', async function () {
  132. const userHelper = await UserHelper.registerUser({
  133. password: 'foofoofoo',
  134. })
  135. userHelper.user.email.should.equal(userHelper.getDefaultEmail())
  136. const authedUser = await AuthenticationManager.promises.authenticate(
  137. { _id: userHelper.user._id },
  138. 'foofoofoo'
  139. )
  140. expect(authedUser).to.not.be.null
  141. })
  142. })
  143. })
  144. describe('getCsrfToken', function () {
  145. it('should fetch csrfToken', async function () {
  146. const userHelper = new UserHelper()
  147. await userHelper.getCsrfToken()
  148. expect(userHelper.csrfToken).to.be.a.string
  149. })
  150. })
  151. describe('after logout', function () {
  152. let userHelper, oldCsrfToken
  153. beforeEach(async function () {
  154. userHelper = await UserHelper.registerUser()
  155. oldCsrfToken = userHelper.csrfToken
  156. })
  157. it('refreshes csrf token after logout', async function () {
  158. await userHelper.logout()
  159. expect(userHelper._csrfToken).to.equal('')
  160. await userHelper.getCsrfToken()
  161. expect(userHelper._csrfToken).to.not.equal('')
  162. expect(userHelper._csrfToken).to.not.equal(oldCsrfToken)
  163. })
  164. })
  165. })