X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fdmaap%2FDmaapMessageHandlerTest.java;h=f0efddcfaba646255eec3779bee64e26bdbcc655;hb=6f86ab364ac739951556bf2d5bf70429b518de47;hp=2e71a2e5c9fbcb51d7d2a111f6aaa660ace993da;hpb=710dd0ffbea38bfd56d8fde7a559b74d761c1adb;p=nonrtric.git diff --git a/policy-agent/src/test/java/org/oransc/policyagent/dmaap/DmaapMessageHandlerTest.java b/policy-agent/src/test/java/org/oransc/policyagent/dmaap/DmaapMessageHandlerTest.java index 2e71a2e5..f0efddcf 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/dmaap/DmaapMessageHandlerTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/dmaap/DmaapMessageHandlerTest.java @@ -40,6 +40,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import java.io.IOException; +import java.nio.charset.Charset; import java.util.Optional; import org.junit.jupiter.api.BeforeEach; @@ -52,8 +53,10 @@ import org.oransc.policyagent.repository.PolicyType; import org.oransc.policyagent.utils.LoggingUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -66,7 +69,7 @@ class DmaapMessageHandlerTest { private final AsyncRestClient agentClient = mock(AsyncRestClient.class); private DmaapMessageHandler testedObject; private static Gson gson = new GsonBuilder() // - .create(); // + .create(); // @BeforeEach private void setUp() throws Exception { @@ -84,19 +87,19 @@ class DmaapMessageHandlerTest { DmaapRequestMessage dmaapRequestMessage(Operation operation) { Optional payload = - ((operation == Operation.PUT || operation == Operation.POST) ? Optional.of(payloadAsJson()) - : Optional.empty()); + ((operation == Operation.PUT || operation == Operation.POST) ? Optional.of(payloadAsJson()) + : Optional.empty()); return ImmutableDmaapRequestMessage.builder() // - .apiVersion("apiVersion") // - .correlationId("correlationId") // - .operation(operation) // - .originatorId("originatorId") // - .payload(payload) // - .requestId("requestId") // - .target("target") // - .timestamp("timestamp") // - .url(URL) // - .build(); + .apiVersion("apiVersion") // + .correlationId("correlationId") // + .operation(operation) // + .originatorId("originatorId") // + .payload(payload) // + .requestId("requestId") // + .target("target") // + .timestamp("timestamp") // + .url(URL) // + .build(); } private String dmaapInputMessage(Operation operation) { @@ -131,14 +134,14 @@ class DmaapMessageHandlerTest { @Test void unparseableMessage_thenWarning() { final ListAppender logAppender = - LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN); + LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN); String msg = "bad message"; testedObject.handleDmaapMsg(msg); assertThat(logAppender.list.get(0).getFormattedMessage()).startsWith( - "handleDmaapMsg failure org.oransc.policyagent.exceptions.ServiceException: Received unparsable " - + "message from DMAAP: \"" + msg + "\", reason: "); + "handleDmaapMsg failure org.oransc.policyagent.exceptions.ServiceException: Received unparsable " + + "message from DMAAP: \"" + msg + "\", reason: "); } @Test @@ -149,10 +152,10 @@ class DmaapMessageHandlerTest { String message = dmaapInputMessage(Operation.DELETE); StepVerifier // - .create(testedObject.createTask(message)) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // + .create(testedObject.createTask(message)) // + .expectSubscription() // + .expectNext("OK") // + .verifyComplete(); // verify(agentClient).deleteForEntity(URL); verifyNoMoreInteractions(agentClient); @@ -168,10 +171,10 @@ class DmaapMessageHandlerTest { doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); StepVerifier // - .create(testedObject.createTask(dmaapInputMessage(Operation.GET))) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // + .create(testedObject.createTask(dmaapInputMessage(Operation.GET))) // + .expectSubscription() // + .expectNext("OK") // + .verifyComplete(); // verify(agentClient).getForEntity(URL); verifyNoMoreInteractions(agentClient); @@ -180,16 +183,36 @@ class DmaapMessageHandlerTest { verifyNoMoreInteractions(dmaapClient); } + @Test + void exceptionFromAgentWhenGet_thenPostError() throws IOException { + String errorBody = "Unavailable"; + WebClientResponseException webClientResponseException = new WebClientResponseException( + HttpStatus.SERVICE_UNAVAILABLE.value(), "", (HttpHeaders) null, errorBody.getBytes(), (Charset) null); + doReturn(Mono.error(webClientResponseException)).when(agentClient).getForEntity(anyString()); + doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); + + StepVerifier // + .create(testedObject.createTask(dmaapInputMessage(Operation.GET))) // + .expectSubscription() // + .verifyComplete(); // + + ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); + verify(dmaapClient).post(anyString(), captor.capture()); + String actualMessage = captor.getValue(); + assertThat(actualMessage).contains(HttpStatus.SERVICE_UNAVAILABLE.toString()) // + .contains(errorBody); + } + @Test void successfulPut() throws IOException { doReturn(okResponse()).when(agentClient).putForEntity(anyString(), anyString()); doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); StepVerifier // - .create(testedObject.createTask(dmaapInputMessage(Operation.PUT))) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // + .create(testedObject.createTask(dmaapInputMessage(Operation.PUT))) // + .expectSubscription() // + .expectNext("OK") // + .verifyComplete(); // verify(agentClient).putForEntity(URL, payloadAsString()); verifyNoMoreInteractions(agentClient); @@ -204,10 +227,10 @@ class DmaapMessageHandlerTest { doReturn(Mono.just("OK")).when(dmaapClient).post(anyString(), anyString()); StepVerifier // - .create(testedObject.createTask(dmaapInputMessage(Operation.POST))) // - .expectSubscription() // - .expectNext("OK") // - .verifyComplete(); // + .create(testedObject.createTask(dmaapInputMessage(Operation.POST))) // + .expectSubscription() // + .expectNext("OK") // + .verifyComplete(); // verify(agentClient).postForEntity(URL, payloadAsString()); verifyNoMoreInteractions(agentClient); @@ -231,7 +254,7 @@ class DmaapMessageHandlerTest { verify(dmaapClient).post(anyString(), captor.capture()); String actualMessage = captor.getValue(); assertThat(actualMessage).as("Message \"%s\" sent to DMaaP contains %s", actualMessage, HttpStatus.BAD_GATEWAY) - .contains(HttpStatus.BAD_GATEWAY.toString()); + .contains(HttpStatus.BAD_GATEWAY.toString()); verifyNoMoreInteractions(dmaapClient); } @@ -247,8 +270,8 @@ class DmaapMessageHandlerTest { ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); verify(dmaapClient).post(anyString(), captor.capture()); String actualMessage = captor.getValue(); - assertThat(actualMessage).contains("Not implemented operation"); - assertThat(actualMessage).contains("BAD_REQUEST"); + assertThat(actualMessage).contains("Not implemented operation") // + .contains("BAD_REQUEST"); } @Test @@ -257,11 +280,11 @@ class DmaapMessageHandlerTest { message = message.replace(",\"payload\":{\"name\":\"name\",\"schema\":\"schema\"}", ""); final ListAppender logAppender = - LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN); + LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN); testedObject.handleDmaapMsg(message); assertThat(logAppender.list.get(0).getFormattedMessage()) - .startsWith("Expected payload in message from DMAAP: "); + .startsWith("Expected payload in message from DMAAP: "); } }