Skip to content

Commit dd58a01

Browse files
Adjust PasswordGrantAuthenticationManagerTest to check whether optimized query is executed
1 parent 310560a commit dd58a01

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

server/src/test/java/org/cloudfoundry/identity/uaa/authentication/manager/PasswordGrantAuthenticationManagerTest.java

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,12 @@
3131
import org.cloudfoundry.identity.uaa.util.AlphanumericRandomValueStringGenerator;
3232
import org.cloudfoundry.identity.uaa.zone.IdentityZoneHolder;
3333
import org.junit.jupiter.api.AfterEach;
34+
import org.junit.jupiter.api.Assertions;
3435
import org.junit.jupiter.api.BeforeEach;
3536
import org.junit.jupiter.api.Test;
3637
import org.junit.jupiter.api.extension.ExtendWith;
38+
import org.junit.jupiter.params.ParameterizedTest;
39+
import org.junit.jupiter.params.provider.ValueSource;
3740
import org.mockito.ArgumentCaptor;
3841
import org.springframework.context.ApplicationEventPublisher;
3942
import org.springframework.core.ParameterizedTypeReference;
@@ -632,22 +635,29 @@ void testUaaPasswordGrant_defaultProviderUaa() {
632635
verify(zoneAwareAuthzAuthenticationManager, times(0)).setLoginHint(any(), any());
633636
}
634637

635-
@Test
636-
void testPasswordGrant_NoLoginHintWithDefaultUaa() {
638+
@ParameterizedTest
639+
@ValueSource(strings = { OriginKeys.UAA, OriginKeys.LDAP })
640+
void testPasswordGrant_NoLoginHintWithDefaultUaaOrLdap(final String loginHintOrigin) {
637641
Authentication auth = mock(Authentication.class);
638642
when(zoneAwareAuthzAuthenticationManager.extractLoginHint(auth)).thenReturn(null);
639643
Map<String, Object> additionalInformation = new HashMap<>();
640-
additionalInformation.put(ClientConstants.ALLOWED_PROVIDERS, Collections.singletonList("uaa"));
644+
additionalInformation.put(ClientConstants.ALLOWED_PROVIDERS, Collections.singletonList(loginHintOrigin));
641645
when(uaaClient.getAdditionalInformation()).thenReturn(additionalInformation);
642-
IdentityZoneHolder.get().getConfig().setDefaultIdentityProvider("uaa");
646+
IdentityZoneHolder.get().getConfig().setDefaultIdentityProvider(loginHintOrigin);
643647

644648
instance.authenticate(auth);
645649

650+
/* should read all in the zone during lookup of possible providers
651+
* - "uaa" or "ldap" is used, but not as login hint */
652+
final String idzId = IdentityZoneHolder.get().getId();
653+
verify(identityProviderProvisioning, times(1)).retrieveActive(idzId);
654+
verify(identityProviderProvisioning, times(0)).retrieveByOrigin(loginHintOrigin, idzId);
655+
646656
verify(zoneAwareAuthzAuthenticationManager, times(1)).authenticate(auth);
647657
ArgumentCaptor<UaaLoginHint> captor = ArgumentCaptor.forClass(UaaLoginHint.class);
648658
verify(zoneAwareAuthzAuthenticationManager, times(1)).setLoginHint(eq(auth), captor.capture());
649-
assertNotNull(captor.getValue());
650-
assertEquals("uaa", captor.getValue().getOrigin());
659+
Assertions.assertNotNull(captor.getValue());
660+
Assertions.assertEquals(loginHintOrigin, captor.getValue().getOrigin());
651661
}
652662

653663
@Test
@@ -724,24 +734,30 @@ void testOIDCPasswordGrant_LoginHintOidcOverridesDefaultUaa() {
724734
verify(identityProviderProvisioning, times(0)).retrieveActive(any());
725735
}
726736

727-
@Test
728-
void testOIDCPasswordGrant_LoginHintUaaOverridesDefaultOidc() {
737+
@ParameterizedTest
738+
@ValueSource(strings = { OriginKeys.UAA, OriginKeys.LDAP })
739+
void testOIDCPasswordGrant_LoginHintUaaOrLdapOverridesDefaultOidc(final String loginHintOrigin) {
729740
UaaLoginHint loginHint = mock(UaaLoginHint.class);
730-
when(loginHint.getOrigin()).thenReturn("uaa");
741+
when(loginHint.getOrigin()).thenReturn(loginHintOrigin);
731742
Authentication auth = mock(Authentication.class);
732-
when(zoneAwareAuthzAuthenticationManager.extractLoginHint(auth)).thenReturn(null);
743+
when(zoneAwareAuthzAuthenticationManager.extractLoginHint(auth)).thenReturn(loginHint);
733744
Map<String, Object> additionalInformation = new HashMap<>();
734-
additionalInformation.put(ClientConstants.ALLOWED_PROVIDERS, Collections.singletonList("uaa"));
745+
additionalInformation.put(ClientConstants.ALLOWED_PROVIDERS, Collections.singletonList(loginHintOrigin));
735746
when(uaaClient.getAdditionalInformation()).thenReturn(additionalInformation);
736747
IdentityZoneHolder.get().getConfig().setDefaultIdentityProvider("oidcprovider");
737748

738749
instance.authenticate(auth);
739750

751+
// should read only "uaa" or "ldap" IdP during lookup of possible providers
752+
final String idzId = IdentityZoneHolder.get().getId();
753+
verify(identityProviderProvisioning, times(0)).retrieveActive(idzId);
754+
verify(identityProviderProvisioning, times(1)).retrieveByOrigin(loginHintOrigin, idzId);
755+
740756
verify(zoneAwareAuthzAuthenticationManager, times(1)).authenticate(auth);
741757
ArgumentCaptor<UaaLoginHint> captor = ArgumentCaptor.forClass(UaaLoginHint.class);
742758
verify(zoneAwareAuthzAuthenticationManager, times(1)).setLoginHint(eq(auth), captor.capture());
743-
assertNotNull(captor.getValue());
744-
assertEquals("uaa", captor.getValue().getOrigin());
759+
Assertions.assertNotNull(captor.getValue());
760+
Assertions.assertEquals(loginHintOrigin, captor.getValue().getOrigin());
745761
}
746762

747763
@Test

0 commit comments

Comments
 (0)