17
17
package org .springframework .web .reactive .function .client ;
18
18
19
19
import java .net .InetSocketAddress ;
20
- import java .nio .ByteBuffer ;
21
20
import java .nio .charset .StandardCharsets ;
22
21
import java .util .Collections ;
23
22
import java .util .List ;
34
33
import org .springframework .core .codec .ByteArrayDecoder ;
35
34
import org .springframework .core .codec .StringDecoder ;
36
35
import org .springframework .core .io .buffer .DataBuffer ;
37
- import org .springframework .core .io .buffer .DefaultDataBuffer ;
38
36
import org .springframework .core .io .buffer .DefaultDataBufferFactory ;
39
37
import org .springframework .http .HttpHeaders ;
40
38
import org .springframework .http .HttpRange ;
45
43
import org .springframework .http .ResponseEntity ;
46
44
import org .springframework .http .client .reactive .ClientHttpResponse ;
47
45
import org .springframework .http .codec .DecoderHttpMessageReader ;
48
- import org .springframework .http .codec .HttpMessageReader ;
49
46
import org .springframework .http .codec .json .Jackson2JsonDecoder ;
50
47
import org .springframework .util .LinkedMultiValueMap ;
51
48
import org .springframework .util .MultiValueMap ;
62
59
*/
63
60
class DefaultClientResponseTests {
64
61
65
- private ClientHttpResponse mockResponse = mock ();
62
+ private static final ParameterizedTypeReference <String > STRING_TYPE = new ParameterizedTypeReference <>() {};
63
+
64
+
65
+ private final ClientHttpResponse mockResponse = mock ();
66
66
67
67
private final HttpHeaders httpHeaders = new HttpHeaders ();
68
68
69
- private ExchangeStrategies mockExchangeStrategies = mock ();
69
+ private final ExchangeStrategies mockExchangeStrategies = mock ();
70
70
71
71
private DefaultClientResponse defaultClientResponse ;
72
72
73
73
74
74
@ BeforeEach
75
75
void configureMocks () {
76
76
given (mockResponse .getHeaders ()).willReturn (this .httpHeaders );
77
-
78
77
defaultClientResponse = new DefaultClientResponse (mockResponse , mockExchangeStrategies , "" , "" , () -> null );
79
78
}
80
79
@@ -121,13 +120,11 @@ void cookies() {
121
120
@ Test
122
121
void body () {
123
122
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
124
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
125
- Flux <DataBuffer > body = Flux .just (dataBuffer );
126
- mockTextPlainResponse (body );
123
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
124
+ mockTextPlainResponse (Flux .just (dataBuffer ));
127
125
128
- List <HttpMessageReader <?>> messageReaders = Collections
129
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
130
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
126
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
127
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
131
128
132
129
Mono <String > resultMono = defaultClientResponse .body (toMono (String .class ));
133
130
assertThat (resultMono .block ()).isEqualTo ("foo" );
@@ -136,13 +133,11 @@ void body() {
136
133
@ Test
137
134
void bodyToMono () {
138
135
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
139
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
140
- Flux <DataBuffer > body = Flux .just (dataBuffer );
141
- mockTextPlainResponse (body );
136
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
137
+ mockTextPlainResponse (Flux .just (dataBuffer ));
142
138
143
- List <HttpMessageReader <?>> messageReaders = Collections
144
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
145
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
139
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
140
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
146
141
147
142
Mono <String > resultMono = defaultClientResponse .bodyToMono (String .class );
148
143
assertThat (resultMono .block ()).isEqualTo ("foo" );
@@ -151,30 +146,24 @@ void bodyToMono() {
151
146
@ Test
152
147
void bodyToMonoTypeReference () {
153
148
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
154
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
155
- Flux <DataBuffer > body = Flux .just (dataBuffer );
156
- mockTextPlainResponse (body );
149
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
150
+ mockTextPlainResponse (Flux .just (dataBuffer ));
157
151
158
- List <HttpMessageReader <?>> messageReaders = Collections
159
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
160
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
152
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
153
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
161
154
162
- Mono <String > resultMono =
163
- defaultClientResponse .bodyToMono (new ParameterizedTypeReference <String >() {
164
- });
155
+ Mono <String > resultMono = defaultClientResponse .bodyToMono (STRING_TYPE );
165
156
assertThat (resultMono .block ()).isEqualTo ("foo" );
166
157
}
167
158
168
159
@ Test
169
160
void bodyToFlux () {
170
161
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
171
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
172
- Flux <DataBuffer > body = Flux .just (dataBuffer );
173
- mockTextPlainResponse (body );
162
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
163
+ mockTextPlainResponse (Flux .just (dataBuffer ));
174
164
175
- List <HttpMessageReader <?>> messageReaders = Collections
176
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
177
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
165
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
166
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
178
167
179
168
Flux <String > resultFlux = defaultClientResponse .bodyToFlux (String .class );
180
169
Mono <List <String >> result = resultFlux .collectList ();
@@ -184,17 +173,13 @@ void bodyToFlux() {
184
173
@ Test
185
174
void bodyToFluxTypeReference () {
186
175
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
187
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
188
- Flux <DataBuffer > body = Flux .just (dataBuffer );
189
- mockTextPlainResponse (body );
176
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
177
+ mockTextPlainResponse (Flux .just (dataBuffer ));
190
178
191
- List <HttpMessageReader <?>> messageReaders = Collections
192
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
193
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
179
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
180
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
194
181
195
- Flux <String > resultFlux =
196
- defaultClientResponse .bodyToFlux (new ParameterizedTypeReference <String >() {
197
- });
182
+ Flux <String > resultFlux = defaultClientResponse .bodyToFlux (STRING_TYPE );
198
183
Mono <List <String >> result = resultFlux .collectList ();
199
184
assertThat (result .block ()).isEqualTo (Collections .singletonList ("foo" ));
200
185
}
@@ -203,13 +188,11 @@ void bodyToFluxTypeReference() {
203
188
@ SuppressWarnings ("deprecation" )
204
189
void toEntity () {
205
190
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
206
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
207
- Flux <DataBuffer > body = Flux .just (dataBuffer );
208
- mockTextPlainResponse (body );
191
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
192
+ mockTextPlainResponse (Flux .just (dataBuffer ));
209
193
210
- List <HttpMessageReader <?>> messageReaders = Collections
211
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
212
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
194
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
195
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
213
196
214
197
ResponseEntity <String > result = defaultClientResponse .toEntity (String .class ).block ();
215
198
assertThat (result .getBody ()).isEqualTo ("foo" );
@@ -220,19 +203,17 @@ void toEntity() {
220
203
221
204
@ Test
222
205
@ SuppressWarnings ("deprecation" )
223
- void toEntityWithUnknownStatusCode () throws Exception {
206
+ void toEntityWithUnknownStatusCode () {
224
207
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
225
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
226
- Flux <DataBuffer > body = Flux .just (dataBuffer );
208
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
227
209
228
210
httpHeaders .setContentType (MediaType .TEXT_PLAIN );
229
211
given (mockResponse .getHeaders ()).willReturn (httpHeaders );
230
212
given (mockResponse .getStatusCode ()).willReturn (HttpStatusCode .valueOf (999 ));
231
- given (mockResponse .getBody ()).willReturn (body );
213
+ given (mockResponse .getBody ()).willReturn (Flux . just ( dataBuffer ) );
232
214
233
- List <HttpMessageReader <?>> messageReaders = Collections
234
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
235
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
215
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
216
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
236
217
237
218
ResponseEntity <String > result = defaultClientResponse .toEntity (String .class ).block ();
238
219
assertThat (result .getBody ()).isEqualTo ("foo" );
@@ -245,17 +226,13 @@ void toEntityWithUnknownStatusCode() throws Exception {
245
226
@ SuppressWarnings ("deprecation" )
246
227
void toEntityTypeReference () {
247
228
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
248
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
249
- Flux <DataBuffer > body = Flux .just (dataBuffer );
250
- mockTextPlainResponse (body );
229
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
230
+ mockTextPlainResponse (Flux .just (dataBuffer ));
251
231
252
- List <HttpMessageReader <?>> messageReaders = Collections
253
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
254
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
232
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
233
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
255
234
256
- ResponseEntity <String > result = defaultClientResponse .toEntity (
257
- new ParameterizedTypeReference <String >() {
258
- }).block ();
235
+ ResponseEntity <String > result = defaultClientResponse .toEntity (STRING_TYPE ).block ();
259
236
assertThat (result .getBody ()).isEqualTo ("foo" );
260
237
assertThat (result .getStatusCode ()).isEqualTo (HttpStatus .OK );
261
238
assertThat (result .getStatusCodeValue ()).isEqualTo (HttpStatus .OK .value ());
@@ -266,13 +243,11 @@ void toEntityTypeReference() {
266
243
@ SuppressWarnings ("deprecation" )
267
244
void toEntityList () {
268
245
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
269
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
270
- Flux <DataBuffer > body = Flux .just (dataBuffer );
271
- mockTextPlainResponse (body );
246
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
247
+ mockTextPlainResponse (Flux .just (dataBuffer ));
272
248
273
- List <HttpMessageReader <?>> messageReaders = Collections
274
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
275
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
249
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
250
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
276
251
277
252
ResponseEntity <List <String >> result = defaultClientResponse .toEntityList (String .class ).block ();
278
253
assertThat (result .getBody ()).isEqualTo (Collections .singletonList ("foo" ));
@@ -285,17 +260,15 @@ void toEntityList() {
285
260
@ SuppressWarnings ("deprecation" )
286
261
void toEntityListWithUnknownStatusCode () {
287
262
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
288
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
289
- Flux <DataBuffer > body = Flux .just (dataBuffer );
263
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
290
264
291
265
httpHeaders .setContentType (MediaType .TEXT_PLAIN );
292
266
given (mockResponse .getHeaders ()).willReturn (httpHeaders );
293
267
given (mockResponse .getStatusCode ()).willReturn (HttpStatusCode .valueOf (999 ));
294
- given (mockResponse .getBody ()).willReturn (body );
268
+ given (mockResponse .getBody ()).willReturn (Flux . just ( dataBuffer ) );
295
269
296
- List <HttpMessageReader <?>> messageReaders = Collections
297
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
298
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
270
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
271
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
299
272
300
273
ResponseEntity <List <String >> result = defaultClientResponse .toEntityList (String .class ).block ();
301
274
assertThat (result .getBody ()).isEqualTo (Collections .singletonList ("foo" ));
@@ -308,36 +281,31 @@ void toEntityListWithUnknownStatusCode() {
308
281
@ SuppressWarnings ("deprecation" )
309
282
void toEntityListTypeReference () {
310
283
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
311
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer .wrap (bytes ));
312
- Flux <DataBuffer > body = Flux .just (dataBuffer );
284
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
313
285
314
- mockTextPlainResponse (body );
286
+ mockTextPlainResponse (Flux . just ( dataBuffer ) );
315
287
316
- List <HttpMessageReader <?>> messageReaders = Collections
317
- .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ()));
318
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
288
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
289
+ Collections .singletonList (new DecoderHttpMessageReader <>(StringDecoder .allMimeTypes ())));
319
290
320
- ResponseEntity <List <String >> result = defaultClientResponse .toEntityList (
321
- new ParameterizedTypeReference <String >() {}).block ();
291
+ ResponseEntity <List <String >> result = defaultClientResponse .toEntityList (STRING_TYPE ).block ();
322
292
assertThat (result .getBody ()).isEqualTo (Collections .singletonList ("foo" ));
323
293
assertThat (result .getStatusCode ()).isEqualTo (HttpStatus .OK );
324
294
assertThat (result .getStatusCodeValue ()).isEqualTo (HttpStatus .OK .value ());
325
295
assertThat (result .getHeaders ().getContentType ()).isEqualTo (MediaType .TEXT_PLAIN );
326
296
}
327
297
328
298
@ Test
329
- @ SuppressWarnings ("deprecation" )
330
299
void createException () {
331
300
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
332
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer . wrap ( bytes ) );
333
- Flux < DataBuffer > body = Flux . just ( dataBuffer );
301
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
302
+
334
303
httpHeaders .setContentType (MediaType .TEXT_PLAIN );
335
304
given (mockResponse .getStatusCode ()).willReturn (HttpStatus .NOT_FOUND );
336
- given (mockResponse .getBody ()).willReturn (body );
305
+ given (mockResponse .getBody ()).willReturn (Flux . just ( dataBuffer ) );
337
306
338
- List <HttpMessageReader <?>> messageReaders = Collections .singletonList (
339
- new DecoderHttpMessageReader <>(new ByteArrayDecoder ()));
340
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
307
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
308
+ Collections .singletonList (new DecoderHttpMessageReader <>(new ByteArrayDecoder ())));
341
309
342
310
Mono <WebClientResponseException > resultMono = defaultClientResponse .createException ();
343
311
WebClientResponseException exception = resultMono .block ();
@@ -383,18 +351,16 @@ void createExceptionAndDecodeWithoutContent() {
383
351
}
384
352
385
353
@ Test
386
- @ SuppressWarnings ("deprecation" )
387
354
void createError () {
388
355
byte [] bytes = "foo" .getBytes (StandardCharsets .UTF_8 );
389
- DefaultDataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (ByteBuffer . wrap ( bytes ) );
390
- Flux < DataBuffer > body = Flux . just ( dataBuffer );
356
+ DataBuffer dataBuffer = DefaultDataBufferFactory .sharedInstance .wrap (bytes );
357
+
391
358
httpHeaders .setContentType (MediaType .TEXT_PLAIN );
392
359
given (mockResponse .getStatusCode ()).willReturn (HttpStatus .NOT_FOUND );
393
- given (mockResponse .getBody ()).willReturn (body );
360
+ given (mockResponse .getBody ()).willReturn (Flux . just ( dataBuffer ) );
394
361
395
- List <HttpMessageReader <?>> messageReaders = Collections .singletonList (
396
- new DecoderHttpMessageReader <>(new ByteArrayDecoder ()));
397
- given (mockExchangeStrategies .messageReaders ()).willReturn (messageReaders );
362
+ given (mockExchangeStrategies .messageReaders ()).willReturn (
363
+ Collections .singletonList (new DecoderHttpMessageReader <>(new ByteArrayDecoder ())));
398
364
399
365
Mono <String > resultMono = defaultClientResponse .createError ();
400
366
StepVerifier .create (resultMono )
@@ -412,7 +378,6 @@ void createError() {
412
378
}
413
379
414
380
415
- @ SuppressWarnings ("deprecation" )
416
381
private void mockTextPlainResponse (Flux <DataBuffer > body ) {
417
382
httpHeaders .setContentType (MediaType .TEXT_PLAIN );
418
383
given (mockResponse .getStatusCode ()).willReturn (HttpStatus .OK );
0 commit comments