@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());
}