public void logRequestDetails(RemoteCallReturn remoteCallReturn) { if (remoteCallReturn == null) { return; } boolean isSuccess = remoteCallReturn.getException() == null; if (!isDetailsLoggable(isSuccess)) { return; } String prettyRequest = null; if (remoteCallReturn.getRequestInfo() != null) { prettyRequest = prettyPrinter.prettyPrint(remoteCallReturn.getRequestInfo().getPayload()); } String prettyResponse = null; if (remoteCallReturn.getResponseInfo() != null) { prettyResponse = prettyPrinter.prettyPrint(remoteCallReturn.getResponseInfo().getPayload()); } if (isSuccess) { detailLogger.debug(DETAILS_REQUEST_TEMPLATE, remoteCallType, prettyRequest); detailLogger.debug(DETAILS_RESPONSE_TEMPLATE, remoteCallType, prettyResponse); } else { detailLogger.info(DETAILS_REQUEST_TEMPLATE, remoteCallType, prettyRequest); detailLogger.info(DETAILS_RESPONSE_TEMPLATE, remoteCallType, prettyResponse); } }
public void logRequestDetails(RemoteCallReturn remoteCallReturn) { if (remoteCallReturn == null) { return; } boolean isSuccess = remoteCallReturn.getException() == null; if (!isDetailsLoggable(isSuccess)) { return; } String prettyRequest = null; if (remoteCallReturn.getRequestInfo() != null) { prettyRequest = prettyPrinter.prettyPrint(remoteCallReturn.getRequestInfo().getPayload()); } String prettyResponse = null; if (remoteCallReturn.getResponseInfo() != null) { prettyResponse = prettyPrinter.prettyPrint(remoteCallReturn.getResponseInfo().getPayload()); } if (isSuccess) { detailLogger.debug(DETAILS_REQUEST_TEMPLATE, remoteCallType, prettyRequest); detailLogger.debug(DETAILS_RESPONSE_TEMPLATE, remoteCallType, prettyResponse); } else { detailLogger.info(DETAILS_REQUEST_TEMPLATE, remoteCallType, prettyRequest); detailLogger.info(DETAILS_RESPONSE_TEMPLATE, remoteCallType, prettyResponse); } }
@Test public void testParseActualMessage() throws SOAPException, IOException, TransformerException { Builder builder = new Builder(); SOAPMessage message = Mockito.mock(SOAPMessage.class); SOAPHeader header = Mockito.mock(SOAPHeader.class); SOAPPart soapPart = Mockito.mock(SOAPPart.class); when(message.getSOAPHeader()).thenReturn(header); when(message.getSOAPPart()).thenReturn(soapPart); final String payload = "<foo><bar>MyBar</bar></foo>"; when(transformerSupplier.get()).thenReturn(transformer); doAnswer( invocation -> { StreamResult streamResult = (StreamResult) invocation.getArguments()[1]; streamResult.getOutputStream().write(payload.getBytes(StandardCharsets.UTF_8)); return null; }) .when(transformer) .transform(any(Source.class), any(StreamResult.class)); assertSame( "parseMessage should return the same builder passed in", builder, xPathSet.parseMessage(builder, message)); RequestInfo requestInfo = builder.build(); assertEquals("Payload doesn't match", payload, requestInfo.getPayload()); assertEquals("Context name doesn't match", "bar", requestInfo.getContextName()); }
private void checkRequestInfoAttributes(RequestInfo requestInfo, boolean isCheckPayload) { assertEquals(requestMethod, requestInfo.getMethodName()); assertEquals(url, requestInfo.getUrl()); assertEquals("clientCustomerId", requestInfo.getContextName()); assertEquals("123-456-7890", requestInfo.getContextValue()); assertEquals("reportdownload", requestInfo.getServiceName()); String requestPayload = requestInfo.getPayload(); if (!isCheckPayload) { assertNull("Payload should have been null", requestPayload); return; } for (Entry<String, String> headerEntry : rawRequestHeaders.entrySet()) { String header = headerEntry.getKey().toLowerCase(); String value = headerEntry.getValue(); assertThat( "Expected header name not logged", requestPayload.toLowerCase(), containsString(header)); Object expectedValue; if (ReportServiceLogger.SCRUBBED_HEADERS.contains(header)) { expectedValue = ReportServiceLogger.REDACTED_HEADER; } else { expectedValue = value; } assertThat( "Header: value does not match expectatations", requestPayload, Matchers.containsString(String.format("%s: %s", header, expectedValue))); } }
assertEquals("clientCustomerId", requestInfo.getContextName()); assertNull(requestInfo.getContextValue()); assertNull(requestInfo.getPayload()); assertThat(requestInfo.getServiceName(), containsString("download"));
/** Confirms an upload is logged as expected. */ @Test public void testLogUpload() throws IOException { String contentsString = "some contents"; InputStream responseContent = CharSource.wrap(contentsString).asByteSource(UTF_8).openStream(); BatchJobUploadResponse response = new BatchJobUploadResponse( responseContent, statusCode, statusMessage, contentsString.length(), URI.create(url)); ArgumentCaptor<RemoteCallReturn> returnCaptor = ArgumentCaptor.forClass(RemoteCallReturn.class); batchJobLogger.logUpload(contentsString, URI.create(url), response, exception); verify(loggerDelegate).logRequestSummary(returnCaptor.capture()); RemoteCallReturn capturedReturn = returnCaptor.getValue(); assertEquals(exception, capturedReturn.getException()); RequestInfo requestInfo = capturedReturn.getRequestInfo(); assertEquals(url, requestInfo.getUrl()); assertEquals("clientCustomerId", requestInfo.getContextName()); assertNull(requestInfo.getContextValue()); assertThat(requestInfo.getPayload(), containsString(contentsString)); assertThat(requestInfo.getServiceName(), containsString("upload")); ResponseInfo responseInfo = capturedReturn.getResponseInfo(); assertNull(responseInfo.getRequestId()); assertThat(responseInfo.getPayload(), startsWith(String.valueOf(response.getHttpStatus()))); assertThat(responseInfo.getPayload(), containsString(response.getHttpResponseMessage())); verify(loggerDelegate).logRequestDetails(returnCaptor.capture()); assertSame( "The same RemoteCallReturn object was not passed to request details and request summary", capturedReturn, returnCaptor.getValue()); }