Просмотр исходного кода

fix(syncing-serve): removing other users from shared vault

Karol Sójko 1 год назад
Родитель
Сommit
6b2389cdc3

+ 3 - 2
packages/syncing-server/src/Domain/UseCase/SharedVaults/RemoveUserFromSharedVault/RemoveUserFromSharedVault.spec.ts

@@ -45,12 +45,13 @@ describe('RemoveUserFromSharedVault', () => {
 
   it('should remove user from shared vault', async () => {
     const useCase = createUseCase()
-    await useCase.execute({
+    const result = await useCase.execute({
       originatorUuid: '00000000-0000-0000-0000-000000000000',
       sharedVaultUuid: '00000000-0000-0000-0000-000000000000',
       userUuid: '00000000-0000-0000-0000-000000000001',
     })
 
+    expect(result.isFailed()).toBeFalsy()
     expect(sharedVaultUserRepository.remove).toHaveBeenCalledWith(sharedVaultUser)
   })
 
@@ -99,7 +100,7 @@ describe('RemoveUserFromSharedVault', () => {
     })
 
     expect(result.isFailed()).toBe(true)
-    expect(result.getError()).toBe('Only owner can remove users from shared vault')
+    expect(result.getError()).toBe('Only owner can remove other users from shared vault')
   })
 
   it('should remove shared vault user if user is owner and is being force removed', async () => {

+ 3 - 2
packages/syncing-server/src/Domain/UseCase/SharedVaults/RemoveUserFromSharedVault/RemoveUserFromSharedVault.ts

@@ -37,8 +37,9 @@ export class RemoveUserFromSharedVault implements UseCaseInterface<void> {
     }
 
     const originatorIsOwner = sharedVault.props.userUuid.equals(originatorUuid)
-    if (!originatorIsOwner) {
-      return Result.fail('Only owner can remove users from shared vault')
+    const removingSomeoneElseWhenNotOwner = !originatorIsOwner && userUuid !== originatorUuid
+    if (removingSomeoneElseWhenNotOwner) {
+      return Result.fail('Only owner can remove other users from shared vault')
     }
 
     const removingOwner = sharedVault.props.userUuid.equals(userUuid)