admin_token.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. process.env.NODE_ENV = 'test'
  2. let chai = require('chai')
  3. let server = require('../server')
  4. let should = chai.should()
  5. let Models = require('../models')
  6. let User = Models.User
  7. let AdminToken = Models.AdminToken
  8. const Errors = require('../lib/errors.js')
  9. chai.use(require('chai-http'))
  10. chai.use(require('chai-things'))
  11. describe('AdminToken', () => {
  12. //Wait for app to start before commencing
  13. before((done) => {
  14. server.on('appStarted', () => {
  15. done()
  16. })
  17. })
  18. //Delete all rows in table after
  19. //tests completed
  20. after((done) => {
  21. Promise.all([
  22. User.sync({ force: true }),
  23. AdminToken.sync({ force: true })
  24. ])
  25. .then(() => {
  26. done(null);
  27. })
  28. .catch((err) => {
  29. done(err)
  30. })
  31. })
  32. describe('POST /admin_token', async () => {
  33. let token
  34. let agent = chai.request.agent(server)
  35. before((done) => {
  36. agent
  37. .post('/api/v1/user')
  38. .set('content-type', 'application/json')
  39. .send({
  40. username: 'adminaccount',
  41. password: 'password',
  42. admin: true
  43. })
  44. .then(() => {
  45. done()
  46. })
  47. .catch(done)
  48. })
  49. it('should generate a token if logged in', async () => {
  50. let res = await agent.post('/api/v1/admin_token')
  51. res.should.have.status(200)
  52. res.body.should.have.property('token')
  53. token = res.body.token
  54. })
  55. it('should generate a different token if logged in', async () => {
  56. let res = await agent.post('/api/v1/admin_token')
  57. res.should.have.status(200)
  58. res.body.should.have.property('token')
  59. res.body.token.should.not.equal(token)
  60. })
  61. it('should give an error if not logged in', async () => {
  62. try {
  63. let res = await chai.request(server).post('/api/v1/admin_token')
  64. res.should.have.status(403)
  65. res.body.errors.should.contain.something.that.deep.equals(Errors.requestNotAuthorized)
  66. } catch(res) {
  67. res.should.have.status(403)
  68. JSON.parse(res.response.text).errors.should.contain.something.that.deep.equals(Errors.requestNotAuthorized)
  69. }
  70. })
  71. })
  72. })