From 83e7f9b9572b5069f7f2c0d9ef77ea3e149cd350 Mon Sep 17 00:00:00 2001 From: komakkar <komakkar@microsoft.com> Date: Mon, 2 Nov 2020 19:28:32 +0530 Subject: [PATCH] added case for handshake request header creation --- .../di/CredentialHeadersProvider.java | 23 +++++++++++-------- .../di/CredentialHeadersProviderTest.java | 20 ++++++++++++++++ 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/notification-core/src/main/java/org/opengroup/osdu/notification/di/CredentialHeadersProvider.java b/notification-core/src/main/java/org/opengroup/osdu/notification/di/CredentialHeadersProvider.java index f06244b57..0f17696c6 100644 --- a/notification-core/src/main/java/org/opengroup/osdu/notification/di/CredentialHeadersProvider.java +++ b/notification-core/src/main/java/org/opengroup/osdu/notification/di/CredentialHeadersProvider.java @@ -57,15 +57,20 @@ public class CredentialHeadersProvider implements FactoryBean<DpsHeaders> { case POST: case PUT: case PATCH: { - Map<String, String> attributes = this.pubsubRequestBodyExtractor.extractAttributesFromRequestBody(); - try { - //extract headers from pubsub message - String dataPartitionId = attributes.get(DpsHeaders.DATA_PARTITION_ID); - String authToken = this.serviceAccountJwtClient.getIdToken(dataPartitionId); - attributes.put(DpsHeaders.AUTHORIZATION, authToken); - return DpsHeaders.createFromMap(attributes); - } catch (AppException e) { - throw new Exception("Failed to generate headers for register service."); + if(this.pubsubRequestBodyExtractor.isHandshakeRequest()) { + // The headers are not needed for the handshake requests. + return new DpsHeaders(); + } else { + Map<String, String> attributes = this.pubsubRequestBodyExtractor.extractAttributesFromRequestBody(); + try { + //extract headers from pubsub message + String dataPartitionId = attributes.get(DpsHeaders.DATA_PARTITION_ID); + String authToken = this.serviceAccountJwtClient.getIdToken(dataPartitionId); + attributes.put(DpsHeaders.AUTHORIZATION, authToken); + return DpsHeaders.createFromMap(attributes); + } catch (AppException e) { + throw new Exception("Failed to generate headers for register service."); + } } } diff --git a/notification-core/src/test/java/org/opengroup/osdu/notification/di/CredentialHeadersProviderTest.java b/notification-core/src/test/java/org/opengroup/osdu/notification/di/CredentialHeadersProviderTest.java index 3d18ffc20..c660635f9 100644 --- a/notification-core/src/test/java/org/opengroup/osdu/notification/di/CredentialHeadersProviderTest.java +++ b/notification-core/src/test/java/org/opengroup/osdu/notification/di/CredentialHeadersProviderTest.java @@ -5,6 +5,8 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.opengroup.osdu.notification.provider.interfaces.IPubsubRequestBodyExtractor; import org.powermock.modules.junit4.PowerMockRunner; import org.springframework.web.bind.annotation.RequestMethod; @@ -18,6 +20,9 @@ public class CredentialHeadersProviderTest { @Mock private HttpServletRequest httpRequest; + @Mock + private IPubsubRequestBodyExtractor pubsubRequestBodyExtractor; + @InjectMocks private CredentialHeadersProvider headersProvider; @@ -26,4 +31,19 @@ public class CredentialHeadersProviderTest { when(httpRequest.getMethod()).thenReturn(RequestMethod.GET.toString()); assertNotNull(headersProvider.getObject()); } + + @Test + public void testHandshake() throws Exception { + // set up + when(httpRequest.getMethod()).thenReturn(RequestMethod.GET.toString()); + when(pubsubRequestBodyExtractor.isHandshakeRequest()).thenReturn(true); + + // Act + DpsHeaders headers = headersProvider.getObject(); + + // Assert + assertNotNull(headers); + assertNull(headers.getCorrelationId()); + assertNull(headers.getPartitionId()); + } } \ No newline at end of file -- GitLab