Skip to content

Commit 66988dc

Browse files
committed
an active user was deactivated
1 parent c6943a6 commit 66988dc

File tree

4 files changed

+226
-0
lines changed

4 files changed

+226
-0
lines changed

src/test/java/org/ays/auth/controller/AysUserControllerTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,4 +798,29 @@ void givenUserDelete_whenUserUnauthorized_thenReturnAccessDeniedException() thro
798798
.delete(Mockito.anyString());
799799
}
800800

801+
@ParameterizedTest
802+
@ValueSource(strings = {
803+
"A",
804+
"493268349068342"
805+
})
806+
void givenInvalidUserId_whenIdNotValid_thenReturnValidationErrorForPassivate(String invalidId) throws Exception {
807+
808+
// Then
809+
String endpoint = BASE_PATH.concat("/user/").concat(invalidId).concat("/passivate");
810+
MockHttpServletRequestBuilder mockHttpServletRequestBuilder = AysMockMvcRequestBuilders
811+
.patch(endpoint, mockAdminToken.getAccessToken());
812+
813+
AysErrorResponse mockErrorResponse = AysErrorBuilder.VALIDATION_ERROR;
814+
815+
aysMockMvc.perform(mockHttpServletRequestBuilder, mockErrorResponse)
816+
.andExpect(AysMockResultMatchersBuilders.status()
817+
.isBadRequest())
818+
.andExpect(AysMockResultMatchersBuilders.subErrors()
819+
.isNotEmpty());
820+
821+
// Verify
822+
Mockito.verify(userUpdateService, Mockito.never())
823+
.passivate(Mockito.anyString());
824+
}
825+
801826
}

src/test/java/org/ays/auth/controller/AysUserEndToEndTest.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ void givenValidIdAndUserUpdateRequest_whenUserUpdated_thenReturnSuccess() throws
373373
Assertions.assertNotNull(userFromDatabase.get().getUpdatedAt());
374374
}
375375

376+
376377
@Test
377378
void givenValidId_whenActivateUser_thenReturnSuccess() throws Exception {
378379

@@ -469,4 +470,49 @@ void givenValidId_whenUserDeleted_thenReturnSuccess() throws Exception {
469470
Assertions.assertEquals(AysUserStatus.DELETED, userFromDatabase.get().getStatus());
470471
}
471472

473+
474+
@Test
475+
void givenValidId_whenPassivateUser_thenReturnSuccess() throws Exception {
476+
477+
// Initialize
478+
Institution institution = new InstitutionBuilder()
479+
.withId(AysValidTestData.Admin.INSTITUTION_ID)
480+
.build();
481+
482+
List<AysRole> roles = roleReadPort.findAllActivesByInstitutionId(institution.getId());
483+
484+
AysUser user = userSavePort.save(
485+
new AysUserBuilder()
486+
.withId(AysRandomUtil.generateUUID())
487+
.withValidValues()
488+
.withRoles(roles)
489+
.withInstitution(institution)
490+
.withStatus(AysUserStatus.ACTIVE) // Kullanıcı başlangıçta aktif
491+
.build()
492+
);
493+
494+
// Given
495+
String id = user.getId();
496+
497+
// Then
498+
String endpoint = BASE_PATH.concat("/user/").concat(id).concat("/passivate");
499+
MockHttpServletRequestBuilder mockHttpServletRequestBuilder = AysMockMvcRequestBuilders
500+
.patch(endpoint, adminToken.getAccessToken());
501+
502+
AysResponse<Void> mockResponse = AysResponseBuilder.SUCCESS;
503+
504+
aysMockMvc.perform(mockHttpServletRequestBuilder, mockResponse)
505+
.andExpect(AysMockResultMatchersBuilders.status()
506+
.isOk())
507+
.andExpect(AysMockResultMatchersBuilders.response()
508+
.doesNotExist());
509+
510+
// Verify
511+
Optional<AysUser> userFromDatabase = userReadPort.findById(user.getId());
512+
513+
Assertions.assertTrue(userFromDatabase.isPresent());
514+
Assertions.assertEquals(userFromDatabase.get().getId(), user.getId());
515+
Assertions.assertEquals(AysUserStatus.PASSIVE, userFromDatabase.get().getStatus());
516+
}
517+
472518
}

src/test/java/org/ays/auth/service/impl/AysAuthServiceImplTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.ays.auth.util.exception.AysTokenNotValidException;
2727
import org.ays.auth.util.exception.AysUserDoesNotAccessPageException;
2828
import org.ays.auth.util.exception.AysUserIdNotValidException;
29+
import org.ays.auth.util.exception.AysUserNotActiveException;
2930
import org.junit.jupiter.api.Assertions;
3031
import org.junit.jupiter.api.Test;
3132
import org.mockito.InjectMocks;

src/test/java/org/ays/auth/service/impl/AysUserUpdateServiceImplTest.java

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.ays.auth.util.exception.AysUserAlreadyExistsByEmailAddressException;
1818
import org.ays.auth.util.exception.AysUserAlreadyExistsByPhoneNumberException;
1919
import org.ays.auth.util.exception.AysUserIsNotActiveOrPassiveException;
20+
import org.ays.auth.util.exception.AysUserNotActiveException;
2021
import org.ays.auth.util.exception.AysUserNotExistByIdException;
2122
import org.ays.auth.util.exception.AysUserNotPassiveException;
2223
import org.ays.common.model.AysPhoneNumber;
@@ -820,4 +821,157 @@ void givenValidId_whenUserNotMatchedWithInstitution_thenThrowAysUserNotExistById
820821
.save(Mockito.any(AysUser.class));
821822
}
822823

