Advertisement
Guest User

Untitled

a guest
Apr 28th, 2019
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. import tap from 'tap'
  2. import qs from 'querystring'
  3. import uuid from 'uuid/v4'
  4. import bcrypt from 'bcrypt'
  5. import { app } from '../../app'
  6. import config from '../../config'
  7.  
  8. const { domain, knexOptions, jwtExpiration } = config
  9. const baseUri = 'api'
  10.  
  11. let authToken, accessToken, payload
  12. const user = {
  13. email: 'test@test.com',
  14. handle: 'testuser',
  15. number: '+15757555'
  16. }
  17.  
  18. export default async function () {
  19. await app.ready()
  20.  
  21. const t1 = await tap.test('POST `api/auth/signup` route')
  22. await app.tracker.install()
  23. app.tracker.on('query', (query, step) => {
  24. [
  25. () => query.response([]),
  26. () => query.response([ { ...user, id: uuid() } ])
  27. ][step - 1]()
  28. })
  29. payload = {
  30. ...user,
  31. password: 'testing1234'
  32. }
  33. try {
  34. const response = await app.inject({
  35. method: 'POST',
  36. url: `${baseUri}/auth/signup`,
  37. payload
  38. })
  39. t1.strictEqual(response.statusCode, 200, 'it should reply with an ok status')
  40. const { currentUser, token } = JSON.parse(response.payload)
  41. const { sub } = await app.jwt.decode(token)
  42. authToken = token
  43. t1.strictEqual(sub, currentUser.id, 'it should have decoded subject as new user id')
  44. } catch (err) {
  45. t1.error(err)
  46. }
  47. await app.tracker.uninstall()
  48.  
  49. await app.tracker.install()
  50. const t2 = await tap.test('POST `api/auth/signin` route')
  51. app.tracker.on('query', (query, step) => {
  52. query.response([{
  53. ...user,
  54. id: uuid(),
  55. password: bcrypt.hashSync('testing1234', bcrypt.genSaltSync(8), null)
  56. }])
  57. })
  58. payload = {
  59. email: user.email,
  60. password: 'testing1234'
  61. }
  62. try {
  63. const response = await app.inject({
  64. method: 'POST',
  65. url: `${baseUri}/auth/signin`,
  66. payload
  67. })
  68. t2.strictEqual(response.statusCode, 200, 'it should reply with an ok status')
  69. const { currentUser, token } = JSON.parse(response.payload)
  70. const { sub } = await app.jwt.decode(token)
  71. t2.strictEqual(sub, currentUser.id, 'it should have decoded subject as current user id')
  72. } catch (err) {
  73. t2.error(err)
  74. }
  75.  
  76. await tap.tearDown(() => app.close())
  77.  
  78. return { authToken }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement