test(auth): use concrete OAuth registrations

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
This commit is contained in:
XiaoSeS 2026-07-30 17:46:11 +08:00
parent 9ef272e32b
commit a95d639eb7
3 changed files with 42 additions and 6 deletions

View file

@ -9,6 +9,7 @@ import java.util.Set;
import org.junit.jupiter.api.Test;
import org.mockito.InOrder;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
class DefaultIdentityProviderReadinessServiceTest {
@ -20,7 +21,7 @@ class DefaultIdentityProviderReadinessServiceTest {
mock(TrustedProviderDescriptorSource.class);
ProviderAuthorityLockService authorityLockService =
mock(ProviderAuthorityLockService.class);
ClientRegistration registration = mock(ClientRegistration.class);
ClientRegistration registration = registration();
ResolvedProviderHandle handle =
new DefaultResolvedProviderHandle("github");
ProviderDescriptor descriptor = descriptor();
@ -58,4 +59,22 @@ class DefaultIdentityProviderReadinessServiceTest {
List.of("avatar_url"),
EmailAssurance.VERIFIED);
}
private static ClientRegistration registration() {
return ClientRegistration.withRegistrationId("github")
.clientId("client")
.clientSecret("secret")
.authorizationGrantType(
AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUri(
"{baseUrl}/login/oauth2/code/{registrationId}")
.authorizationUri(
"https://github.com/login/oauth/authorize")
.tokenUri(
"https://github.com/login/oauth/access_token")
.userInfoUri("https://api.github.com/user")
.userNameAttributeName("id")
.clientName("GitHub")
.build();
}
}

View file

@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
import java.util.List;
@ -41,9 +42,7 @@ class ReconciledIdentityProviderCatalogTest {
"github",
"GitHub"));
InOrder order = inOrder(authorityLockService);
order.verify(authorityLockService)
.requirePinnedAuthority(github);
order.verify(authorityLockService)
order.verify(authorityLockService, times(2))
.requirePinnedAuthority(github);
order.verify(authorityLockService).isReady(github);
}

View file

@ -18,6 +18,7 @@ import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
class IdentityProviderRouteReadinessFilterTest {
@ -32,8 +33,7 @@ class IdentityProviderRouteReadinessFilterTest {
ClientRegistrationRepository.class);
readinessService = mock(
IdentityProviderReadinessService.class);
registration = mock(ClientRegistration.class);
when(registration.getRegistrationId()).thenReturn("github");
registration = registration();
when(registrationRepository.findByRegistrationId("github"))
.thenReturn(registration);
filter = new IdentityProviderRouteReadinessFilter(
@ -132,4 +132,22 @@ class IdentityProviderRouteReadinessFilterTest {
request.setServletPath(uri);
return request;
}
private static ClientRegistration registration() {
return ClientRegistration.withRegistrationId("github")
.clientId("client")
.clientSecret("secret")
.authorizationGrantType(
AuthorizationGrantType.AUTHORIZATION_CODE)
.redirectUri(
"{baseUrl}/login/oauth2/code/{registrationId}")
.authorizationUri(
"https://github.com/login/oauth/authorize")
.tokenUri(
"https://github.com/login/oauth/access_token")
.userInfoUri("https://api.github.com/user")
.userNameAttributeName("id")
.clientName("GitHub")
.build();
}
}