View Javadoc

1   package com.atlassian.plugins.rest.module.filter;
2   
3   import com.sun.jersey.core.util.MultivaluedMapImpl;
4   import com.sun.jersey.spi.container.ContainerRequest;
5   import static org.junit.Assert.assertEquals;
6   import org.junit.Test;
7   import org.junit.runner.RunWith;
8   import org.mockito.Mock;
9   import static org.mockito.Mockito.when;
10  import org.mockito.runners.MockitoJUnitRunner;
11  
12  import javax.ws.rs.core.HttpHeaders;
13  import javax.ws.rs.core.MediaType;
14  import javax.ws.rs.core.MultivaluedMap;
15  
16  /**
17   * Testing {@link AcceptHeaderJerseyMvcFilter}
18   */
19  @RunWith(MockitoJUnitRunner.class)
20  public class AcceptHeaderJerseyMvcFilterTest
21  {
22      private final AcceptHeaderJerseyMvcFilter filter = new AcceptHeaderJerseyMvcFilter();
23  
24      @Mock
25      private ContainerRequest request;
26  
27      @Test
28      public void testFilterWithoutTextHtmlContentType()
29      {
30          final String accept = "some/content-type";
31          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
32  
33          when(request.getRequestHeaders()).thenReturn(headers);
34          filter.filter(request);
35  
36          assertEquals(accept, headers.getFirst(HttpHeaders.ACCEPT));
37      }
38  
39      @Test
40      public void testFilterWithTextHtmlContentTypeFirst()
41      {
42          final String accept = "text/html,some/content-type";
43          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
44  
45          when(request.getRequestHeaders()).thenReturn(headers);
46          filter.filter(request);
47  
48          assertEquals(accept, headers.getFirst(HttpHeaders.ACCEPT));
49      }
50  
51      @Test
52      public void testFilterWithTextHtmlContentTypeNotFirst()
53      {
54          final String accept = "some/content-type,text/html,some-other/content-type";
55          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
56  
57          when(request.getRequestHeaders()).thenReturn(headers);
58          filter.filter(request);
59  
60          assertEquals(MediaType.TEXT_HTML + "," + accept, headers.getFirst(HttpHeaders.ACCEPT));
61      }
62  
63      @Test
64      public void testFilterWithWildcardContentTypeNotFirst()
65      {
66          final String accept = "some/content-type,*/*,some-other/content-type";
67          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
68  
69          when(request.getRequestHeaders()).thenReturn(headers);
70          filter.filter(request);
71  
72          assertEquals(MediaType.TEXT_HTML + "," + MediaType.APPLICATION_XML + "," + accept, headers.getFirst(HttpHeaders.ACCEPT));
73      }
74  
75      @Test
76      public void testFilterWithWildcardContentType()
77      {
78          final String accept = "*/*,some-other/content-type";
79          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
80  
81          when(request.getRequestHeaders()).thenReturn(headers);
82          filter.filter(request);
83  
84          assertEquals(MediaType.TEXT_HTML + "," + MediaType.APPLICATION_XML + "," + accept, headers.getFirst(HttpHeaders.ACCEPT));
85      }
86  
87      @Test
88      public void testFilterWithWildcardOnlyContentType()
89      {
90          final String accept = "*/*";
91          final MultivaluedMap<String, String> headers = getHeadersMap(accept);
92  
93          when(request.getRequestHeaders()).thenReturn(headers);
94          filter.filter(request);
95  
96          assertEquals(MediaType.TEXT_HTML + "," + MediaType.APPLICATION_XML + "," + accept, headers.getFirst(HttpHeaders.ACCEPT));
97      }
98  
99      private MultivaluedMap<String, String> getHeadersMap(final String value)
100     {
101         final MultivaluedMapImpl multivaluedMap = new MultivaluedMapImpl();
102         multivaluedMap.putSingle(HttpHeaders.ACCEPT, value);
103         return multivaluedMap;
104     }
105 }