diff --git a/services/src/main/java/org/keycloak/social/openshift/OpenshifV3IdentityProviderConfig.java b/services/src/main/java/org/keycloak/social/openshift/OpenshifV3IdentityProviderConfig.java index d945aaca21..cd931f82e5 100644 --- a/services/src/main/java/org/keycloak/social/openshift/OpenshifV3IdentityProviderConfig.java +++ b/services/src/main/java/org/keycloak/social/openshift/OpenshifV3IdentityProviderConfig.java @@ -15,6 +15,13 @@ public class OpenshifV3IdentityProviderConfig extends OAuth2IdentityProviderConf } public void setBaseUrl(String baseUrl) { - getConfig().put(BASE_URL, baseUrl); + getConfig().put(BASE_URL, trimTrailingSlash(baseUrl)); + } + + private String trimTrailingSlash(String baseUrl) { + if (baseUrl != null && baseUrl.endsWith("/")) { + baseUrl = baseUrl.substring(0, baseUrl.length() - 1); + } + return baseUrl; } } diff --git a/services/src/test/java/org/keycloak/social/openshift/OpenshiftV3IdentityProviderTest.java b/services/src/test/java/org/keycloak/social/openshift/OpenshiftV3IdentityProviderTest.java new file mode 100644 index 0000000000..e39f157681 --- /dev/null +++ b/services/src/test/java/org/keycloak/social/openshift/OpenshiftV3IdentityProviderTest.java @@ -0,0 +1,33 @@ +package org.keycloak.social.openshift; + +import org.junit.Assert; +import org.junit.Test; +import org.keycloak.models.IdentityProviderModel; + +public class OpenshiftV3IdentityProviderTest { + + @Test + public void shouldConstructProviderUrls() throws Exception { + final OpenshifV3IdentityProviderConfig config = new OpenshifV3IdentityProviderConfig(new IdentityProviderModel()); + config.setBaseUrl("http://openshift.io:8443"); + final OpenshiftV3IdentityProvider openshiftV3IdentityProvider = new OpenshiftV3IdentityProvider(null, config); + + assertConfiguredUrls(openshiftV3IdentityProvider); + } + + @Test + public void shouldConstructProviderUrlsForBaseUrlWithTrailingSlash() throws Exception { + final OpenshifV3IdentityProviderConfig config = new OpenshifV3IdentityProviderConfig(new IdentityProviderModel()); + config.setBaseUrl("http://openshift.io:8443/"); + final OpenshiftV3IdentityProvider openshiftV3IdentityProvider = new OpenshiftV3IdentityProvider(null, config); + + assertConfiguredUrls(openshiftV3IdentityProvider); + } + + private void assertConfiguredUrls(OpenshiftV3IdentityProvider openshiftV3IdentityProvider) { + Assert.assertEquals("http://openshift.io:8443/oauth/authorize", openshiftV3IdentityProvider.getConfig().getAuthorizationUrl()); + Assert.assertEquals("http://openshift.io:8443/oauth/token", openshiftV3IdentityProvider.getConfig().getTokenUrl()); + Assert.assertEquals("http://openshift.io:8443/oapi/v1/users/~", openshiftV3IdentityProvider.getConfig().getUserInfoUrl()); + } + +} \ No newline at end of file