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 }