certify-shared-file.spec.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import type { Response } from 'express';
  2. import { mock } from 'vitest-mock-extended';
  3. import { certifySharedFileMiddleware, type RequestToAllowShareLink } from './certify-shared-file';
  4. import { ValidReferer } from './interfaces';
  5. const mocks = vi.hoisted(() => {
  6. return {
  7. validateRefererMock: vi.fn(),
  8. retrieveValidShareLinkByRefererMock: vi.fn(),
  9. };
  10. });
  11. vi.mock('./validate-referer', () => ({ validateReferer: mocks.validateRefererMock }));
  12. vi.mock('./retrieve-valid-share-link', () => ({ retrieveValidShareLinkByReferer: mocks.retrieveValidShareLinkByRefererMock }));
  13. describe('certifySharedFileMiddleware', () => {
  14. const res = mock<Response>();
  15. const next = vi.fn();
  16. describe('should called next() without req.isSharedPage set', () => {
  17. it('when the fileId param is null', () => {
  18. // setup
  19. const req = mock<RequestToAllowShareLink>();
  20. req.params = {}; // id: undefined
  21. req.headers = {};
  22. // when
  23. certifySharedFileMiddleware(req, res, next);
  24. // then
  25. expect(mocks.validateRefererMock).not.toHaveBeenCalled();
  26. expect(next).toHaveBeenCalledOnce();
  27. });
  28. it('when validateReferer returns null', () => {
  29. // setup
  30. const req = mock<RequestToAllowShareLink>();
  31. req.params = { id: 'file id string' };
  32. req.headers = { referer: 'referer string' };
  33. // when
  34. certifySharedFileMiddleware(req, res, next);
  35. // then
  36. expect(mocks.validateRefererMock).toHaveBeenCalledOnce();
  37. expect(mocks.validateRefererMock).toHaveBeenCalledWith('referer string');
  38. expect(next).toHaveBeenCalledOnce();
  39. });
  40. it('when retrieveValidShareLinkByReferer returns null', async() => {
  41. // setup
  42. const req = mock<RequestToAllowShareLink>();
  43. req.params = { id: 'file id string' };
  44. req.headers = { referer: 'referer string' };
  45. const validReferer: ValidReferer = {
  46. referer: 'referer string',
  47. shareLinkId: 'ffffffffffffffffffffffff',
  48. };
  49. mocks.validateRefererMock.mockImplementation(() => validReferer);
  50. mocks.retrieveValidShareLinkByRefererMock.mockResolvedValue(null);
  51. // when
  52. await certifySharedFileMiddleware(req, res, next);
  53. // then
  54. expect(mocks.validateRefererMock).toHaveBeenCalledOnce();
  55. expect(mocks.validateRefererMock).toHaveBeenCalledWith('referer string');
  56. expect(mocks.retrieveValidShareLinkByRefererMock).toHaveBeenCalledOnce();
  57. expect(mocks.retrieveValidShareLinkByRefererMock).toHaveBeenCalledWith(validReferer);
  58. expect(next).toHaveBeenCalledOnce();
  59. });
  60. });
  61. });