access-token-parser.test.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const mongoose = require('mongoose');
  2. const { getInstance } = require('../setup-crowi');
  3. describe('accessTokenParser', () => {
  4. let crowi;
  5. let accessTokenParser;
  6. let User;
  7. let targetUser;
  8. beforeAll(async() => {
  9. crowi = await getInstance();
  10. User = mongoose.model('User');
  11. accessTokenParser = require('~/server/middlewares/access-token-parser')(crowi);
  12. targetUser = await User.create({
  13. name: 'Example for access token parser',
  14. username: 'targetUser',
  15. password: 'usertestpass',
  16. lang: 'en_US',
  17. apiToken: 'N4xPDjh48TBsC7ahUN+ajjL5asnGpwtA5VAR+EhIDeg=',
  18. });
  19. });
  20. crowi = {
  21. model: jest.fn().mockReturnValue(User),
  22. };
  23. const req = {
  24. query: {},
  25. body: {},
  26. user: {},
  27. };
  28. const res = {};
  29. const next = jest.fn().mockReturnValue('next');
  30. test('without accessToken', async() => {
  31. const result = await accessTokenParser(req, res, next);
  32. expect(next).toHaveBeenCalled();
  33. expect(result).toBe('next');
  34. });
  35. test('with invalid accessToken', async() => {
  36. req.query.access_token = 'invalidAccessToken';
  37. const result = await accessTokenParser(req, res, next);
  38. expect(next).toHaveBeenCalled();
  39. expect(result).toBe('next');
  40. });
  41. test('with accessToken in query', async() => {
  42. req.query.access_token = 'N4xPDjh48TBsC7ahUN+ajjL5asnGpwtA5VAR+EhIDeg=';
  43. const result = await accessTokenParser(req, res, next);
  44. expect(next).toHaveBeenCalled();
  45. expect(result).toBe('next');
  46. expect(req.user._id).toStrictEqual(targetUser._id);
  47. });
  48. test('with accessToken in body', async() => {
  49. req.body.access_token = 'N4xPDjh48TBsC7ahUN+ajjL5asnGpwtA5VAR+EhIDeg=';
  50. const result = await accessTokenParser(req, res, next);
  51. expect(next).toHaveBeenCalled();
  52. expect(result).toBe('next');
  53. expect(req.user._id).toStrictEqual(targetUser._id);
  54. });
  55. });