Merge "Add partner-name header sending to SDC"
authorAmichai Hemli <amichai.hemli@intl.att.com>
Sun, 6 Oct 2019 13:17:32 +0000 (13:17 +0000)
committerGerrit Code Review <gerrit@onap.org>
Sun, 6 Oct 2019 13:17:32 +0000 (13:17 +0000)
vid-app-common/src/main/java/org/onap/vid/aai/util/AAIRestInterface.java
vid-app-common/src/test/java/org/onap/vid/mso/rest/OutgoingRequestHeadersTest.java

index 8c05a8e..4369c17 100644 (file)
@@ -22,8 +22,8 @@ package org.onap.vid.aai.util;
 
 
 import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
+import static org.onap.vid.logging.Headers.INVOCATION_ID;
 import static org.onap.vid.logging.Headers.PARTNER_NAME;
-import static org.onap.vid.utils.Logging.REQUEST_ID_HEADER_KEY;
 
 import com.att.eelf.configuration.EELFLogger;
 import java.io.UnsupportedEncodingException;
@@ -43,6 +43,7 @@ import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
 import org.onap.vid.aai.ExceptionWithRequestInfo;
 import org.onap.vid.aai.ResponseWithRequestInfo;
 import org.onap.vid.aai.exceptions.InvalidPropertyException;
