Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@
import ee.bitweb.core.exception.CoreException;
import okhttp3.Request;
import okhttp3.Response;
import org.jetbrains.annotations.Nullable;

import java.util.Map;

public interface RetrofitLoggingMapper {

String getValue(Request request, Response response);
String getValue(Request request, @Nullable Response response);

String getKey();

default void map(Request request, Response response, Map<String, String> container) {
default void map(Request request, @Nullable Response response, Map<String, String> container) {
if (container.containsKey(getKey())) {
throw new CoreException(String.format("Retrofit log container already contains value for key %s", getKey()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ public String getKey() {
}

protected String getResponseBody(Response response) throws IOException {
if (RetrofitBodyMapperHelper.isRedactBodyUrl(redactBodyUrls, response.request().url().toString())) {
if (response == null) {
return "(response missing)";
} else if (RetrofitBodyMapperHelper.isRedactBodyUrl(redactBodyUrls, response.request().url().toString())) {
return "(body redacted)";
} else if (!promisesBody(response)) {
return "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ public class RetrofitResponseBodySizeMapper implements RetrofitLoggingMapper {

@Override
public String getValue(Request request, Response response) {
if (response == null) {
return "-";
}

ResponseBody body = response.body();

return body != null ? String.valueOf(body.contentLength()) : "-";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ public String getKey() {
}

protected String getResponseHeadersString(Response response) {
if (response == null) {
return "(response missing)";
}

Map<String, String> result = new HashMap<>();

var responseHeaders = response.headers();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ public class RetrofitResponseStatusCodeMapper implements RetrofitLoggingMapper {

@Override
public String getValue(Request request, Response response) {
if (response == null) {
return "-";
}

return String.valueOf(response.code());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,12 @@ void bodyIsGzipped() throws IOException {
assertEquals("some amount of data", mapper.getValue(null, response));
}

@Test
@DisplayName("Response is missing")
void responseIsNull() {
assertEquals("(response missing)", new RetrofitResponseBodyMapper(new HashSet<>(), 4096).getValue(null, null));
}

private Request request(String method) {
return new Request(
new HttpUrl.Builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,14 @@ void testResponseBodyIsNotAvailable() {
Mockito.verifyNoMoreInteractions(response);
Mockito.verifyNoInteractions(responseBody);
}

@Test
@DisplayName("When response is not available, should return '-'")
void testResponseIsNotAvailable() {
RetrofitResponseBodySizeMapper mapper = new RetrofitResponseBodySizeMapper();

assertEquals("-", mapper.getValue(null, null));

Mockito.verifyNoInteractions(response, responseBody);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package ee.bitweb.core.retrofit.logging.mappers;

import okhttp3.Response;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.*;

@Tag("unit")
@ExtendWith(MockitoExtension.class)
class RetrofitResponseStatusCodeMapperTest {

@Mock
Response response;

@Test
@DisplayName("When response is not available, should return '-'")
void testResponseIsNotAvailable() {
RetrofitResponseStatusCodeMapper mapper = new RetrofitResponseStatusCodeMapper();

assertEquals("-", mapper.getValue(null, null));

Mockito.verifyNoInteractions(response);
}

@Test
@DisplayName("Returns correct response code")
void testResponseBodyLengthIsSuccessfullyRetrieved() {
Mockito.when(response.code()).thenReturn(200);
RetrofitResponseStatusCodeMapper mapper = new RetrofitResponseStatusCodeMapper();

assertEquals("200", mapper.getValue(null, response));

Mockito.verify(response, Mockito.times(1)).code();
Mockito.verifyNoMoreInteractions(response);
}
}
Loading