View Javadoc

1   package com.atlassian.gzipfilter.selector;
2   
3   import javax.servlet.FilterConfig;
4   import javax.servlet.http.HttpServletRequest;
5   
6   import junit.framework.TestCase;
7   
8   import static org.mockito.Mockito.mock;
9   import static org.mockito.Mockito.when;
10  
11  public class TestUserAgentBasedGzipSelectorFactory extends TestCase
12  {
13      final FilterConfig filterConfig = mock(FilterConfig.class);
14      final HttpServletRequest request = mock(HttpServletRequest.class);
15  
16      public void testNoopConfig()
17      {
18          final UserAgentBasedGzipSelectorFactory factory = new UserAgentBasedGzipSelectorFactory(filterConfig);
19  
20          when(request.getHeader(UserAgentBasedGzipSelectorFactory.USER_AGENT_HEADER)).thenReturn("MSIE 6.1b");
21          final GzipCompatibilitySelector ie6Selector = factory.getSelector(filterConfig, request);
22          assertFalse(ie6Selector.shouldGzip());
23  
24          when(request.getHeader(UserAgentBasedGzipSelectorFactory.USER_AGENT_HEADER)).thenReturn("Chrome");
25          final GzipCompatibilitySelector chromeSelector = factory.getSelector(filterConfig, request);
26          assertTrue(chromeSelector.shouldGzip());
27          assertTrue(chromeSelector.shouldGzip("text/html"));
28          assertFalse(chromeSelector.shouldGzip("gzip"));
29      }
30  
31      public void testConfigOverride()
32      {
33          when(filterConfig.getInitParameter(UserAgentBasedGzipSelectorFactory.COMPRESSABLE_MIME_TYPES_PARAM_NAME))
34                  .thenReturn("text/xml,text/html");
35          when(filterConfig.getInitParameter(UserAgentBasedGzipSelectorFactory.NO_COMPRESSION_USER_AGENTS_PARAM_NAME))
36                  .thenReturn("Firefox,Chrome");
37  
38          final UserAgentBasedGzipSelectorFactory factory = new UserAgentBasedGzipSelectorFactory(filterConfig);
39  
40          when(request.getHeader(UserAgentBasedGzipSelectorFactory.USER_AGENT_HEADER)).thenReturn("Firefox");
41          final GzipCompatibilitySelector firefoxSelector = factory.getSelector(filterConfig, request);
42          assertFalse(firefoxSelector.shouldGzip());
43  
44          when(request.getHeader(UserAgentBasedGzipSelectorFactory.USER_AGENT_HEADER)).thenReturn("Firefox");
45          final GzipCompatibilitySelector chromeSelector = factory.getSelector(filterConfig, request);
46          assertFalse(chromeSelector.shouldGzip());
47  
48          when(request.getHeader(UserAgentBasedGzipSelectorFactory.USER_AGENT_HEADER)).thenReturn("MSIE");
49          final GzipCompatibilitySelector msieSelector = factory.getSelector(filterConfig, request);
50          assertTrue(msieSelector.shouldGzip());
51          assertTrue(msieSelector.shouldGzip("text/xml"));
52          assertTrue(msieSelector.shouldGzip("text/html"));
53          assertFalse(msieSelector.shouldGzip("text/plain"));
54      }
55  }