diff --git a/build.gradle b/build.gradle index 94dd087..a124fdf 100644 --- a/build.gradle +++ b/build.gradle @@ -77,7 +77,7 @@ dependencies { compileOnly group: 'com.squareup.retrofit2', name: 'converter-jackson', version: "${retrofitVersion}" // https://mvnrepository.com/artifact/com.squareup.okhttp3/logging-interceptor - compileOnly group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '4.12.0' + compileOnly group: 'com.squareup.okhttp3', name: 'logging-interceptor', version: '5.3.2' // https://mvnrepository.com/artifact/de.siegmar/logback-gelf compileOnly group: 'de.siegmar', name: 'logback-gelf', version: '6.1.+' diff --git a/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitResponseBodyMapperTest.java b/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitResponseBodyMapperTest.java index dbccc71..82a8cfa 100644 --- a/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitResponseBodyMapperTest.java +++ b/src/test/java/ee/bitweb/core/retrofit/logging/mappers/RetrofitResponseBodyMapperTest.java @@ -7,12 +7,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.HashMap; import java.util.HashSet; import java.util.Set; import java.util.zip.GZIPOutputStream; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; @Tag("unit") class RetrofitResponseBodyMapperTest { @@ -22,21 +22,13 @@ class RetrofitResponseBodyMapperTest { void isRedactUrl() { var mapper = new RetrofitResponseBodyMapper(Set.of("https://www.google.com/"), 0); - var response = new Response( - request("GET"), - Protocol.HTTP_1_0, - "message", - 200, - null, - new Headers.Builder().build(), - ResponseBody.create("123".getBytes(), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_1_0) + .message("message") + .code(200) + .body(ResponseBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); var value = mapper.getValue(null, response); @@ -48,21 +40,13 @@ void isRedactUrl() { void promisesBody() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 0); - var response = new Response( - request("HEAD"), - Protocol.HTTP_1_0, - "message", - 201, - null, - new Headers.Builder().build(), - ResponseBody.create("123".getBytes(), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("HEAD")) + .protocol(Protocol.HTTP_1_0) + .message("message") + .code(201) + .body(ResponseBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); var value = mapper.getValue(null, response); @@ -74,21 +58,14 @@ void promisesBody() { void bodyHasUnknownEncoding() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 0); - var response = new Response( - request("GET"), - Protocol.HTTP_1_0, - "message", - 201, - null, - new Headers.Builder().add("Content-Encoding", "unknownEncoding").build(), - ResponseBody.create("123".getBytes(), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_1_0) + .message("message") + .code(201) + .header("Content-Encoding", "unknownEncoding") + .body(ResponseBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); var value = mapper.getValue(null, response); @@ -100,21 +77,12 @@ void bodyHasUnknownEncoding() { void bodyMissing() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 0); - var response = new Response( - request("GET"), - Protocol.HTTP_1_0, - "message", - 201, - null, - new Headers.Builder().build(), - null, - null, - null, - null, - 1, - 2, - null - ); + // In OkHttp 5.x, Response.body() is non-null by design, so we need to mock it + var response = mock(Response.class); + when(response.request()).thenReturn(request("GET")); + when(response.code()).thenReturn(201); + when(response.headers()).thenReturn(new Headers.Builder().build()); + when(response.body()).thenReturn(null); var value = mapper.getValue(null, response); @@ -125,21 +93,13 @@ void bodyMissing() { @DisplayName("Response body is correctly returned") void bodyAvailable() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 4096); - var response = new Response( - request("GET"), - Protocol.HTTP_2, - "OK", - 200, - null, - new Headers.Builder().build(), - ResponseBody.create("123".getBytes(), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_2) + .message("OK") + .code(200) + .body(ResponseBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); assertEquals("123", mapper.getValue(null, response)); } @@ -148,21 +108,13 @@ void bodyAvailable() { @DisplayName("Response body is correctly shortened") void bodyIsShortened() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 2); - var response = new Response( - request("GET"), - Protocol.HTTP_2, - "OK", - 200, - null, - new Headers.Builder().build(), - ResponseBody.create("123".getBytes(), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_2) + .message("OK") + .code(200) + .body(ResponseBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); assertEquals("12 ... Content size: 3 characters", mapper.getValue(null, response)); } @@ -171,21 +123,13 @@ void bodyIsShortened() { @DisplayName("Response body is correctly returned when empty") void bodyIsEmpty() { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 4096); - var response = new Response( - request("GET"), - Protocol.HTTP_2, - "OK", - 200, - null, - new Headers.Builder().build(), - ResponseBody.create(new byte[]{}, MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_2) + .message("OK") + .code(200) + .body(ResponseBody.create(new byte[]{}, MediaType.get("application/text"))) + .build(); assertEquals("", mapper.getValue(null, response)); } @@ -194,21 +138,14 @@ void bodyIsEmpty() { @DisplayName("Response body is correctly returned when response is gzipped") void bodyIsGzipped() throws IOException { var mapper = new RetrofitResponseBodyMapper(new HashSet<>(), 4096); - var response = new Response( - request("GET"), - Protocol.HTTP_2, - "OK", - 200, - null, - new Headers.Builder().add("Content-Encoding", "gzip").build(), - ResponseBody.create(gzip("some amount of data"), MediaType.get("application/text")), - null, - null, - null, - 1, - 2, - null - ); + var response = new Response.Builder() + .request(request("GET")) + .protocol(Protocol.HTTP_2) + .message("OK") + .code(200) + .header("Content-Encoding", "gzip") + .body(ResponseBody.create(gzip("some amount of data"), MediaType.get("application/text"))) + .build(); assertEquals("some amount of data", mapper.getValue(null, response)); } @@ -220,16 +157,13 @@ void responseIsNull() { } private Request request(String method) { - return new Request( - new HttpUrl.Builder() + return new Request.Builder() + .url(new HttpUrl.Builder() .scheme("https") .host("www.google.com") - .build(), - method, - new Headers.Builder().build(), - RequestBody.create("123".getBytes(), MediaType.get("application/text")), - new HashMap<>() - ); + .build()) + .method(method, method.equals("GET") || method.equals("HEAD") ? null : RequestBody.create("123".getBytes(), MediaType.get("application/text"))) + .build(); } private byte[] gzip(String data) throws IOException {