@@ -153,20 +153,6 @@ public void testGzipOutputFilterFactoryJavaBeanProperties() {
153153 Assert .assertTrue (filter instanceof GzipOutputFilter );
154154 }
155155
156- @ Test
157- public void testNoCompressionEncodings () {
158- CompressionConfig config = new CompressionConfig ();
159- String encodings = config .getNoCompressionEncodings ();
160- Assert .assertTrue (Arrays .asList ("br" , "compress" , "dcb" , "dcz" , "deflate" , "gzip" , "pack200-gzip" , "zstd" )
161- .stream ()
162- .anyMatch (encodings ::contains ));
163-
164- config .setNoCompressionEncodings ("br" );
165- String newEncodings = config .getNoCompressionEncodings ();
166- Assert .assertTrue (newEncodings .contains ("br" ));
167- Assert .assertFalse (newEncodings .contains ("gzip" ));
168- }
169-
170156 @ Test
171157 public void testNegotiationQualityFactor () {
172158 CompressionConfig config = new CompressionConfig ();
@@ -190,7 +176,7 @@ public String getEncodingName() {
190176 // Client prefers deflate over gzip
191177 Request request = new Request ();
192178 Response response = new Response ();
193- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip;q=0.5, defalte ;q=1.0" );
179+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip;q=0.5, deflate ;q=1.0" );
194180
195181 OutputFilterFactory result = config .useCompression (request , response , factories );
196182 Assert .assertNotNull (result );
@@ -281,4 +267,69 @@ public void testNegotiationQZero() {
281267 OutputFilterFactory result = config .useCompression (request , response , factories );
282268 Assert .assertNull (result );
283269 }
270+
271+ @ Test
272+ public void testCompressionOff () {
273+ CompressionConfig config = new CompressionConfig ();
274+ // Default compression is "off"
275+
276+ Request request = new Request ();
277+ Response response = new Response ();
278+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip" );
279+
280+ List <OutputFilterFactory > factories = new ArrayList <>();
281+ factories .add (new GzipOutputFilterFactory ());
282+ OutputFilterFactory result = config .useCompression (request , response , factories );
283+ Assert .assertNull (result );
284+ }
285+
286+ @ Test
287+ public void testAlreadyCompressedContentEncoding () {
288+ CompressionConfig config = new CompressionConfig ();
289+ config .setCompression ("force" );
290+
291+ Request request = new Request ();
292+ Response response = new Response ();
293+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip" );
294+ // Response already has gzip Content-Encoding - should skip compression
295+ response .getMimeHeaders ().addValue ("content-encoding" ).setString ("gzip" );
296+
297+ List <OutputFilterFactory > factories = new ArrayList <>();
298+ factories .add (new GzipOutputFilterFactory ());
299+ OutputFilterFactory result = config .useCompression (request , response , factories );
300+ Assert .assertNull (result );
301+ }
302+
303+ @ Test
304+ public void testTENegotiationWithFactories () {
305+ CompressionConfig config = new CompressionConfig ();
306+ config .setCompression ("force" );
307+
308+ OutputFilterFactory deflateFactory = new OutputFilterFactory () {
309+
310+ public OutputFilter createFilter () {
311+ return new GzipOutputFilter ();
312+ }
313+
314+ public String getEncodingName () {
315+ return "deflate" ;
316+ }
317+ };
318+
319+ List <OutputFilterFactory > factories = new ArrayList <>();
320+ factories .add (new GzipOutputFilterFactory ());
321+ factories .add (deflateFactory );
322+
323+ // TE header should use Transfer-Encoding, not Content-Encoding
324+ Request request = new Request ();
325+ Response response = new Response ();
326+ request .getMimeHeaders ().addValue ("TE" ).setString ("deflate;q=1.0, gzip;q=0.5" );
327+
328+ OutputFilterFactory result = config .useCompression (request , response , factories );
329+ Assert .assertNotNull (result );
330+ Assert .assertEquals ("deflate" , result .getEncodingName ());
331+ // TE negotiation sets Transfer-Encoding, not Content-Encoding
332+ Assert .assertEquals ("deflate" , response .getMimeHeaders ().getHeader ("Transfer-Encoding" ));
333+ Assert .assertNull (response .getMimeHeaders ().getValue ("Content-Encoding" ));
334+ }
284335}
0 commit comments