Wrap RuntimeException in fromOidcConfiguration
This commit makes so that fromOidcConfiguration throws the same exception caused by chain as other configuration methods. Specifically, if parsing throws a RuntimeException, this method will now wrap it in an IllegalArgumentException as other configuration methods do. This makes specific sense here since the RuntimeException is almost certainly caused by a malformed configuration set handed in as a method parameter. Signed-off-by: Josh Cummings <3627351+jzheaux@users.noreply.github.com>
This commit is contained in:
+10
-1
@@ -105,7 +105,7 @@ public final class ClientRegistrations {
|
||||
* @return the {@link ClientRegistration} built from the configuration
|
||||
*/
|
||||
public static ClientRegistration.Builder fromOidcConfiguration(Map<String, Object> configuration) {
|
||||
OIDCProviderMetadata metadata = parse(configuration, OIDCProviderMetadata::parse);
|
||||
OIDCProviderMetadata metadata = parseInput(configuration, OIDCProviderMetadata::parse);
|
||||
ClientRegistration.Builder builder = withProviderConfiguration(metadata, metadata.getIssuer().getValue());
|
||||
builder.jwkSetUri(metadata.getJWKSetURI().toASCIIString());
|
||||
if (metadata.getUserInfoEndpointURI() != null) {
|
||||
@@ -292,6 +292,15 @@ public final class ClientRegistrations {
|
||||
throw new IllegalArgumentException(errorMessage);
|
||||
}
|
||||
|
||||
private static <T> T parseInput(Map<String, Object> body, ThrowingFunction<JSONObject, T, ParseException> parser) {
|
||||
try {
|
||||
return parse(body, parser);
|
||||
}
|
||||
catch (RuntimeException ex) {
|
||||
throw new IllegalArgumentException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static <T> T parse(Map<String, Object> body, ThrowingFunction<JSONObject, T, ParseException> parser) {
|
||||
try {
|
||||
return parser.apply(new JSONObject(body));
|
||||
|
||||
+1
-2
@@ -40,7 +40,6 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
import static org.assertj.core.api.Assertions.assertThatNullPointerException;
|
||||
|
||||
/**
|
||||
* @author Rob Winch
|
||||
@@ -475,7 +474,7 @@ public class ClientRegistrationsTests {
|
||||
@Test
|
||||
public void issuerWhenOidcConfigurationResponseMissingJwksUriThenThrowsIllegalArgumentException() throws Exception {
|
||||
this.response.remove("jwks_uri");
|
||||
assertThatNullPointerException().isThrownBy(() -> registration(this.response).build());
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> registration(this.response).build());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user