824+
825+
@Test
826+
void givenValidId_whenUserIsActive_thenPassivateUser() {
827+
828+
// Given
829+
String mockId = "21a0ab5a-c0e9-4789-9704-a6b5c02e2325";
830+
831+
// When
832+
Institution mockInstitution = new InstitutionBuilder()
833+
.withValidValues()
834+
.build();
835+
Mockito.when(identity.getInstitutionId())
836+
.thenReturn(mockInstitution.getId());
837+
838+
AysUser mockUser = new AysUserBuilder()
839+
.withValidValues()
840+
.withId(mockId)
841+
.withInstitution(mockInstitution)
842+
.withStatus(AysUserStatus.ACTIVE)
843+
.build();
844+
845+
Mockito.when(userReadPort.findById(Mockito.anyString()))
846+
.thenReturn(Optional.of(mockUser));
847+
848+
Mockito.when(userSavePort.save(Mockito.any(AysUser.class)))
849+
.thenReturn(Mockito.mock(AysUser.class));
850+
851+
// Then
852+
userUpdateService.passivate(mockId);
853+
854+
// Verify
855+
Mockito.verify(identity, Mockito.times(1))
856+
.getInstitutionId();
857+
858+
Mockito.verify(userReadPort, Mockito.times(1))
859+
.findById(Mockito.anyString());
860+
861+
Mockito.verify(userSavePort, Mockito.times(1))
862+
.save(Mockito.any(AysUser.class));
863+
}
864+
865+
@Test
866+
void givenValidUserId_whenUserNotFound_thenThrowAysUserNotExistByIdException(){
867+
868+
// Given
869+
String mockId = "9f1eb072-7830-4c43-9a32-d77b62ccddd3";
870+
871+
// When
872+
Mockito.when(userReadPort.findById(Mockito.anyString()))
873+
.thenReturn(Optional.empty());
874+
875+
// Then
876+
Assertions.assertThrows(
877+
AysUserNotExistByIdException.class,
878+
() -> userUpdateService.passivate(mockId)
879+
);
880+
881+
// Verify
882+
Mockito.verify(userReadPort, Mockito.times(1))
883+
.findById(Mockito.anyString());
884+
885+
Mockito.verify(identity, Mockito.never())
886+
.getInstitutionId();
887+
888+
Mockito.verify(userSavePort, Mockito.never())
889+
.save(Mockito.any(AysUser.class));
890+
}
891+
892+
@Test
893+
void givenValidId_whenUserIsNotActive_thenThrowAysUserNotActiveException(){
894+
895+
// Given
896+
String mockId = "bf7cc8d4-eab7-487d-8564-19be0f439b4a";
897+
898+
// When
899+
Institution mockInstitution = new InstitutionBuilder()
900+
.withValidValues()
901+
.build();
902+
Mockito.when(identity.getInstitutionId())
903+
.thenReturn(mockInstitution.getId());
904+
905+
AysUser mockUser = new AysUserBuilder()
906+
.withValidValues()
907+
.withId(mockId)
908+
.withInstitution(mockInstitution)
909+
.withStatus(AysUserStatus.PASSIVE) // Not active
910+
.build();
911+
912+
Mockito.when(userReadPort.findById(Mockito.anyString()))
913+
.thenReturn(Optional.of(mockUser));
914+
915+
// Then
916+
Assertions.assertThrows(
917+
AysUserNotActiveException.class,
918+
() -> userUpdateService.passivate(mockId)
919+
);
920+
921+
// Verify
922+
Mockito.verify(identity, Mockito.times(1))
923+
.getInstitutionId();
924+
925+
Mockito.verify(userReadPort, Mockito.times(1))
926+
.findById(Mockito.anyString());
927+
928+
Mockito.verify(userSavePort, Mockito.never())
929+
.save(Mockito.any(AysUser.class));
930+
}
931+
932+
@Test
933+
void givenValidUserId_whenInstitutionIdDoesNotMatch_thenThrowAysUserNotExistByIdException() {
934+
935+
// Given
936+
String mockId = "a785c6a2-229f-4a73-8e3a-3ff49bd16a07";
937+
938+
// When
939+
Institution mockInstitution = new InstitutionBuilder()
940+
.withValidValues()
941+
.build();
942+
943+
Institution differentInstitution = new InstitutionBuilder()
944+
.withValidValues()
945+
.build();
946+
947+
AysUser mockUser = new AysUserBuilder()
948+
.withValidValues()
949+
.withId(mockId)
950+
.withInstitution(differentInstitution)
951+
.withStatus(AysUserStatus.ACTIVE)
952+
.build();
953+
954+
Mockito.when(identity.getInstitutionId())
955+
.thenReturn(mockInstitution.getId());
956+
957+
Mockito.when(userReadPort.findById(mockId))
958+
.thenReturn(Optional.of(mockUser));
959+
960+
// Then
961+
Assertions.assertThrows(
962+
AysUserNotExistByIdException.class,
963+
() -> userUpdateService.passivate(mockId)
964+
);
965+
966+
// Verify
967+
Mockito.verify(identity, Mockito.times(1))
968+
.getInstitutionId();
969+
970+
Mockito.verify(userReadPort, Mockito.times(1))
971+
.findById(mockId);
972+
973+
Mockito.verify(userSavePort, Mockito.never())
974+
.save(mockUser);
975+
}
976+
823977
}

0 commit comments

Comments
 (0)