GetSharedVaultUsers.spec.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { Uuid, Timestamps, SharedVaultUserPermission, SharedVaultUser } from '@standardnotes/domain-core'
  2. import { SharedVault } from '../../../SharedVault/SharedVault'
  3. import { SharedVaultRepositoryInterface } from '../../../SharedVault/SharedVaultRepositoryInterface'
  4. import { SharedVaultUserRepositoryInterface } from '../../../SharedVault/User/SharedVaultUserRepositoryInterface'
  5. import { GetSharedVaultUsers } from './GetSharedVaultUsers'
  6. describe('GetSharedVaultUsers', () => {
  7. let sharedVault: SharedVault
  8. let sharedVaultUser: SharedVaultUser
  9. let sharedVaultUsersRepository: SharedVaultUserRepositoryInterface
  10. let sharedVaultRepository: SharedVaultRepositoryInterface
  11. const createUseCase = () => new GetSharedVaultUsers(sharedVaultUsersRepository, sharedVaultRepository)
  12. beforeEach(() => {
  13. sharedVault = SharedVault.create({
  14. fileUploadBytesUsed: 2,
  15. userUuid: Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
  16. timestamps: Timestamps.create(123, 123).getValue(),
  17. }).getValue()
  18. sharedVaultUser = SharedVaultUser.create({
  19. permission: SharedVaultUserPermission.create(SharedVaultUserPermission.PERMISSIONS.Read).getValue(),
  20. sharedVaultUuid: Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
  21. userUuid: Uuid.create('00000000-0000-0000-0000-000000000000').getValue(),
  22. timestamps: Timestamps.create(123, 123).getValue(),
  23. isDesignatedSurvivor: false,
  24. }).getValue()
  25. sharedVaultRepository = {} as jest.Mocked<SharedVaultRepositoryInterface>
  26. sharedVaultRepository.findByUuid = jest.fn().mockResolvedValue(sharedVault)
  27. sharedVaultUsersRepository = {} as jest.Mocked<SharedVaultUserRepositoryInterface>
  28. sharedVaultUsersRepository.findBySharedVaultUuid = jest.fn().mockResolvedValue([sharedVaultUser])
  29. })
  30. it('returns shared vault users', async () => {
  31. const useCase = createUseCase()
  32. const result = await useCase.execute({
  33. sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
  34. originatorUuid: '00000000-0000-0000-0000-000000000000',
  35. })
  36. expect(result.isFailed()).toBe(false)
  37. expect(result.getValue()).toEqual([sharedVaultUser])
  38. })
  39. it('returns error when shared vault is not found', async () => {
  40. sharedVaultRepository.findByUuid = jest.fn().mockResolvedValue(null)
  41. const useCase = createUseCase()
  42. const result = await useCase.execute({
  43. sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
  44. originatorUuid: '00000000-0000-0000-0000-000000000000',
  45. })
  46. expect(result.isFailed()).toBe(true)
  47. expect(result.getError()).toBe('Shared vault not found')
  48. })
  49. it('returns error when originator is not a member of the shared vault', async () => {
  50. sharedVaultUsersRepository.findBySharedVaultUuid = jest.fn().mockResolvedValue([])
  51. const useCase = createUseCase()
  52. const result = await useCase.execute({
  53. sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
  54. originatorUuid: '00000000-0000-0000-0000-000000000000',
  55. })
  56. expect(result.isFailed()).toBe(true)
  57. expect(result.getError()).toBe('Originator is not a member of the shared vault')
  58. })
  59. it('returns error when shared vault uuid is invalid', async () => {
  60. const useCase = createUseCase()
  61. const result = await useCase.execute({
  62. sharedVaultUuid: 'invalid',
  63. originatorUuid: '00000000-0000-0000-0000-000000000000',
  64. })
  65. expect(result.isFailed()).toBe(true)
  66. expect(result.getError()).toBe('Given value is not a valid uuid: invalid')
  67. })
  68. it('returns error when originator uuid is invalid', async () => {
  69. const useCase = createUseCase()
  70. const result = await useCase.execute({
  71. sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
  72. originatorUuid: 'invalid',
  73. })
  74. expect(result.isFailed()).toBe(true)
  75. expect(result.getError()).toBe('Given value is not a valid uuid: invalid')
  76. })
  77. })