|
@@ -17,11 +17,12 @@ package org.springframework.security.oauth2.core.oidc;
|
|
|
|
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
|
|
|
|
-import java.net.MalformedURLException;
|
|
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.LinkedHashSet;
|
|
import java.util.LinkedHashSet;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Set;
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
@@ -54,7 +55,7 @@ public class OidcProviderConfigurationTests {
|
|
.grantType("authorization_code")
|
|
.grantType("authorization_code")
|
|
.grantType("client_credentials")
|
|
.grantType("client_credentials")
|
|
.subjectType("public")
|
|
.subjectType("public")
|
|
- .tokenEndpointAuthenticationMethod("basic")
|
|
|
|
|
|
+ .tokenEndpointAuthenticationMethod("client_secret_basic")
|
|
.claim("a-claim", "a-value")
|
|
.claim("a-claim", "a-value")
|
|
.build();
|
|
.build();
|
|
|
|
|
|
@@ -66,8 +67,8 @@ public class OidcProviderConfigurationTests {
|
|
assertThat(providerConfiguration.getResponseTypes()).containsExactly("code");
|
|
assertThat(providerConfiguration.getResponseTypes()).containsExactly("code");
|
|
assertThat(providerConfiguration.getGrantTypes()).containsExactlyInAnyOrder("authorization_code", "client_credentials");
|
|
assertThat(providerConfiguration.getGrantTypes()).containsExactlyInAnyOrder("authorization_code", "client_credentials");
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
- assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).containsExactly("basic");
|
|
|
|
- assertThat(providerConfiguration.getClaimAsString("a-claim")).isEqualTo("a-value");
|
|
|
|
|
|
+ assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).containsExactly("client_secret_basic");
|
|
|
|
+ assertThat(providerConfiguration.<String>getClaim("a-claim")).isEqualTo("a-value");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@@ -94,15 +95,15 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildFromClaimsThenCreated() {
|
|
|
|
- HashMap<String, Object> claims = new HashMap<>();
|
|
|
|
|
|
+ public void buildWhenClaimsProvidedThenCreated() {
|
|
|
|
+ Map<String, Object> claims = new HashMap<>();
|
|
claims.put(OidcProviderMetadataClaimNames.ISSUER, "https://example.com/issuer1");
|
|
claims.put(OidcProviderMetadataClaimNames.ISSUER, "https://example.com/issuer1");
|
|
claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, "https://example.com/issuer1/oauth2/authorize");
|
|
claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, "https://example.com/issuer1/oauth2/authorize");
|
|
claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, "https://example.com/issuer1/oauth2/token");
|
|
claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, "https://example.com/issuer1/oauth2/token");
|
|
claims.put(OidcProviderMetadataClaimNames.JWKS_URI, "https://example.com/issuer1/oauth2/jwks");
|
|
claims.put(OidcProviderMetadataClaimNames.JWKS_URI, "https://example.com/issuer1/oauth2/jwks");
|
|
- claims.put(OidcProviderMetadataClaimNames.SCOPES_SUPPORTED, Collections.singleton("openid"));
|
|
|
|
- claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, Collections.singleton("code"));
|
|
|
|
- claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, Collections.singleton("public"));
|
|
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SCOPES_SUPPORTED, Collections.singletonList("openid"));
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, Collections.singletonList("code"));
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, Collections.singletonList("public"));
|
|
claims.put("some-claim", "some-value");
|
|
claims.put("some-claim", "some-value");
|
|
|
|
|
|
OidcProviderConfiguration providerConfiguration = OidcProviderConfiguration.withClaims(claims).build();
|
|
OidcProviderConfiguration providerConfiguration = OidcProviderConfiguration.withClaims(claims).build();
|
|
@@ -116,19 +117,19 @@ public class OidcProviderConfigurationTests {
|
|
assertThat(providerConfiguration.getGrantTypes()).isNull();
|
|
assertThat(providerConfiguration.getGrantTypes()).isNull();
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).isNull();
|
|
assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).isNull();
|
|
- assertThat(providerConfiguration.getClaimAsString("some-claim")).isEqualTo("some-value");
|
|
|
|
|
|
+ assertThat(providerConfiguration.<String>getClaim("some-claim")).isEqualTo("some-value");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildFromClaimsWhenUsingUrlsThenCreated() {
|
|
|
|
- HashMap<String, Object> claims = new HashMap<>();
|
|
|
|
|
|
+ public void buildWhenClaimsProvidedWithUrlsThenCreated() {
|
|
|
|
+ Map<String, Object> claims = new HashMap<>();
|
|
claims.put(OidcProviderMetadataClaimNames.ISSUER, url("https://example.com/issuer1"));
|
|
claims.put(OidcProviderMetadataClaimNames.ISSUER, url("https://example.com/issuer1"));
|
|
claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, url("https://example.com/issuer1/oauth2/authorize"));
|
|
claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, url("https://example.com/issuer1/oauth2/authorize"));
|
|
claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, url("https://example.com/issuer1/oauth2/token"));
|
|
claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, url("https://example.com/issuer1/oauth2/token"));
|
|
claims.put(OidcProviderMetadataClaimNames.JWKS_URI, url("https://example.com/issuer1/oauth2/jwks"));
|
|
claims.put(OidcProviderMetadataClaimNames.JWKS_URI, url("https://example.com/issuer1/oauth2/jwks"));
|
|
- claims.put(OidcProviderMetadataClaimNames.SCOPES_SUPPORTED, Collections.singleton("openid"));
|
|
|
|
- claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, Collections.singleton("code"));
|
|
|
|
- claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, Collections.singleton("public"));
|
|
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SCOPES_SUPPORTED, Collections.singletonList("openid"));
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, Collections.singletonList("code"));
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, Collections.singletonList("public"));
|
|
claims.put("some-claim", "some-value");
|
|
claims.put("some-claim", "some-value");
|
|
|
|
|
|
OidcProviderConfiguration providerConfiguration = OidcProviderConfiguration.withClaims(claims).build();
|
|
OidcProviderConfiguration providerConfiguration = OidcProviderConfiguration.withClaims(claims).build();
|
|
@@ -142,45 +143,46 @@ public class OidcProviderConfigurationTests {
|
|
assertThat(providerConfiguration.getGrantTypes()).isNull();
|
|
assertThat(providerConfiguration.getGrantTypes()).isNull();
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
assertThat(providerConfiguration.getSubjectTypes()).containsExactly("public");
|
|
assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).isNull();
|
|
assertThat(providerConfiguration.getTokenEndpointAuthenticationMethods()).isNull();
|
|
- assertThat(providerConfiguration.getClaimAsString("some-claim")).isEqualTo("some-value");
|
|
|
|
|
|
+ assertThat(providerConfiguration.<String>getClaim("some-claim")).isEqualTo("some-value");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void withClaimsWhenNullThenThrowsException() {
|
|
|
|
|
|
+ public void withClaimsWhenNullThenThrowIllegalArgumentException() {
|
|
assertThatThrownBy(() -> OidcProviderConfiguration.withClaims(null))
|
|
assertThatThrownBy(() -> OidcProviderConfiguration.withClaims(null))
|
|
.isInstanceOf(IllegalArgumentException.class);
|
|
.isInstanceOf(IllegalArgumentException.class);
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void withClaimsWhenMissingRequiredClaimsThenThrowsException() {
|
|
|
|
|
|
+ public void withClaimsWhenMissingRequiredClaimsThenThrowIllegalArgumentException() {
|
|
assertThatThrownBy(() -> OidcProviderConfiguration.withClaims(Collections.emptyMap()))
|
|
assertThatThrownBy(() -> OidcProviderConfiguration.withClaims(Collections.emptyMap()))
|
|
- .isInstanceOf(IllegalArgumentException.class);
|
|
|
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
|
+ .hasMessage("claims cannot be empty");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void buildWhenCalledTwiceThenGeneratesTwoConfigurations() {
|
|
public void buildWhenCalledTwiceThenGeneratesTwoConfigurations() {
|
|
- OidcProviderConfiguration first = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration first = this.minimalConfigurationBuilder
|
|
.grantType("client_credentials")
|
|
.grantType("client_credentials")
|
|
.build();
|
|
.build();
|
|
|
|
|
|
- OidcProviderConfiguration second = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration second = this.minimalConfigurationBuilder
|
|
.claims((claims) ->
|
|
.claims((claims) ->
|
|
{
|
|
{
|
|
- LinkedHashSet<String> newGrantTypes = new LinkedHashSet<>();
|
|
|
|
|
|
+ Set<String> newGrantTypes = new LinkedHashSet<>();
|
|
newGrantTypes.add("authorization_code");
|
|
newGrantTypes.add("authorization_code");
|
|
- newGrantTypes.add("implicit");
|
|
|
|
|
|
+ newGrantTypes.add("custom_grant");
|
|
claims.put(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED, newGrantTypes);
|
|
claims.put(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED, newGrantTypes);
|
|
}
|
|
}
|
|
)
|
|
)
|
|
.build();
|
|
.build();
|
|
|
|
|
|
assertThat(first.getGrantTypes()).containsExactly("client_credentials");
|
|
assertThat(first.getGrantTypes()).containsExactly("client_credentials");
|
|
- assertThat(second.getGrantTypes()).containsExactlyInAnyOrder("authorization_code", "implicit");
|
|
|
|
|
|
+ assertThat(second.getGrantTypes()).containsExactlyInAnyOrder("authorization_code", "custom_grant");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingIssuerThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingIssuerThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.ISSUER));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.ISSUER));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
@@ -189,18 +191,18 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenIssuerIsNotAnUrlThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenIssuerNotUrlThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.ISSUER, "not an url"));
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.ISSUER, "not an url"));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
- .hasMessageStartingWith("issuer must be a valid URL");
|
|
|
|
|
|
+ .hasMessage("issuer must be a valid URL");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingAuthorizationEndpointThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingAuthorizationEndpointThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
@@ -209,8 +211,8 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenAuthorizationEndpointIsNotAnUrlThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenAuthorizationEndpointNotUrlThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, "not an url"));
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.AUTHORIZATION_ENDPOINT, "not an url"));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
@@ -219,8 +221,8 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingTokenEndpointThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingTokenEndpointThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
@@ -229,8 +231,8 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenTokenEndpointIsNotAnUrlThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenTokenEndpointNotUrlThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, "not an url"));
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.TOKEN_ENDPOINT, "not an url"));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
@@ -239,48 +241,100 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingJwksUriThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingJwksUriThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.JWKS_URI));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.JWKS_URI));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
- .hasMessage("jwkSetUri cannot be null");
|
|
|
|
|
|
+ .hasMessage("jwksUri cannot be null");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWheJwksUriIsNotAnUrlThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenJwksUriNotUrlThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.JWKS_URI, "not an url"));
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.JWKS_URI, "not an url"));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
- .hasMessageStartingWith("jwkSetUri must be a valid URL");
|
|
|
|
|
|
+ .hasMessageStartingWith("jwksUri must be a valid URL");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingResponseTypesThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingResponseTypesThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
- .hasMessage("responseTypes cannot be empty");
|
|
|
|
|
|
+ .hasMessage("responseTypes cannot be null");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void buildWhenResponseTypesNotListThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
|
|
+ .claims((claims) -> {
|
|
|
|
+ claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED);
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, "code");
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ assertThatThrownBy(builder::build)
|
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
|
+ .hasMessageContaining("responseTypes must be of type List");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void buildWhenResponseTypesEmptyListThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
|
|
+ .claims((claims) -> {
|
|
|
|
+ claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED);
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED, Collections.emptyList());
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ assertThatThrownBy(builder::build)
|
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
|
+ .hasMessageContaining("responseTypes cannot be empty");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void buildWhenMissingSubjectTypesThenThrowsException() {
|
|
|
|
- OidcProviderConfiguration.Builder builder = minimalConfigurationBuilder
|
|
|
|
|
|
+ public void buildWhenMissingSubjectTypesThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED));
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED));
|
|
|
|
|
|
assertThatThrownBy(builder::build)
|
|
assertThatThrownBy(builder::build)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
- .hasMessage("subjectTypes cannot be empty");
|
|
|
|
|
|
+ .hasMessage("subjectTypes cannot be null");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void buildWhenSubjectTypesNotListThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
|
|
+ .claims((claims) -> {
|
|
|
|
+ claims.remove(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED);
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, "public");
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ assertThatThrownBy(builder::build)
|
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
|
+ .hasMessageContaining("subjectTypes must be of type List");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void buildWhenSubjectTypesEmptyListThenThrowIllegalArgumentException() {
|
|
|
|
+ OidcProviderConfiguration.Builder builder = this.minimalConfigurationBuilder
|
|
|
|
+ .claims((claims) -> {
|
|
|
|
+ claims.remove(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED);
|
|
|
|
+ claims.put(OidcProviderMetadataClaimNames.SUBJECT_TYPES_SUPPORTED, Collections.emptyList());
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ assertThatThrownBy(builder::build)
|
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
|
+ .hasMessageContaining("subjectTypes cannot be empty");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void responseTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
public void responseTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.responseType("should-be-removed")
|
|
.responseType("should-be-removed")
|
|
.responseTypes(responseTypes -> {
|
|
.responseTypes(responseTypes -> {
|
|
responseTypes.clear();
|
|
responseTypes.clear();
|
|
@@ -293,7 +347,7 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void responseTypesWhenNotPresentAndAddingThenCorrectValues() {
|
|
public void responseTypesWhenNotPresentAndAddingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.claims(claims -> claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED))
|
|
.claims(claims -> claims.remove(OidcProviderMetadataClaimNames.RESPONSE_TYPES_SUPPORTED))
|
|
.responseTypes(responseTypes -> responseTypes.add("some-response-type"))
|
|
.responseTypes(responseTypes -> responseTypes.add("some-response-type"))
|
|
.build();
|
|
.build();
|
|
@@ -303,7 +357,7 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void subjectTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
public void subjectTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.subjectType("should-be-removed")
|
|
.subjectType("should-be-removed")
|
|
.subjectTypes(subjectTypes -> {
|
|
.subjectTypes(subjectTypes -> {
|
|
subjectTypes.clear();
|
|
subjectTypes.clear();
|
|
@@ -316,7 +370,7 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void scopesWhenAddingOrRemovingThenCorrectValues() {
|
|
public void scopesWhenAddingOrRemovingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.scope("should-be-removed")
|
|
.scope("should-be-removed")
|
|
.scopes(scopes -> {
|
|
.scopes(scopes -> {
|
|
scopes.clear();
|
|
scopes.clear();
|
|
@@ -329,7 +383,7 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void grantTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
public void grantTypesWhenAddingOrRemovingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.grantType("should-be-removed")
|
|
.grantType("should-be-removed")
|
|
.grantTypes(grantTypes -> {
|
|
.grantTypes(grantTypes -> {
|
|
grantTypes.clear();
|
|
grantTypes.clear();
|
|
@@ -342,7 +396,7 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void tokenEndpointAuthenticationMethodsWhenAddingOrRemovingThenCorrectValues() {
|
|
public void tokenEndpointAuthenticationMethodsWhenAddingOrRemovingThenCorrectValues() {
|
|
- OidcProviderConfiguration configuration = minimalConfigurationBuilder
|
|
|
|
|
|
+ OidcProviderConfiguration configuration = this.minimalConfigurationBuilder
|
|
.tokenEndpointAuthenticationMethod("should-be-removed")
|
|
.tokenEndpointAuthenticationMethod("should-be-removed")
|
|
.tokenEndpointAuthenticationMethods(authMethods -> {
|
|
.tokenEndpointAuthenticationMethods(authMethods -> {
|
|
authMethods.clear();
|
|
authMethods.clear();
|
|
@@ -355,24 +409,22 @@ public class OidcProviderConfigurationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void claimWhenNameIsNullThenThrowIllegalArgumentException() {
|
|
public void claimWhenNameIsNullThenThrowIllegalArgumentException() {
|
|
- OidcProviderConfiguration.Builder builder = OidcProviderConfiguration.withClaims();
|
|
|
|
- assertThatThrownBy(() -> builder.claim(null, "value"))
|
|
|
|
|
|
+ assertThatThrownBy(() -> OidcProviderConfiguration.withClaims().claim(null, "value"))
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.hasMessage("name cannot be empty");
|
|
.hasMessage("name cannot be empty");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
public void claimWhenValueIsNullThenThrowIllegalArgumentException() {
|
|
public void claimWhenValueIsNullThenThrowIllegalArgumentException() {
|
|
- OidcProviderConfiguration.Builder builder = OidcProviderConfiguration.withClaims();
|
|
|
|
- assertThatThrownBy(() -> builder.claim("claim-name", null))
|
|
|
|
|
|
+ assertThatThrownBy(() -> OidcProviderConfiguration.withClaims().claim("claim-name", null))
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
.hasMessage("value cannot be null");
|
|
.hasMessage("value cannot be null");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void claimsWhenRemovingAClaimThenIsNotPresent() {
|
|
|
|
|
|
+ public void claimsWhenRemovingClaimThenNotPresent() {
|
|
OidcProviderConfiguration configuration =
|
|
OidcProviderConfiguration configuration =
|
|
- minimalConfigurationBuilder
|
|
|
|
|
|
+ this.minimalConfigurationBuilder
|
|
.grantType("some-grant-type")
|
|
.grantType("some-grant-type")
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED))
|
|
.claims((claims) -> claims.remove(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED))
|
|
.build();
|
|
.build();
|
|
@@ -380,9 +432,9 @@ public class OidcProviderConfigurationTests {
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
- public void claimsWhenAddingAClaimThenIsPresent() {
|
|
|
|
|
|
+ public void claimsWhenAddingClaimThenPresent() {
|
|
OidcProviderConfiguration configuration =
|
|
OidcProviderConfiguration configuration =
|
|
- minimalConfigurationBuilder
|
|
|
|
|
|
+ this.minimalConfigurationBuilder
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED, "authorization_code"))
|
|
.claims((claims) -> claims.put(OidcProviderMetadataClaimNames.GRANT_TYPES_SUPPORTED, "authorization_code"))
|
|
.build();
|
|
.build();
|
|
assertThat(configuration.getGrantTypes()).containsExactly("authorization_code");
|
|
assertThat(configuration.getGrantTypes()).containsExactly("authorization_code");
|
|
@@ -391,7 +443,7 @@ public class OidcProviderConfigurationTests {
|
|
private static URL url(String urlString) {
|
|
private static URL url(String urlString) {
|
|
try {
|
|
try {
|
|
return new URL(urlString);
|
|
return new URL(urlString);
|
|
- } catch (MalformedURLException e) {
|
|
|
|
|
|
+ } catch (Exception ex) {
|
|
throw new IllegalArgumentException("urlString must be a valid URL and valid URI");
|
|
throw new IllegalArgumentException("urlString must be a valid URL and valid URI");
|
|
}
|
|
}
|
|
}
|
|
}
|