+import org.onap.vid.logging.RequestIdHeader;
 import org.onap.vid.utils.Logging;
 import org.onap.vid.utils.Unchecked;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -191,6 +192,9 @@ public class AAIRestInterface {
             loggingService.logRequest(outgoingRequestsLogger, method, url, payload);
 
             final Response response;
+
+            String requestId = extractOrGenerateRequestId();
+
             Invocation.Builder requestBuilder = client.target(url)
                 .request()
                 .accept(xml ? MediaType.APPLICATION_XML : MediaType.APPLICATION_JSON)
@@ -198,7 +202,10 @@ public class AAIRestInterface {
                 .header(TRANSACTION_ID_HEADER, transId)
                 .header(FROM_APP_ID_HEADER, fromAppId)
                 .header("Content-Type", MediaType.APPLICATION_JSON)
-                .header(REQUEST_ID_HEADER_KEY, extractOrGenerateRequestId());
+                .header(RequestIdHeader.ONAP_ID.getHeaderName(), requestId)
+                .header(RequestIdHeader.ECOMP_ID.getHeaderName(), requestId)
+                .header(INVOCATION_ID.getHeaderName(), INVOCATION_ID.getHeaderValue())
+                ;
 
             requestBuilder = systemPropertyHelper.isClientCertEnabled() ?
                 requestBuilder : authenticateRequest(requestBuilder);
index 3fd92ee..cfb9ee6 100644 (file)
@@ -54,6 +54,7 @@ import java.util.stream.Stream;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.Invocation.Builder;
 import javax.ws.rs.core.MultivaluedMap;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.mockito.ArgumentCaptor;
@@ -123,7 +124,8 @@ public class OutgoingRequestHeadersTest {
     @BeforeClass
     public void initMocks() {
         MockitoAnnotations.initMocks(this);
-        when(servletRequestHelper.extractOrGenerateRequestId()).thenAnswer(invocation -> UUID.randomUUID().toString());
+        String oneIncomingRequestId = UUID.randomUUID().toString();
+        when(servletRequestHelper.extractOrGenerateRequestId()).thenReturn(oneIncomingRequestId);
         when(systemPropertiesWrapper.getProperty(MsoProperties.MSO_PASSWORD)).thenReturn("OBF:1vub1ua51uh81ugi1u9d1vuz");
         when(systemPropertiesWrapper.getProperty(SystemProperties.APP_DISPLAY_NAME)).thenReturn("vid");
         //the ctor of MsoRestClientNew require the above lines as preconditions
@@ -154,31 +156,23 @@ public class OutgoingRequestHeadersTest {
         final TestUtils.JavaxRsClientMocks mocks = setAndGetMocksInsideRestImpl(restMsoImplementation);
 
         f.accept(restMsoImplementation);
+        HeadersVerifier headersVerifier = new HeadersVerifier().verifyFirstCall(mocks.getFakeBuilder());
 
-        Invocation.Builder fakeBuilder = mocks.getFakeBuilder();
-        String requestIdValue = verifyXEcompRequestIdHeaderWasAdded(fakeBuilder);
-        assertEquals(requestIdValue, captureHeaderKeyAndReturnItsValue(fakeBuilder, "X-ONAP-RequestID"));
-        String invocationId1 = assertRequestHeaderIsUUID(fakeBuilder, "X-InvocationID");
-        assertThat((String) captureHeaderKeyAndReturnItsValue(fakeBuilder, "Authorization"), startsWith("Basic "));
-        verifyXOnapPartnerNameHeaderWasAdded(fakeBuilder);
+        assertThat((String) captureHeaderKeyAndReturnItsValue(mocks.getFakeBuilder(), "Authorization"), startsWith("Basic "));
 
-        //validate requestId is same in next call but invocationId is different
+        //verify requestId is same in next call but invocationId is different
 
         //given
         final TestUtils.JavaxRsClientMocks mocks2 = setAndGetMocksInsideRestImpl(restMsoImplementation);
 
         //when
         f.accept(restMsoImplementation);
-        Invocation.Builder fakeBuilder2 = mocks2.getFakeBuilder();
-
         //then
-        String requestIdValue2 = verifyXEcompRequestIdHeaderWasAdded(fakeBuilder2);
-        assertEquals(requestIdValue, requestIdValue2);
-
-        Object invocationId2 = assertRequestHeaderIsUUID(fakeBuilder2, "X-InvocationID");
-        assertNotEquals(invocationId1, invocationId2);
+        headersVerifier.verifySecondCall(mocks2.getFakeBuilder());
     }
 
+
+
     @Test
     public void whenProvideMsoRestCallUserId_builderHasXRequestorIDHeader() throws Exception {
 
@@ -212,7 +206,7 @@ public class OutgoingRequestHeadersTest {
         assertThat((String) headers.get("Authorization"), startsWith("Basic "));
         assertThat(headers.get("X-ONAP-PartnerName"), is("VID.VID"));
 
-        //validate requestId is same in next call but invocationId is different
+        //verify requestId is same in next call but invocationId is different
 
         //given
         captor = setMocksForMsoRestClientNew();
@@ -251,6 +245,7 @@ public class OutgoingRequestHeadersTest {
 
                 client -> client.RestGet("from app id", "some transId", Unchecked.toURI("/any path"), false),
                 client -> client.RestPost("from app id", "/any path", "some payload", false),
+                client -> client.doRest("from app id", "some transId", Unchecked.toURI("/any path"), "somebody", HttpMethod.GET, false, true),
                 client -> client.RestPut("from app id", "/any path", "some payload", false, false)
 
         ).map(l -> ImmutableList.of(l).toArray()).collect(Collectors.toList()).toArray(new Object[][]{});
@@ -258,12 +253,21 @@ public class OutgoingRequestHeadersTest {
 
     @Test(dataProvider = "aaiMethods")
     public void aai(Consumer<AAIRestInterface> f) throws Exception {
+        //given
         final TestUtils.JavaxRsClientMocks mocks = setAndGetMocksInsideRestImpl(aaiRestInterface);
+        //when
+        f.accept(aaiRestInterface);
+        //then
+        HeadersVerifier headersVerifier = new HeadersVerifier().verifyFirstCall(mocks.getFakeBuilder());
 
+        //verify requestId is same in next call but invocationId is different
+        //given
+        final TestUtils.JavaxRsClientMocks mocks2 = setAndGetMocksInsideRestImpl(aaiRestInterface);
+        //when
         f.accept(aaiRestInterface);
+        //then
+        headersVerifier.verifySecondCall(mocks2.getFakeBuilder());
 
-        verifyXEcompRequestIdHeaderWasAdded(mocks.getFakeBuilder());
-        verifyXOnapPartnerNameHeaderWasAdded(mocks.getFakeBuilder());
     }
 
 //    @Test(dataProvider = "schedulerMethods")
@@ -375,4 +379,26 @@ public class OutgoingRequestHeadersTest {
         void acceptThrows(T t) throws Exception;
     }
 
+    private class HeadersVerifier {
+
+        private String firstRequestId;
+        private String firstInvocationId;
+
+
+        HeadersVerifier verifyFirstCall(Builder fakeBuilder) {
+            firstRequestId = verifyXEcompRequestIdHeaderWasAdded(fakeBuilder);
+            assertEquals(firstRequestId, captureHeaderKeyAndReturnItsValue(fakeBuilder, "X-ONAP-RequestID"));
+            firstInvocationId = assertRequestHeaderIsUUID(fakeBuilder, "X-InvocationID");
+            verifyXOnapPartnerNameHeaderWasAdded(fakeBuilder);
+            return this;
+        }
+
+        void verifySecondCall(Builder fakeBuilder) {
+            String secondRequestId = verifyXEcompRequestIdHeaderWasAdded(fakeBuilder);
+            assertEquals(firstRequestId, secondRequestId);
+
+            Object secondInvocationId = assertRequestHeaderIsUUID(fakeBuilder, "X-InvocationID");
+            assertNotEquals(firstInvocationId, secondInvocationId);
+        }
+    }
 }