10
10
import java .io .OutputStream ;
11
11
import java .net .InetSocketAddress ;
12
12
import java .nio .charset .StandardCharsets ;
13
+ import java .util .Arrays ;
14
+ import java .util .List ;
15
+ import java .util .stream .Collectors ;
13
16
import java .util .zip .GZIPOutputStream ;
14
17
import org .junit .jupiter .api .AfterAll ;
15
18
import org .junit .jupiter .api .BeforeAll ;
@@ -26,6 +29,7 @@ public class AutomaticDecompressionTest {
26
29
private static AsyncHttpClient createClient () {
27
30
AsyncHttpClientConfig config = new DefaultAsyncHttpClientConfig .Builder ()
28
31
.setEnableAutomaticDecompression (true )
32
+ .setCompressionEnforced (true )
29
33
.build ();
30
34
return new DefaultAsyncHttpClient (config );
31
35
}
@@ -38,6 +42,7 @@ static void setupServer() throws Exception {
38
42
@ Override
39
43
public void handle (HttpExchange exchange )
40
44
throws IOException {
45
+ validateAcceptEncodingHeader (exchange );
41
46
exchange .getResponseHeaders ().set ("Content-Encoding" , "br" );
42
47
exchange .sendResponseHeaders (200 , 0 );
43
48
OutputStream out = exchange .getResponseBody ();
@@ -53,6 +58,7 @@ public void handle(HttpExchange exchange)
53
58
@ Override
54
59
public void handle (HttpExchange exchange )
55
60
throws IOException {
61
+ validateAcceptEncodingHeader (exchange );
56
62
exchange .getResponseHeaders ().set ("Content-Encoding" , "zstd" );
57
63
byte [] compressedData = new byte [UNCOMPRESSED_PAYLOAD .length ()];
58
64
long n = Zstd .compress (compressedData , UNCOMPRESSED_PAYLOAD .getBytes (StandardCharsets .UTF_8 ), 2 , true );
@@ -68,6 +74,7 @@ public void handle(HttpExchange exchange)
68
74
@ Override
69
75
public void handle (HttpExchange exchange )
70
76
throws IOException {
77
+ validateAcceptEncodingHeader (exchange );
71
78
exchange .getResponseHeaders ().set ("Content-Encoding" , "gzip" );
72
79
exchange .sendResponseHeaders (200 , 0 );
73
80
OutputStream out = exchange .getResponseBody ();
@@ -81,6 +88,15 @@ public void handle(HttpExchange exchange)
81
88
HTTP_SERVER .start ();
82
89
}
83
90
91
+ private static void validateAcceptEncodingHeader (HttpExchange exchange ) {
92
+ Headers requestHeaders = exchange .getRequestHeaders ();
93
+ List <String > acceptEncodingList = requestHeaders .get ("Accept-Encoding" )
94
+ .stream ()
95
+ .flatMap (x -> Arrays .asList (x .split ("," )).stream ())
96
+ .collect (Collectors .toList ());
97
+ assertEquals (List .of ("gzip" , "deflate" , "br" , "zstd" ), acceptEncodingList );
98
+ }
99
+
84
100
@ AfterAll
85
101
static void stopServer () {
86
102
if (HTTP_SERVER != null ) {
0 commit comments