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