1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.interceptor.validation;
23
24 import org.apache.struts2.StrutsTestCase;
25
26 import com.mockobjects.dynamic.Mock;
27 import com.opensymphony.xwork2.ActionInvocation;
28 import com.opensymphony.xwork2.ActionProxy;
29 import com.opensymphony.xwork2.Validateable;
30
31 public class AnnotationValidationInterceptorTest extends StrutsTestCase {
32
33 private AnnotationValidationInterceptor interceptor = new AnnotationValidationInterceptor();
34 private Mock mockActionInvocation;
35 private Mock mockActionProxy;
36 private TestAction test;
37
38 public void setUp() throws Exception {
39 super.setUp();
40 test = new TestAction();
41 interceptor = new AnnotationValidationInterceptor();
42 container.inject(interceptor);
43 mockActionInvocation = new Mock(ActionInvocation.class);
44 mockActionProxy = new Mock(ActionProxy.class);
45 mockActionInvocation.matchAndReturn("getProxy", (ActionProxy) mockActionProxy.proxy());
46 mockActionInvocation.matchAndReturn("getAction", test);
47 mockActionInvocation.expect("invoke");
48 }
49
50 public void testShouldNotSkip() throws Exception {
51 mockActionProxy.expectAndReturn("getMethod", "execute");
52 mockActionProxy.expectAndReturn("getActionName", "foo");
53 mockActionProxy.expectAndReturn("getMethod", "execute");
54 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
55 mockActionProxy.verify();
56 }
57
58 public void testShouldSkip() throws Exception {
59 mockActionProxy.expectAndReturn("getMethod", "skipMe");
60 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
61 mockActionProxy.verify();
62 }
63
64 public void testShouldSkipBase() throws Exception {
65 mockActionProxy.expectAndReturn("getMethod", "skipMeBase");
66 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
67 mockActionProxy.verify();
68 }
69
70 public void testShouldSkipBase2() throws Exception {
71 mockActionProxy.expectAndReturn("getMethod", "skipMeBase2");
72 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
73 mockActionProxy.verify();
74 }
75
76 public void testShouldSkip2() throws Exception {
77 mockActionProxy.expectAndReturn("getMethod", "skipMe2");
78 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
79 mockActionProxy.verify();
80 }
81
82 public void testShouldNotSkipBase() throws Exception {
83 mockActionProxy.expectAndReturn("getMethod", "dontSkipMeBase");
84 mockActionProxy.expectAndReturn("getActionName", "foo");
85 mockActionProxy.expectAndReturn("getMethod", "dontSkipMeBase");
86 interceptor.doIntercept((ActionInvocation)mockActionInvocation.proxy());
87 mockActionProxy.verify();
88 }
89
90 public static class TestAction extends TestActionBase {
91
92 public String execute() {
93 return "execute";
94 }
95
96 @SkipValidation
97 public String skipMe() {
98 return "skipme";
99 }
100
101 @SkipValidation
102 public String skipMe2() {
103 return "skipme2";
104 }
105
106 public String skipMeBase() {
107 return "skipme";
108 }
109 }
110
111 public static class TestActionBase {
112
113 @SkipValidation
114 public String skipMeBase() {
115 return "skipme";
116 }
117
118 @SkipValidation
119 public String skipMeBase2() {
120 return "skipme";
121 }
122
123 public String dontSkipMeBase() {
124 return "dontskipme";
125 }
126
127 public String skipMe2() {
128 return "skipme2";
129 }
130 }
131
132 }