auth.helpers.test.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import * as argon2 from 'argon2';
  2. import fs from 'fs';
  3. import config from '../../../config';
  4. import { IUser } from '../../../config/types';
  5. import AuthHelpers from '../auth.helpers';
  6. let user: IUser;
  7. beforeAll(async () => {
  8. const hash = await argon2.hash('password');
  9. user = { email: 'username', password: hash, name: 'name' };
  10. });
  11. jest.mock('fs');
  12. const MOCK_USER_REGISTERED = () => ({
  13. [`${config.ROOT_FOLDER}/state/users.json`]: `[${JSON.stringify(user)}]`,
  14. });
  15. describe('TradeTokenForUser', () => {
  16. beforeEach(() => {
  17. // @ts-ignore
  18. fs.__createMockFiles(MOCK_USER_REGISTERED());
  19. });
  20. it('Should return null if token is invalid', () => {
  21. const result = AuthHelpers.tradeTokenForUser('invalid token');
  22. expect(result).toBeNull();
  23. });
  24. it('Should return user if token is valid', async () => {
  25. const token = await AuthHelpers.getJwtToken(user, 'password');
  26. const result = AuthHelpers.tradeTokenForUser(token);
  27. expect(result).toEqual(user);
  28. });
  29. });
  30. describe('GetJwtToken', () => {
  31. beforeEach(() => {
  32. // @ts-ignore
  33. fs.__createMockFiles(MOCK_USER_REGISTERED());
  34. });
  35. it('Should return token if user and password are valid', async () => {
  36. const token = await AuthHelpers.getJwtToken(user, 'password');
  37. expect(token).toBeDefined();
  38. });
  39. it('Should throw if password is invalid', async () => {
  40. await expect(AuthHelpers.getJwtToken(user, 'invalid password')).rejects.toThrow('Wrong password');
  41. });
  42. });
  43. describe('getUser', () => {
  44. beforeEach(() => {
  45. // @ts-ignore
  46. fs.__createMockFiles(MOCK_USER_REGISTERED());
  47. });
  48. it('Should return null if user is not found', () => {
  49. const result = AuthHelpers.getUser('invalid token');
  50. expect(result).toBeUndefined();
  51. });
  52. it('Should return user if token is valid', async () => {
  53. const result = AuthHelpers.getUser('username');
  54. expect(result).toEqual(user);
  55. });
  56. });