77
88import java .io .ByteArrayOutputStream ;
99import java .io .IOException ;
10- import java .util .HashMap ;
1110import java .util .HashSet ;
1211import java .util .Set ;
1312import java .util .zip .GZIPOutputStream ;
1413
1514import static org .junit .jupiter .api .Assertions .*;
15+ import static org .mockito .Mockito .*;
1616
1717@ Tag ("unit" )
1818class RetrofitResponseBodyMapperTest {
@@ -22,21 +22,13 @@ class RetrofitResponseBodyMapperTest {
2222 void isRedactUrl () {
2323 var mapper = new RetrofitResponseBodyMapper (Set .of ("https://www.google.com/" ), 0 );
2424
25- var response = new Response (
26- request ("GET" ),
27- Protocol .HTTP_1_0 ,
28- "message" ,
29- 200 ,
30- null ,
31- new Headers .Builder ().build (),
32- ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
33- null ,
34- null ,
35- null ,
36- 1 ,
37- 2 ,
38- null
39- );
25+ var response = new Response .Builder ()
26+ .request (request ("GET" ))
27+ .protocol (Protocol .HTTP_1_0 )
28+ .message ("message" )
29+ .code (200 )
30+ .body (ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
31+ .build ();
4032
4133 var value = mapper .getValue (null , response );
4234
@@ -48,21 +40,13 @@ void isRedactUrl() {
4840 void promisesBody () {
4941 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 0 );
5042
51- var response = new Response (
52- request ("HEAD" ),
53- Protocol .HTTP_1_0 ,
54- "message" ,
55- 201 ,
56- null ,
57- new Headers .Builder ().build (),
58- ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
59- null ,
60- null ,
61- null ,
62- 1 ,
63- 2 ,
64- null
65- );
43+ var response = new Response .Builder ()
44+ .request (request ("HEAD" ))
45+ .protocol (Protocol .HTTP_1_0 )
46+ .message ("message" )
47+ .code (201 )
48+ .body (ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
49+ .build ();
6650
6751 var value = mapper .getValue (null , response );
6852
@@ -74,21 +58,14 @@ void promisesBody() {
7458 void bodyHasUnknownEncoding () {
7559 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 0 );
7660
77- var response = new Response (
78- request ("GET" ),
79- Protocol .HTTP_1_0 ,
80- "message" ,
81- 201 ,
82- null ,
83- new Headers .Builder ().add ("Content-Encoding" , "unknownEncoding" ).build (),
84- ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
85- null ,
86- null ,
87- null ,
88- 1 ,
89- 2 ,
90- null
91- );
61+ var response = new Response .Builder ()
62+ .request (request ("GET" ))
63+ .protocol (Protocol .HTTP_1_0 )
64+ .message ("message" )
65+ .code (201 )
66+ .header ("Content-Encoding" , "unknownEncoding" )
67+ .body (ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
68+ .build ();
9269
9370 var value = mapper .getValue (null , response );
9471
@@ -100,21 +77,12 @@ void bodyHasUnknownEncoding() {
10077 void bodyMissing () {
10178 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 0 );
10279
103- var response = new Response (
104- request ("GET" ),
105- Protocol .HTTP_1_0 ,
106- "message" ,
107- 201 ,
108- null ,
109- new Headers .Builder ().build (),
110- null ,
111- null ,
112- null ,
113- null ,
114- 1 ,
115- 2 ,
116- null
117- );
80+ // In OkHttp 5.x, Response.body() is non-null by design, so we need to mock it
81+ var response = mock (Response .class );
82+ when (response .request ()).thenReturn (request ("GET" ));
83+ when (response .code ()).thenReturn (201 );
84+ when (response .headers ()).thenReturn (new Headers .Builder ().build ());
85+ when (response .body ()).thenReturn (null );
11886
11987 var value = mapper .getValue (null , response );
12088
@@ -125,21 +93,13 @@ void bodyMissing() {
12593 @ DisplayName ("Response body is correctly returned" )
12694 void bodyAvailable () {
12795 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 4096 );
128- var response = new Response (
129- request ("GET" ),
130- Protocol .HTTP_2 ,
131- "OK" ,
132- 200 ,
133- null ,
134- new Headers .Builder ().build (),
135- ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
136- null ,
137- null ,
138- null ,
139- 1 ,
140- 2 ,
141- null
142- );
96+ var response = new Response .Builder ()
97+ .request (request ("GET" ))
98+ .protocol (Protocol .HTTP_2 )
99+ .message ("OK" )
100+ .code (200 )
101+ .body (ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
102+ .build ();
143103
144104 assertEquals ("123" , mapper .getValue (null , response ));
145105 }
@@ -148,21 +108,13 @@ void bodyAvailable() {
148108 @ DisplayName ("Response body is correctly shortened" )
149109 void bodyIsShortened () {
150110 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 2 );
151- var response = new Response (
152- request ("GET" ),
153- Protocol .HTTP_2 ,
154- "OK" ,
155- 200 ,
156- null ,
157- new Headers .Builder ().build (),
158- ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
159- null ,
160- null ,
161- null ,
162- 1 ,
163- 2 ,
164- null
165- );
111+ var response = new Response .Builder ()
112+ .request (request ("GET" ))
113+ .protocol (Protocol .HTTP_2 )
114+ .message ("OK" )
115+ .code (200 )
116+ .body (ResponseBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
117+ .build ();
166118
167119 assertEquals ("12 ... Content size: 3 characters" , mapper .getValue (null , response ));
168120 }
@@ -171,21 +123,13 @@ void bodyIsShortened() {
171123 @ DisplayName ("Response body is correctly returned when empty" )
172124 void bodyIsEmpty () {
173125 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 4096 );
174- var response = new Response (
175- request ("GET" ),
176- Protocol .HTTP_2 ,
177- "OK" ,
178- 200 ,
179- null ,
180- new Headers .Builder ().build (),
181- ResponseBody .create (new byte []{}, MediaType .get ("application/text" )),
182- null ,
183- null ,
184- null ,
185- 1 ,
186- 2 ,
187- null
188- );
126+ var response = new Response .Builder ()
127+ .request (request ("GET" ))
128+ .protocol (Protocol .HTTP_2 )
129+ .message ("OK" )
130+ .code (200 )
131+ .body (ResponseBody .create (new byte []{}, MediaType .get ("application/text" )))
132+ .build ();
189133
190134 assertEquals ("" , mapper .getValue (null , response ));
191135 }
@@ -194,21 +138,14 @@ void bodyIsEmpty() {
194138 @ DisplayName ("Response body is correctly returned when response is gzipped" )
195139 void bodyIsGzipped () throws IOException {
196140 var mapper = new RetrofitResponseBodyMapper (new HashSet <>(), 4096 );
197- var response = new Response (
198- request ("GET" ),
199- Protocol .HTTP_2 ,
200- "OK" ,
201- 200 ,
202- null ,
203- new Headers .Builder ().add ("Content-Encoding" , "gzip" ).build (),
204- ResponseBody .create (gzip ("some amount of data" ), MediaType .get ("application/text" )),
205- null ,
206- null ,
207- null ,
208- 1 ,
209- 2 ,
210- null
211- );
141+ var response = new Response .Builder ()
142+ .request (request ("GET" ))
143+ .protocol (Protocol .HTTP_2 )
144+ .message ("OK" )
145+ .code (200 )
146+ .header ("Content-Encoding" , "gzip" )
147+ .body (ResponseBody .create (gzip ("some amount of data" ), MediaType .get ("application/text" )))
148+ .build ();
212149
213150 assertEquals ("some amount of data" , mapper .getValue (null , response ));
214151 }
@@ -220,16 +157,13 @@ void responseIsNull() {
220157 }
221158
222159 private Request request (String method ) {
223- return new Request (
224- new HttpUrl .Builder ()
160+ return new Request . Builder ()
161+ . url ( new HttpUrl .Builder ()
225162 .scheme ("https" )
226163 .host ("www.google.com" )
227- .build (),
228- method ,
229- new Headers .Builder ().build (),
230- RequestBody .create ("123" .getBytes (), MediaType .get ("application/text" )),
231- new HashMap <>()
232- );
164+ .build ())
165+ .method (method , method .equals ("GET" ) || method .equals ("HEAD" ) ? null : RequestBody .create ("123" .getBytes (), MediaType .get ("application/text" )))
166+ .build ();
233167 }
234168
235169 private byte [] gzip (String data ) throws IOException {
0 commit comments