1 package com.atlassian.plugins.rest.common.interceptor.impl;
2
3 import com.atlassian.plugin.AutowireCapablePlugin;
4 import com.atlassian.plugins.rest.common.interceptor.ResourceInterceptor;
5 import com.atlassian.plugins.rest.common.interceptor.impl.test.ClassResource;
6 import com.atlassian.plugins.rest.common.interceptor.impl.test.MethodResource;
7 import com.atlassian.plugins.rest.common.interceptor.impl.test.MyInterceptor;
8 import com.atlassian.plugins.rest.common.interceptor.impl.test.PackageResource;
9 import junit.framework.TestCase;
10
11 import java.util.List;
12
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.when;
15
16 public class InterceptorChainBuilderTest extends TestCase
17 {
18 public void testMethodChain() throws NoSuchMethodException
19 {
20 verifyChain(MethodResource.class);
21 }
22
23 public void testClassChain() throws NoSuchMethodException
24 {
25 verifyChain(ClassResource.class);
26 }
27
28 public void testPackageChain() throws NoSuchMethodException
29 {
30 verifyChain(PackageResource.class);
31 }
32
33 public void testDefaultChain() throws NoSuchMethodException
34 {
35 AutowireCapablePlugin plugin = mock(AutowireCapablePlugin.class);
36 InterceptorChainBuilder builder = new InterceptorChainBuilder(plugin);
37 List<ResourceInterceptor> interceptors = builder.getResourceInterceptorsForMethod(Object.class.getMethod("hashCode"));
38 assertNotNull(interceptors);
39 assertEquals(0, interceptors.size());
40 }
41
42 private void verifyChain(Class resourceClass)
43 throws NoSuchMethodException
44 {
45 AutowireCapablePlugin plugin = mock(AutowireCapablePlugin.class);
46 when(plugin.autowire(MyInterceptor.class)).thenReturn(new MyInterceptor());
47 InterceptorChainBuilder builder = new InterceptorChainBuilder(plugin);
48 List<ResourceInterceptor> interceptors = builder.getResourceInterceptorsForMethod(resourceClass.getMethod("run"));
49 assertNotNull(interceptors);
50 assertEquals(1, interceptors.size());
51 assertTrue("Interceptor was " + interceptors.get(0), interceptors.get(0) instanceof MyInterceptor);
52 }
53
54
55 }