diff --git a/src/test/java/org/gcube/common/keycloak/TestKeycloakClient.java b/src/test/java/org/gcube/common/keycloak/TestKeycloakClient.java index aeef20b..8db4816 100644 --- a/src/test/java/org/gcube/common/keycloak/TestKeycloakClient.java +++ b/src/test/java/org/gcube/common/keycloak/TestKeycloakClient.java @@ -19,12 +19,13 @@ public class TestKeycloakClient { protected static final Logger logger = LoggerFactory.getLogger(TestKeycloakClient.class); - private static final String DEV_ENDPOINT = "http://accounts.dev.d4science.org/auth/realms/d4science/protocol/openid-connect/token"; + private static final String DEV_ENDPOINT = "https://accounts.dev.d4science.org/auth/realms/d4science/protocol/openid-connect/token"; private static final String CLIENT_ID = "keycloak-client"; private static final String CLIENT_SECRET = "38f76152-2b7c-418f-9b67-66f4cc2f401e"; private static final String TEST_AUDIENCE = "conductor-server"; - private static TokenResponse tr = null; + private static TokenResponse oidcTR = null; + private static TokenResponse umaTR = null; @Before public void setUp() throws Exception { @@ -36,53 +37,91 @@ public class TestKeycloakClient { } @Test - public void test1EndpointDiscovery() throws Exception { - logger.info("Start testing Keycloak endpoint discovery..."); + public void test01EndpointDiscovery() throws Exception { + logger.info("*** [0.1] Start testing Keycloak endpoint discovery..."); URL url = KeycloakClientFactory.newInstance().findTokenEndpointURL(); Assert.assertNotNull(url); Assert.assertTrue(url.getProtocol().equals("https")); + Assert.assertEquals(new URL(DEV_ENDPOINT), url); logger.info("Discovered URL is: {}", url); } @Test - public void test2QueryUMATokenWithDiscoveryInCurrentScope() throws Exception { - logger.info("Start testing query UMA token from Keycloak with endpoint discovery and current scope..."); - tr = KeycloakClientFactory.newInstance().queryUMAToken(CLIENT_ID, CLIENT_SECRET, null); - TestModels.checkTokenResponse(tr); - TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(tr), "service-account-" + CLIENT_ID); + public void test11QueryOIDCTokenWithDiscoveryInCurrentScope() throws Exception { + logger.info("*** [1.1] Start testing query OIDC token from Keycloak with endpoint discovery and current scope..."); + oidcTR = KeycloakClientFactory.newInstance().queryOIDCToken(CLIENT_ID, CLIENT_SECRET); + TestModels.checkTokenResponse(oidcTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(oidcTR), "service-account-" + CLIENT_ID); } @Test - public void test3QueryUMATokenWithDiscovery() throws Exception { - logger.info("Start testing query UMA token from Keycloak with endpoint discovery..."); - tr = KeycloakClientFactory.newInstance().queryUMAToken(CLIENT_ID, CLIENT_SECRET, TEST_AUDIENCE, null); - TestModels.checkTokenResponse(tr); - TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(tr), "service-account-" + CLIENT_ID); + public void test12QueryOIDCToken() throws Exception { + logger.info("*** [1.2] Start testing query OIDC token from Keycloak with URL..."); + oidcTR = KeycloakClientFactory.newInstance().queryOIDCToken(new URL(DEV_ENDPOINT), CLIENT_ID, CLIENT_SECRET); + TestModels.checkTokenResponse(oidcTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(oidcTR), "service-account-" + CLIENT_ID); } @Test - public void test4QueryUMAToken() throws Exception { - logger.info("Start testing query UMA token from Keycloak with URL..."); - tr = KeycloakClientFactory.newInstance().queryUMAToken(new URL(DEV_ENDPOINT), CLIENT_ID, CLIENT_SECRET, + public void test13RefreshOIDCTokenWithDiscovery() throws Exception { + logger.info("*** [1.3] Start testing refresh OIDC token from Keycloak with endpoint discovery..."); + TokenResponse refreshedTR = KeycloakClientFactory.newInstance().refreshToken(CLIENT_ID, CLIENT_SECRET, oidcTR); + TestModels.checkTokenResponse(refreshedTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(refreshedTR), "service-account-" + CLIENT_ID); + TestModels.checkRefreshToken(ModelUtils.getRefreshTokenFrom(refreshedTR)); + } + + @Test + public void test21QueryUMATokenWithDiscoveryInCurrentScope() throws Exception { + logger.info( + "*** [2.1] Start testing query UMA token from Keycloak with endpoint discovery and current scope as audience..."); + + umaTR = KeycloakClientFactory.newInstance().queryUMAToken(CLIENT_ID, CLIENT_SECRET, null); + TestModels.checkTokenResponse(umaTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(umaTR), "service-account-" + CLIENT_ID); + } + + @Test + public void test22QueryUMATokenWithDiscovery() throws Exception { + logger.info("*** [2.2] Start testing query UMA token from Keycloak with endpoint discovery..."); + umaTR = KeycloakClientFactory.newInstance().queryUMAToken(CLIENT_ID, CLIENT_SECRET, TEST_AUDIENCE, null); + TestModels.checkTokenResponse(umaTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(umaTR), "service-account-" + CLIENT_ID); + } + + @Test + public void test23QueryUMATokenWithDiscoveryWithOIDCAuthorization() throws Exception { + logger.info( + "*** [2.3] Start testing query UMA token from Keycloak with endpoint discovery and OIDC access token for authorization..."); + + umaTR = KeycloakClientFactory.newInstance().queryUMAToken(oidcTR, TEST_AUDIENCE, null); + TestModels.checkTokenResponse(umaTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(umaTR), "service-account-" + CLIENT_ID); + } + + @Test + public void test24QueryUMAToken() throws Exception { + logger.info("*** [2.4] Start testing query UMA token from Keycloak with URL..."); + umaTR = KeycloakClientFactory.newInstance().queryUMAToken(new URL(DEV_ENDPOINT), CLIENT_ID, CLIENT_SECRET, TEST_AUDIENCE, null); - TestModels.checkTokenResponse(tr); - TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(tr), "service-account-" + CLIENT_ID); + TestModels.checkTokenResponse(umaTR); + TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(umaTR), "service-account-" + CLIENT_ID); } @Test - public void test5RefreshTokenWithDiscovery() throws Exception { - logger.info("Start testing refresh UMA token from Keycloak with endpoint discovery..."); - TokenResponse refreshedTR = KeycloakClientFactory.newInstance().refreshToken(CLIENT_ID, CLIENT_SECRET, tr); + public void test25RefreshUMATokenWithDiscovery() throws Exception { + logger.info("*** [2.5] Start testing refresh UMA token from Keycloak with endpoint discovery..."); + TokenResponse refreshedTR = KeycloakClientFactory.newInstance().refreshToken(CLIENT_ID, CLIENT_SECRET, umaTR); TestModels.checkTokenResponse(refreshedTR); TestModels.checkAccessToken(ModelUtils.getAccessTokenFrom(refreshedTR), "service-account-" + CLIENT_ID); TestModels.checkRefreshToken(ModelUtils.getRefreshTokenFrom(refreshedTR)); } @Test(expected = KeycloakClientException.class) - public void test6RefreshTokenWithDiscoveryAndClientIdFromRefreshToken() throws Exception { - logger.info("Start testing refresh UMA token with error since is not a public client..."); - KeycloakClientFactory.newInstance().refreshToken(tr.getRefreshToken()); + public void test26RefreshTokenWithDiscoveryAndClientIdFromRefreshToken() throws Exception { + logger.info("*** [2.6] Start testing refresh UMA token *with error* since is not a public client..."); + KeycloakClientFactory.newInstance().refreshToken(umaTR.getRefreshToken()); } } diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml index 266b477..3c7aad1 100644 --- a/src/test/resources/log4j.xml +++ b/src/test/resources/log4j.xml @@ -12,7 +12,7 @@ - +