@@ -154,170 +154,87 @@ public void testGzipOutputFilterFactoryJavaBeanProperties() {
154154 }
155155
156156 @ Test
157- public void testNegotiationQualityFactor () {
157+ public void testCompressionOff () {
158158 CompressionConfig config = new CompressionConfig ();
159- config .setCompression ("force" );
160-
161- // Create a dummy "deflate" factory for testing
162- OutputFilterFactory deflateFactory = new OutputFilterFactory () {
163- public OutputFilter createFilter () {
164- return new GzipOutputFilter ();
165- }
166-
167- public String getEncodingName () {
168- return "deflate" ;
169- }
170- };
171-
172- List <OutputFilterFactory > factories = new ArrayList <>();
173- factories .add (new GzipOutputFilterFactory ()); // server priority 0
174- factories .add (deflateFactory ); // server priority 1
159+ // Default compression is "off"
175160
176- // Client prefers deflate over gzip
177161 Request request = new Request ();
178162 Response response = new Response ();
179- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip;q=0.5, deflate;q=1.0" );
180-
181- OutputFilterFactory result = config .useCompression (request , response , factories );
182- Assert .assertNotNull (result );
183- Assert .assertEquals ("deflate" , result .getEncodingName ());
184- }
185-
186- @ Test
187- public void testNegotiationServerPriority () {
188- CompressionConfig config = new CompressionConfig ();
189- config .setCompression ("force" );
190-
191- OutputFilterFactory brFactory = new OutputFilterFactory () {
192- @ Override
193- public OutputFilter createFilter () {
194- return new GzipOutputFilter ();
195- }
196-
197- @ Override
198- public String getEncodingName () {
199- return "br" ;
200- }
201- };
163+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip" );
202164
203- // brotil first (server priority), then gzip
204165 List <OutputFilterFactory > factories = new ArrayList <>();
205- factories .add (brFactory );
206166 factories .add (new GzipOutputFilterFactory ());
207-
208- // Client accepts both with equal quality
209- Request request = new Request ();
210- Response response = new Response ();
211- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip, br" );
212-
213167 OutputFilterFactory result = config .useCompression (request , response , factories );
214- Assert .assertNotNull (result );
215- // Server priority wins on equal quality
216- Assert .assertEquals ("br" , result .getEncodingName ());
168+ Assert .assertNull (result );
217169 }
218170
219171 @ Test
220- public void testNegotiationWildcard () {
172+ public void testAlreadyCompressedContentEncoding () {
221173 CompressionConfig config = new CompressionConfig ();
222174 config .setCompression ("force" );
223175
224- List <OutputFilterFactory > factories = new ArrayList <>();
225- factories .add (new GzipOutputFilterFactory ());
226-
227- // Client accepts any encoding
228176 Request request = new Request ();
229177 Response response = new Response ();
230- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("*" );
231-
232- OutputFilterFactory result = config .useCompression (request , response , factories );
233- Assert .assertNotNull (result );
234- Assert .assertEquals ("gzip" , result .getEncodingName ());
235- }
236-
237- @ Test
238- public void testNegotiationNoMatch () {
239- CompressionConfig config = new CompressionConfig ();
240- config .setCompression ("force" );
178+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip" );
179+ // Response already has gzip Content-Encoding - should skip compression
180+ response .getMimeHeaders ().addValue ("content-encoding" ).setString ("gzip" );
241181
242182 List <OutputFilterFactory > factories = new ArrayList <>();
243183 factories .add (new GzipOutputFilterFactory ());
244-
245- // Client only accepts brotil, but server only has gzip
246- Request request = new Request ();
247- Response response = new Response ();
248- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("br" );
249-
250184 OutputFilterFactory result = config .useCompression (request , response , factories );
251185 Assert .assertNull (result );
252186 }
253187
254188 @ Test
255- public void testNegotiationQZero () {
189+ public void testNegotiationViaAcceptEncoding () throws Exception {
256190 CompressionConfig config = new CompressionConfig ();
257191 config .setCompression ("force" );
258192
193+ // Factories: gzip then deflate (server priority)
259194 List <OutputFilterFactory > factories = new ArrayList <>();
260195 factories .add (new GzipOutputFilterFactory ());
196+ OutputFilterFactory deflateFactory = new OutputFilterFactory () {
197+ @ Override
198+ public OutputFilter createFilter () {
199+ return new GzipOutputFilter ();
200+ }
201+ @ Override
202+ public String getEncodingName () {
203+ return "deflate" ;
204+ }
205+ };
206+ factories .add (deflateFactory );
261207
262- // Client explicitly rejects gzip with q=0
208+ // Client prefers deflate over gzip
263209 Request request = new Request ();
264210 Response response = new Response ();
265- request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("gzip;q=0" );
211+ request .getMimeHeaders ().addValue ("accept-encoding" ).setString ("deflate;q=1.0, gzip;q=0.5 " );
266212
267213 OutputFilterFactory result = config .useCompression (request , response , factories );
268- Assert .assertNull (result );
269- }
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 );
214+ Assert .assertNotNull (result );
215+ Assert .assertEquals ("deflate" , result .getEncodingName ());
216+ Assert .assertEquals ("deflate" , response .getMimeHeaders ().getHeader ("Content-Encoding" ));
217+ Assert .assertNull (response .getMimeHeaders ().getHeader ("Transfer-Encoding" ));
284218 }
285219
286220 @ Test
287- public void testAlreadyCompressedContentEncoding () {
221+ public void testNegotiationViaTE () throws Exception {
288222 CompressionConfig config = new CompressionConfig ();
289223 config .setCompression ("force" );
290224
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-
225+ // Factories: gzip then deflate (server priority)
297226 List <OutputFilterFactory > factories = new ArrayList <>();
298227 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-
308228 OutputFilterFactory deflateFactory = new OutputFilterFactory () {
309-
229+ @ Override
310230 public OutputFilter createFilter () {
311231 return new GzipOutputFilter ();
312232 }
313-
233+ @ Override
314234 public String getEncodingName () {
315235 return "deflate" ;
316236 }
317237 };
318-
319- List <OutputFilterFactory > factories = new ArrayList <>();
320- factories .add (new GzipOutputFilterFactory ());
321238 factories .add (deflateFactory );
322239
323240 // TE header should use Transfer-Encoding, not Content-Encoding
@@ -328,8 +245,9 @@ public String getEncodingName() {
328245 OutputFilterFactory result = config .useCompression (request , response , factories );
329246 Assert .assertNotNull (result );
330247 Assert .assertEquals ("deflate" , result .getEncodingName ());
331- // TE negotiation sets Transfer-Encoding, not Content-Encoding
332248 Assert .assertEquals ("deflate" , response .getMimeHeaders ().getHeader ("Transfer-Encoding" ));
333- Assert .assertNull (response .getMimeHeaders ().getValue ("Content-Encoding" ));
249+ Assert .assertNull (response .getMimeHeaders ().getHeader ("Content-Encoding" ));
334250 }
251+
252+
335253}
0 commit comments