1 package com.atlassian.plugins.rest.common.feature.jersey;
2
3 import com.sun.jersey.api.NotFoundException;
4 import org.junit.Test;
5 import org.mockito.InjectMocks;
6
7 import static com.atlassian.plugins.rest.common.feature.jersey.test.DarkFeatureTestResource.FEATURE_KEY;
8 import static org.hamcrest.MatcherAssert.assertThat;
9 import static org.hamcrest.Matchers.equalTo;
10
11 public class DarkFeatureResourceFilterTest extends AbstractDarkFeatureResourceFilterTest {
12 @InjectMocks
13 private DarkFeatureResourceFilter classUnderTest;
14
15 @Test
16 public void testFilterWithNoAnnotations() {
17 setResourceAnnotated(false);
18 setMethodAnnotated(false);
19
20 assertThat(classUnderTest.filter(request), equalTo(request));
21 }
22
23 @Test
24 public void testFilterWithResourceAnnotationAndFeatureEnabled() {
25 setFeatureEnabled(true);
26 setResourceAnnotated(true);
27 setMethodAnnotated(false);
28 setResourceAnnotation(FEATURE_KEY);
29
30 assertThat(classUnderTest.filter(request), equalTo(request));
31 }
32
33 @Test(expected = NotFoundException.class)
34 public void testFilterWithResourceAnnotationAndFeatureDisabled() {
35 setFeatureEnabled(false);
36 setResourceAnnotated(true);
37 setMethodAnnotated(false);
38 setResourceAnnotation(FEATURE_KEY);
39
40 classUnderTest.filter(request);
41 }
42
43 @Test
44 public void testFilterWithMethodAnnotationAndFeatureEnabled() {
45 setFeatureEnabled(true);
46 setResourceAnnotated(false);
47 setMethodAnnotated(true);
48
49 assertThat(classUnderTest.filter(request), equalTo(request));
50 }
51
52 @Test(expected = NotFoundException.class)
53 public void testFilterWithMethodAnnotationAndFeatureDisabled() {
54 setFeatureEnabled(false);
55 setResourceAnnotated(false);
56 setMethodAnnotated(true);
57
58 classUnderTest.filter(request);
59 }
60
61 @Test
62 public void testFilterWithMultipleKeysRequiredAndAllEnabled() {
63 setResourceAnnotated(true);
64 setResourceAnnotation("feature1", "feature2");
65 setFeatureEnabled("feature1", true);
66 setFeatureEnabled("feature2", true);
67
68 assertThat(classUnderTest.filter(request), equalTo(request));
69 }
70
71 @Test(expected = NotFoundException.class)
72 public void testFilterWithMultipleKeysRequiredAndNotAllEnabled() {
73 setResourceAnnotated(true);
74 setResourceAnnotation("feature1", "feature2");
75 setFeatureEnabled("feature1", true);
76 setFeatureEnabled("feature2", false);
77
78 classUnderTest.filter(request);
79 }
80 }