Commit 7bf32a43 authored by Labros Papadopoulos's avatar Labros Papadopoulos
Browse files

feat: use oidc base url to retrieve oidc provider access token

parent 7cd33ca8
Loading
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -72,7 +72,8 @@ public class OssRestClientImpl {
            String oauth2ClientSecret,
            String username,
            String password,
            String organizationId) {
            String organizationId,
            String oidcBaseUrl) {

        return executeWithRetry(
                baseUrl,
@@ -82,6 +83,7 @@ public class OssRestClientImpl {
                oauth2ClientSecret,
                username,
                password,
                oidcBaseUrl,
                (client, token) -> {
                    Response response = client.getServiceSpecifications("Bearer " + token.getAccessToken());
                    String jsonResponse = response.readEntity(String.class);
@@ -98,7 +100,8 @@ public class OssRestClientImpl {
            String username,
            String password,
            String serviceSpecificationId,
            String organizationId) {
            String organizationId,
            String oidcBaseUrl) {

        return executeWithRetry(
                baseUrl,
@@ -108,6 +111,7 @@ public class OssRestClientImpl {
                oauth2ClientSecret,
                username,
                password,
                oidcBaseUrl,
                (client, token) -> {
                    Response response =
                            client.getServiceSpecificationById(
@@ -122,7 +126,7 @@ public class OssRestClientImpl {

    Tokens createToken(
            String name,
            String baseUrl,
            String oidcBaseUrl,
            String oauth2ClientId,
            String oauth2ClientSecret,
            String username,
@@ -130,7 +134,7 @@ public class OssRestClientImpl {
        logger.debugf("Will retrieve a fresh token for org: %s", name);
        Uni<OidcClient> oidcClientUni =
                oidcClientCreator.createOidcClient(
                        name, baseUrl, oauth2ClientId, oauth2ClientSecret, username, password);
                        name, oidcBaseUrl, oauth2ClientId, oauth2ClientSecret, username, password);
        TokensHelper tokenHelper = new TokensHelper();
        return tokenHelper.getTokens(oidcClientUni.await().indefinitely()).await().indefinitely();
    }
@@ -143,11 +147,12 @@ public class OssRestClientImpl {
            String secret,
            String user,
            String pass,
            String oidcBaseUrl,
            BiFunctionWithException<OssRestClient, Tokens, T> action) {
        OssRestClient client = getCachedRestClient(baseUrl);

        // Compute token if missing
        Tokens tokens = getOrComputeToken(orgId, name, baseUrl, clientId, secret, user, pass);
        Tokens tokens = getOrComputeToken(orgId, name, oidcBaseUrl, clientId, secret, user, pass);
        try {
            return action.apply(client, tokens);
        } catch (Exception e) {
@@ -189,12 +194,12 @@ public class OssRestClientImpl {
    Tokens getOrComputeToken(
            String orgId,
            String name,
            String baseUrl,
            String oidcBaseUrl,
            String clientId,
            String secret,
            String user,
            String pass) {
        return tokenCache.get(orgId, k -> createToken(name, baseUrl, clientId, secret, user, pass));
        return tokenCache.get(orgId, k -> createToken(name, oidcBaseUrl, clientId, secret, user, pass));
    }

    public void removeCachedToken(String organizationId) {
+4 −2
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ public class HealthCheckService {
                        ossClientData.getOauth2ClientSecret(),
                        peeringInfoSecret.getUsername(),
                        peeringInfoSecret.getPassword(),
                        ossClientData.getOrganizationId());
                        ossClientData.getOrganizationId(),
                        ossClientData.getOauth2TokenUri());

        List<ServiceSpecificationEntity> updatedServiceSpecificationEntities = new ArrayList<>();

@@ -112,7 +113,8 @@ public class HealthCheckService {
                            peeringInfoSecret.getUsername(),
                            peeringInfoSecret.getPassword(),
                            entry.getKey(),
                            ossClientData.getOrganizationId());
                            ossClientData.getOrganizationId(),
                            ossClientData.getOauth2TokenUri());
            serviceSpecificationEntityList.add(serviceSpecificationEntity);
        }

+4 −2
Original line number Diff line number Diff line
@@ -164,7 +164,8 @@ public class PeeringService {
                            ossLifecycleData.getOauth2ClientSecret(),
                            ossLifecycleData.getUsername(),
                            ossLifecycleData.getPassword(),
                            ossLifecycleData.getOrganizationId());
                            ossLifecycleData.getOrganizationId(),
                            ossLifecycleData.getOauth2TokenUri());

        } catch (OidcClientException oidcClientException) {
            logger.errorf(
@@ -194,7 +195,8 @@ public class PeeringService {
                                ossLifecycleData.getUsername(),
                                ossLifecycleData.getPassword(),
                                entry.getKey(),
                                ossLifecycleData.getOrganizationId());
                                ossLifecycleData.getOrganizationId(),
                                ossLifecycleData.getOauth2TokenUri());
                serviceSpecificationEntityList.add(serviceSpecificationEntity);
            }

+3 −3
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ class OssRestClientImplTest {

        List<ServiceSpecificationEntity> result =
                ossRestClient.callOssToGetServiceSpecifications(
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", ORG_ID);
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", ORG_ID, TEST_BASE_URL);

        assertNotNull(result);
        assertEquals(1, result.size());
@@ -103,7 +103,7 @@ class OssRestClientImplTest {

        List<ServiceSpecificationEntity> result =
                ossRestClient.callOssToGetServiceSpecifications(
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", ORG_ID);
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", ORG_ID, TEST_BASE_URL);

        assertNotNull(result);

@@ -133,7 +133,7 @@ class OssRestClientImplTest {

        ServiceSpecificationEntity result =
                ossRestClient.retrieveServiceSpecification(
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", "spec-1", ORG_ID);
                        "name", TEST_BASE_URL, "id", "secret", "user", "pass", "spec-1", ORG_ID, TEST_BASE_URL);

        assertEquals("spec-1", result.getTmfId());
        verify(serviceSpecificationMapper).mapToServiceSpecificationEntity(any(), any());
+13 −4
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ class HealthCheckServiceTest {
        healthCheckService.peeredOrganizationsHealthCheck();
        Mockito.verify(ossRestClientImpl, Mockito.times(1))
                .callOssToGetServiceSpecifications(
                        "testName", null, null, null, null, null, "testOrganizationId");
                        "testName", null, null, null, null, null, "testOrganizationId", null);
        Mockito.verify(ossRestClientImpl, Mockito.times(1))
                .retrieveServiceSpecification(
                        "testName",
@@ -77,13 +77,14 @@ class HealthCheckServiceTest {
                        null,
                        null,
                        "dcbc9ed6-bf01-41cc-9c0c-3fe4e2788a77",
                        "testOrganizationId");
                        "testOrganizationId",
                        null);
    }

    @Test
    void checkPeeredOrganizationStatusTest() throws MalformedURLException, JsonProcessingException {
        when(ossRestClientImpl.callOssToGetServiceSpecifications(
                        "testName", null, null, null, null, null, null))
                        "testName", null, null, null, null, null, null, null))
                .thenThrow();
        Assertions.assertThrows(
                Exception.class,
@@ -96,7 +97,15 @@ class HealthCheckServiceTest {
    void checkPeeredOrganizationStatusPerIdTest()
            throws MalformedURLException, JsonProcessingException {
        when(ossRestClientImpl.retrieveServiceSpecification(
                        "testName", null, null, null, null, null, "dcbc9ed6-bf01-41cc-9c0c-3fe4e2788a77", null))
                        "testName",
                        null,
                        null,
                        null,
                        null,
                        null,
                        "dcbc9ed6-bf01-41cc-9c0c-3fe4e2788a77",
                        null,
                        null))
                .thenThrow();
        Assertions.assertThrows(
                Exception.class,
Loading