33import static com .descope .utils .CollectionUtils .mapOf ;
44import static org .assertj .core .api .Assertions .assertThat ;
55import static org .junit .jupiter .api .Assertions .assertEquals ;
6+ import static org .junit .jupiter .api .Assertions .assertFalse ;
67import static org .junit .jupiter .api .Assertions .assertNotNull ;
78import static org .junit .jupiter .api .Assertions .assertThrows ;
89import static org .junit .jupiter .api .Assertions .assertTrue ;
3031import com .descope .model .user .request .BatchUserPasswordPbkdf2 ;
3132import com .descope .model .user .request .BatchUserRequest ;
3233import com .descope .model .user .request .PatchUserRequest ;
34+ import com .descope .model .user .request .RolesList ;
3335import com .descope .model .user .request .UserRequest ;
3436import com .descope .model .user .request .UserSearchRequest ;
3537import com .descope .model .user .response .AllUsersResponseDetails ;
6668import org .junit .jupiter .api .BeforeEach ;
6769import org .junit .jupiter .api .Test ;
6870import org .junitpioneer .jupiter .RetryingTest ;
69- import org .mockito .ArgumentCaptor ;
7071import org .mockito .MockedStatic ;
7172
7273public class UserServiceImplTest {
@@ -825,50 +826,6 @@ void testSearchAllForSuccess() {
825826 }
826827 }
827828
828- @ Test
829- void testSearchAllWithTenantRoleParams () {
830- Map <String , List <String >> tenantRoleIds = mapOf ("tenant1" , Arrays .asList ("roleA" , "roleB" ));
831- Map <String , List <String >> tenantRoleNames = mapOf ("tenant1" , Arrays .asList ("roleA" , "roleB" ));
832- AllUsersResponseDetails allUsersResponse = mock (AllUsersResponseDetails .class );
833- UserSearchRequest userSearchRequest = UserSearchRequest .builder ()
834- .limit (5 )
835- .page (0 )
836- .tenantRoleIds (tenantRoleIds )
837- .tenantRoleNames (tenantRoleNames )
838- .build ();
839-
840- ApiProxy apiProxy = mock (ApiProxy .class );
841- doReturn (allUsersResponse ).when (apiProxy ).post (any (), any (), any ());
842-
843- try (MockedStatic <ApiProxyBuilder > mockedApiProxyBuilder = mockStatic (ApiProxyBuilder .class )) {
844- mockedApiProxyBuilder .when (() -> ApiProxyBuilder .buildProxy (any (), any ())).thenReturn (apiProxy );
845-
846- userService .searchAll (userSearchRequest );
847-
848- @ SuppressWarnings ("unchecked" )
849- ArgumentCaptor <Map <String , Object >> captor = ArgumentCaptor .forClass (Map .class );
850- verify (apiProxy ).post (any (), captor .capture (), any ());
851-
852- Map <String , Object > payload = captor .getValue ();
853-
854- @ SuppressWarnings ("unchecked" )
855- Map <String , Object > wrappedIds = (Map <String , Object >) payload .get ("tenantRoleIds" );
856- assertTrue (wrappedIds .get ("tenant1" ) instanceof Map );
857-
858- @ SuppressWarnings ("unchecked" )
859- Map <String , Object > tenantIdsMap = (Map <String , Object >) wrappedIds .get ("tenant1" );
860- assertEquals (Arrays .asList ("roleA" , "roleB" ), (tenantIdsMap .get ("values" )));
861-
862- @ SuppressWarnings ("unchecked" )
863- Map <String , Object > wrappedNames = (Map <String , Object >) payload .get ("tenantRoleNames" );
864- assertTrue (wrappedNames .get ("tenant1" ) instanceof Map );
865-
866- @ SuppressWarnings ("unchecked" )
867- Map <String , Object > tenantNamesMap = (Map <String , Object >) wrappedNames .get ("tenant1" );
868- assertEquals (Arrays .asList ("roleA" , "roleB" ), (tenantNamesMap .get ("values" )));
869- }
870- }
871-
872829 @ Test
873830 void testSearchAllForInvalidLimit () {
874831 ServerCommonException thrown = assertThrows (ServerCommonException .class ,
@@ -1019,8 +976,10 @@ void testFunctionalUserWithTenantAndRole() {
1019976 String tenantName = TestUtils .getRandomName ("t-" );
1020977 String tenantId = tenantService .create (tenantName , Arrays .asList (tenantName + ".com" ));
1021978 assertThat (tenantId ).isNotBlank ();
1022- String roleName = TestUtils .getRandomName ("r-" ).substring (0 , 20 );
1023- roleService .create (roleName , "" , null );
979+ String roleName1 = TestUtils .getRandomName ("r-" ).substring (0 , 20 );
980+ roleService .create (roleName1 , "" , null );
981+ String roleName2 = TestUtils .getRandomName ("r-" ).substring (0 , 20 );
982+ roleService .create (roleName2 , "" , null );
1024983 String loginId = TestUtils .getRandomName ("u-" );
1025984 String email = TestUtils .getRandomName ("test-" ) + "@descope.com" ;
1026985 String phone = "+1-555-555-5555" ;
@@ -1029,7 +988,8 @@ void testFunctionalUserWithTenantAndRole() {
1029988 UserRequest .builder ().email (email ).verifiedEmail (true ).phone (phone ).verifiedPhone (true )
1030989 .displayName ("Testing Test" )
1031990 .userTenants (
1032- Arrays .asList (AssociatedTenant .builder ().tenantId (tenantId ).roleNames (Arrays .asList (roleName )).build ()))
991+ Arrays .asList (
992+ AssociatedTenant .builder ().tenantId (tenantId ).roleNames (Arrays .asList (roleName1 , roleName2 )).build ()))
1033993 .build ());
1034994 UserResponse user = createResponse .getUser ();
1035995 assertNotNull (user );
@@ -1041,34 +1001,53 @@ void testFunctionalUserWithTenantAndRole() {
10411001 assertEquals ("Testing Test" , user .getName ());
10421002 assertEquals ("invited" , user .getStatus ());
10431003 assertThat (user .getUserTenants ()).containsExactly (AssociatedTenant .builder ().tenantId (tenantId )
1044- .tenantName (tenantName ).roleNames (Arrays .asList (roleName )).build ());
1004+ .tenantName (tenantName ).roleNames (Arrays .asList (roleName1 , roleName2 )).build ());
10451005 UserResponseDetails updateResponse = userService .update (loginId ,
1046- UserRequest .builder ().roleNames (Arrays .asList (roleName )).email (email ).verifiedEmail (true ).phone (phone )
1006+ UserRequest .builder ().roleNames (
1007+ Arrays .asList (roleName1 , roleName2 )).email (email ).verifiedEmail (true ).phone (phone )
10471008 .verifiedPhone (true ).displayName ("Testing Test" ).build ());
10481009 user = updateResponse .getUser ();
10491010 assertNotNull (user );
1050- assertThat (user .getRoleNames ()).containsExactly (roleName );
1011+ assertThat (user .getRoleNames ()).containsExactly (roleName1 , roleName2 );
10511012 // Patch
10521013 UserResponseDetails patchResponse = userService .patch (loginId ,
10531014 PatchUserRequest .builder ()
10541015 .userTenants (
10551016 Arrays .asList (AssociatedTenant .builder ()
1056- .tenantId (tenantId ).roleNames (Arrays .asList (roleName )).build ())).build ());
1017+ .tenantId (tenantId ).roleNames (Arrays .asList (roleName1 , roleName2 )).build ())).build ());
10571018 user = patchResponse .getUser ();
10581019 assertNotNull (user );
10591020 assertThat (user .getUserTenants ()).containsExactly (AssociatedTenant .builder ().tenantId (tenantId )
1060- .tenantName (tenantName ).roleNames (Arrays .asList (roleName )).build ());
1021+ .tenantName (tenantName ).roleNames (Arrays .asList (roleName1 , roleName2 )).build ());
10611022 // Search
10621023 AllUsersResponseDetails searchByTenantRoleNames = userService .searchAll (
10631024 UserSearchRequest .builder ()
1064- .tenantRoleNames (mapOf (tenantId , Arrays .asList (roleName ))).build ());
1025+ .tenantRoleNames (
1026+ mapOf (tenantId , RolesList .builder ().values (
1027+ Arrays .asList (roleName1 , roleName2 )).and (true ).build ())).build ());
10651028 boolean foundByRoleName = searchByTenantRoleNames .getUsers ().stream ()
10661029 .anyMatch (u -> u .getUserId ().equals (createResponse .getUser ().getUserId ()));
10671030 assertTrue (foundByRoleName );
1031+ patchResponse = userService .patch (loginId ,
1032+ PatchUserRequest .builder ()
1033+ .userTenants (
1034+ Arrays .asList (AssociatedTenant .builder ()
1035+ .tenantId (tenantId ).roleNames (Arrays .asList (roleName1 )).build ())).build ());
1036+ user = patchResponse .getUser ();
1037+ assertNotNull (user );
1038+ searchByTenantRoleNames = userService .searchAll (
1039+ UserSearchRequest .builder ()
1040+ .tenantRoleNames (
1041+ mapOf (tenantId , RolesList .builder ().values (
1042+ Arrays .asList (roleName1 , roleName2 )).and (true ).build ())).build ());
1043+ foundByRoleName = searchByTenantRoleNames .getUsers ().stream ()
1044+ .anyMatch (u -> u .getUserId ().equals (createResponse .getUser ().getUserId ()));
1045+ assertFalse (foundByRoleName );
10681046 // Delete
10691047 userService .delete (loginId );
10701048 tenantService .delete (tenantId );
1071- roleService .delete (roleName );
1049+ roleService .delete (roleName1 );
1050+ roleService .delete (roleName2 );
10721051 }
10731052
10741053 @ RetryingTest (value = 3 , suspendForMs = 30000 , onExceptions = RateLimitExceededException .class )
0 commit comments