summaryrefslogtreecommitdiffstats
path: root/src/test/java
diff options
context:
space:
mode:
authorJoeOLeary <joseph.o.leary@est.tech>2019-03-01 14:09:52 +0000
committerJoeOLeary <joseph.o.leary@est.tech>2019-03-01 14:09:52 +0000
commite5013912e5e1f62cd4ae9ee77fa765ed664c7d2f (patch)
tree8b99b18baf0895f7be690833129e2d07f1bbfc83 /src/test/java
parentb1fee35cd69ff8019c9deb38b482f24aa20a2ddd (diff)
Update DataRouter Subscriber
*Update metadata header key to match new datarouter specification *Update subscriber to be a privileged subscriber *Update subscriber to improve logging & remove sonar smells *Update delivery end point to match datarouter specification *Update event to include the publish id provided by datarouter *Add datarouter event processed utility Issue-ID: DCAEGEN2-1038 Change-Id: Iafce544f31f888de53547de8b280faebd8075d4c Signed-off-by: JoeOLeary <joseph.o.leary@est.tech>
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/datarouter/DataRouterSubscriberTest.java16
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/utils/DataRouterUtilsTest.java116
-rw-r--r--src/test/java/utils/EventUtils.java17
3 files changed, 141 insertions, 8 deletions
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/datarouter/DataRouterSubscriberTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/datarouter/DataRouterSubscriberTest.java
index ad73b63..fdc1bf6 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/datarouter/DataRouterSubscriberTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/datarouter/DataRouterSubscriberTest.java
@@ -20,6 +20,8 @@
package org.onap.dcaegen2.services.pmmapper.datarouter;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
@@ -29,19 +31,17 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
+
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
import io.undertow.io.Receiver;
import io.undertow.io.Sender;
import io.undertow.server.HttpServerExchange;
import io.undertow.util.HeaderMap;
import io.undertow.util.StatusCodes;
-import utils.LoggingUtils;
import java.io.IOException;
import java.net.HttpURLConnection;
@@ -56,12 +56,13 @@ import org.mockito.Mock;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.onap.dcaegen2.services.pmmapper.exceptions.TooManyTriesException;
-import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;
import org.onap.dcaegen2.services.pmmapper.model.Event;
+import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;
import org.onap.dcaegen2.services.pmmapper.utils.HttpServerExchangeAdapter;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
+import utils.LoggingUtils;
@RunWith(PowerMockRunner.class)
@PrepareForTest(DataRouterSubscriber.class)
@@ -218,8 +219,9 @@ public class DataRouterSubscriberTest {
String testString = "MESSAGE BODY";
JsonObject metadata = new JsonParser().parse(
new String(Files.readAllBytes(Paths.get("src/test/resources/valid_metadata.json")))).getAsJsonObject();
- when(httpServerExchange.getRequestHeaders().get(any(String.class)).get(anyInt()))
+ when(httpServerExchange.getRequestHeaders().get(DataRouterSubscriber.METADATA_HEADER).get(anyInt()))
.thenReturn(metadata.toString());
+ when(httpServerExchange.getRequestHeaders().get(DataRouterSubscriber.PUB_ID_HEADER).getFirst()).thenReturn("");
doAnswer((Answer<Void>) invocationOnMock -> {
Receiver.FullStringCallback callback = invocationOnMock.getArgument(0);
callback.handle(httpServerExchange, testString);
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/DataRouterUtilsTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/DataRouterUtilsTest.java
new file mode 100644
index 0000000..73967c2
--- /dev/null
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/DataRouterUtilsTest.java
@@ -0,0 +1,116 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.pmmapper.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.ByteArrayInputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.dcaegen2.services.pmmapper.exceptions.ProcessEventException;
+import org.onap.dcaegen2.services.pmmapper.model.Event;
+import org.onap.dcaegen2.services.pmmapper.model.EventMetadata;
+import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
+import utils.EventUtils;
+
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(RequestSender.class)
+public class DataRouterUtilsTest {
+
+ @Test
+ public void processEventSuccessful() throws Exception {
+ String serviceResponse = "I'm a service response ;)";
+ String publishIdentity = "12";
+ PowerMockito.mockStatic(Thread.class);
+ MapperConfig mockMapperConfig = mock(MapperConfig.class);
+ URL mockURL = mock(URL.class);
+ HttpURLConnection mockConnection = mock(HttpURLConnection.class, RETURNS_DEEP_STUBS);
+ when(mockConnection.getResponseCode()).thenReturn(200);
+ when(mockConnection.getInputStream()).thenReturn(new ByteArrayInputStream(serviceResponse.getBytes()));
+
+ when(mockURL.openConnection()).thenReturn(mockConnection);
+ when(mockMapperConfig.getDmaapDRDeleteEndpoint()).thenReturn("dmaap-dr-node/delete/");
+ when(mockMapperConfig.getSubscriberIdentity()).thenReturn("12");
+
+ PowerMockito.whenNew(URL.class).withAnyArguments().thenReturn(mockURL);
+
+ Event testEvent = EventUtils.makeMockEvent("", mock(EventMetadata.class), publishIdentity);
+ assertEquals(serviceResponse, DataRouterUtils.processEvent(mockMapperConfig, testEvent));
+ verify(mockConnection, times(1)).setRequestMethod(RequestSender.DELETE);
+ }
+
+ @Test
+ public void testNegativeResponse() throws Exception {
+ String serviceResponse = "I'm a negative service response ;)";
+ String publishIdentity = "12";
+ PowerMockito.mockStatic(Thread.class);
+ MapperConfig mockMapperConfig = mock(MapperConfig.class);
+ URL mockURL = mock(URL.class);
+ HttpURLConnection mockConnection = mock(HttpURLConnection.class, RETURNS_DEEP_STUBS);
+ when(mockConnection.getResponseCode()).thenReturn(503);
+ when(mockConnection.getInputStream())
+ .thenAnswer(invocationOnMock -> new ByteArrayInputStream(serviceResponse.getBytes()));
+
+ when(mockURL.openConnection()).thenReturn(mockConnection);
+ when(mockMapperConfig.getDmaapDRDeleteEndpoint()).thenReturn("dmaap-dr-node/delete/");
+ when(mockMapperConfig.getSubscriberIdentity()).thenReturn("12");
+
+ PowerMockito.whenNew(URL.class).withAnyArguments().thenReturn(mockURL);
+ Event testEvent = EventUtils.makeMockEvent("", mock(EventMetadata.class), publishIdentity);
+ assertEquals(serviceResponse, DataRouterUtils.processEvent(mockMapperConfig, testEvent));
+ verify(mockConnection, times(5)).setRequestMethod(RequestSender.DELETE);
+ }
+
+ @Test
+ public void testConstructionException() {
+ assertThrows(IllegalStateException.class, () -> Whitebox.invokeConstructor(DataRouterUtils.class));
+ }
+
+ @Test
+ public void testProcessEventFailure() throws Exception {
+ PowerMockito.mockStatic(Thread.class);
+ MapperConfig mockMapperConfig = mock(MapperConfig.class);
+ URL mockURL = mock(URL.class);
+ HttpURLConnection mockConnection = mock(HttpURLConnection.class, RETURNS_DEEP_STUBS);
+ when(mockConnection.getResponseCode()).thenReturn(503);
+
+ when(mockURL.openConnection()).thenReturn(mockConnection);
+ when(mockMapperConfig.getDmaapDRDeleteEndpoint()).thenReturn("dmaap-dr-node/delete/");
+ when(mockMapperConfig.getSubscriberIdentity()).thenReturn("12");
+
+ PowerMockito.whenNew(URL.class).withAnyArguments().thenReturn(mockURL);
+ Event testEvent = EventUtils.makeMockEvent("", mock(EventMetadata.class));
+ assertThrows(ProcessEventException.class, () -> DataRouterUtils.processEvent(mockMapperConfig, testEvent));
+ }
+}
diff --git a/src/test/java/utils/EventUtils.java b/src/test/java/utils/EventUtils.java
index 90317c2..a6b131c 100644
--- a/src/test/java/utils/EventUtils.java
+++ b/src/test/java/utils/EventUtils.java
@@ -75,11 +75,26 @@ public class EventUtils {
}
/**
+ * Makes an event with a mock http server exchange, empty mdc and publish identity
* @param body body for the event.
* @param eventMetadata metadata for the event.
* @return event with mock HttpServerExchange
*/
public static Event makeMockEvent(String body, EventMetadata eventMetadata) {
- return new Event(mock(HttpServerExchange.class, RETURNS_DEEP_STUBS), body, eventMetadata, new HashMap<>());
+ return new Event(mock(HttpServerExchange.class, RETURNS_DEEP_STUBS), body, eventMetadata, new HashMap<>(), "");
}
+
+
+ /**
+ * Makes an event with a mock http server exchange and empty mdc
+ * @param body body for the event.
+ * @param eventMetadata metadata for the event.
+ * @return event with mock HttpServerExchange
+ */
+ public static Event makeMockEvent(String body, EventMetadata eventMetadata, String publishIdentity) {
+ HttpServerExchange mockHttpServerExchange = mock(HttpServerExchange.class, RETURNS_DEEP_STUBS);
+ return new Event(mockHttpServerExchange, body, eventMetadata, new HashMap<>(), publishIdentity);
+ }
+
+
}