|
46 | 46 | import reactor.test.StepVerifier;
|
47 | 47 |
|
48 | 48 | import org.springframework.boot.testsupport.rule.OutputCapture;
|
49 |
| -import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory; |
50 | 49 | import org.springframework.boot.web.embedded.undertow.UndertowReactiveWebServerFactory;
|
51 | 50 | import org.springframework.boot.web.server.Compression;
|
52 | 51 | import org.springframework.boot.web.server.Ssl;
|
@@ -258,36 +257,47 @@ protected WebClient.Builder getWebClient(
|
258 | 257 | }
|
259 | 258 |
|
260 | 259 | @Test
|
261 |
| - public void compressionOfResponseToGetRequest() throws Exception { |
| 260 | + public void compressionOfResponseToGetRequest() { |
262 | 261 | WebClient client = prepareCompressionTest();
|
263 | 262 | ResponseEntity<Void> response = client.get().exchange()
|
264 | 263 | .flatMap((res) -> res.toEntity(Void.class)).block();
|
265 | 264 | assertResponseIsCompressed(response);
|
266 | 265 | }
|
267 | 266 |
|
268 | 267 | @Test
|
269 |
| - public void compressionOfResponseToPostRequest() throws Exception { |
| 268 | + public void compressionOfResponseToPostRequest() { |
270 | 269 | WebClient client = prepareCompressionTest();
|
271 | 270 | ResponseEntity<Void> response = client.post().exchange()
|
272 | 271 | .flatMap((res) -> res.toEntity(Void.class)).block();
|
273 | 272 | assertResponseIsCompressed(response);
|
274 | 273 | }
|
275 | 274 |
|
276 | 275 | @Test
|
277 |
| - public void noCompressionForMimeType() throws Exception { |
| 276 | + public void noCompressionForSmallResponse() { |
278 | 277 | Compression compression = new Compression();
|
279 |
| - compression.setMimeTypes(new String[] { "application/json" }); |
| 278 | + compression.setEnabled(true); |
| 279 | + compression.setMinResponseSize(3001); |
| 280 | + WebClient client = prepareCompressionTest(compression); |
| 281 | + ResponseEntity<Void> response = client.get().exchange() |
| 282 | + .flatMap((res) -> res.toEntity(Void.class)).block(); |
| 283 | + assertResponseIsNotCompressed(response); |
| 284 | + } |
| 285 | + |
| 286 | + @Test |
| 287 | + public void noCompressionForMimeType() { |
| 288 | + Compression compression = new Compression(); |
| 289 | + compression.setMimeTypes(new String[] {"application/json"}); |
280 | 290 | WebClient client = prepareCompressionTest(compression);
|
281 | 291 | ResponseEntity<Void> response = client.get().exchange()
|
282 | 292 | .flatMap((res) -> res.toEntity(Void.class)).block();
|
283 | 293 | assertResponseIsNotCompressed(response);
|
284 | 294 | }
|
285 | 295 |
|
286 | 296 | @Test
|
287 |
| - public void noCompressionForUserAgent() throws Exception { |
| 297 | + public void noCompressionForUserAgent() { |
288 | 298 | Compression compression = new Compression();
|
289 | 299 | compression.setEnabled(true);
|
290 |
| - compression.setExcludedUserAgents(new String[] { "testUserAgent" }); |
| 300 | + compression.setExcludedUserAgents(new String[] {"testUserAgent"}); |
291 | 301 | WebClient client = prepareCompressionTest(compression);
|
292 | 302 | ResponseEntity<Void> response = client.get().header("User-Agent", "testUserAgent")
|
293 | 303 | .exchange().flatMap((res) -> res.toEntity(Void.class)).block();
|
@@ -338,7 +348,7 @@ protected static class CompressionDetectionHandler
|
338 | 348 | extends ChannelInboundHandlerAdapter {
|
339 | 349 |
|
340 | 350 | @Override
|
341 |
| - public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { |
| 351 | + public void channelRead(ChannelHandlerContext ctx, Object msg) { |
342 | 352 | if (msg instanceof HttpResponse) {
|
343 | 353 | HttpResponse response = (HttpResponse) msg;
|
344 | 354 | boolean compressed = response.headers()
|
@@ -371,6 +381,7 @@ public CharsHandler(int contentSize, MediaType mediaType) {
|
371 | 381 | public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
|
372 | 382 | response.setStatusCode(HttpStatus.OK);
|
373 | 383 | response.getHeaders().setContentType(this.mediaType);
|
| 384 | + response.getHeaders().setContentLength(this.bytes.readableByteCount()); |
374 | 385 | return response.writeWith(Mono.just(this.bytes));
|
375 | 386 | }
|
376 | 387 |
|
|
0 commit comments