]> source.dussan.org Git - archiva.git/blob
fd6b6a31ce5c5b0a894d72c1c3eae078cc67d94c
[archiva.git] /
1 package org.apache.archiva.web.action;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import com.opensymphony.xwork2.ActionSupport;
23 import org.apache.commons.lang.StringUtils;
24 import org.apache.struts2.StrutsSpringTestCase;
25
26 import java.lang.reflect.Method;
27 import java.util.Collection;
28 import java.util.List;
29
30 /**
31  * AbstractWebworkTestCase 
32  *
33  * @version $Id$
34  */
35 public abstract class AbstractWebworkTestCase
36     extends StrutsSpringTestCase
37 {
38
39
40     @Override
41     protected String[] getContextLocations()
42     {
43         return new String[]{ "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" };
44     }
45
46     /**
47      * This is a conveinence method for mimicking how the webwork interceptors
48      * operate on an action, before the request is processed.
49      * 
50      * Call this before each major request to the action to be sure you mimic the webwork process correctly. 
51      */
52     protected void preRequest( ActionSupport action )
53     {
54         action.clearErrorsAndMessages();
55     }
56
57     /**
58      * Tests the action to ensure that it has errors.
59      * 
60      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
61      */
62     protected void assertHasErrors( ActionSupport action )
63     {
64         assertNotNull( action.getActionErrors() );
65         assertTrue( "Expected an error to occur.", action.getActionErrors().size() > 0 );
66     }
67     
68     /**
69      * Tests the action to ensure that it has messages.
70      * 
71      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
72      */
73     protected void assertHasMessages( ActionSupport action )
74     {
75         assertNotNull( action.getActionMessages() );
76         assertTrue( "Expected an message to be set.", action.getActionMessages().size() > 0 );
77     }
78
79     /**
80      * Tests the action to ensure that it has NO errors.
81      * 
82      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
83      */
84     @SuppressWarnings("unchecked")
85     protected void assertNoErrors( ActionSupport action )
86     {
87         List<String> errors = (List<String>) action.getActionErrors();
88     
89         assertNotNull( errors );
90         if ( errors.size() > 0 )
91         {
92             StringBuffer msg = new StringBuffer();
93             msg.append( "Should have had no errors. but found the following errors." );
94     
95             for ( String error : errors )
96             {
97                 msg.append( "\n " ).append( error );
98             }
99             fail( msg.toString() );
100         }
101     }
102
103     @SuppressWarnings("unchecked")
104     protected void assertRequestStatus( ActionSupport action, String expectedStatus, String methodName )
105         throws Exception
106     {
107         action.clearErrorsAndMessages();
108     
109         Method method = action.getClass().getDeclaredMethod( methodName, (Class[]) null );
110         Object actualStatus = method.invoke( action, (Object[]) null );
111         assertTrue( "return should be of type String", actualStatus instanceof String );
112     
113         if ( !StringUtils.equals( expectedStatus, (String) actualStatus ) )
114         {
115             StringBuffer msg = new StringBuffer();
116             msg.append( "Unexpected status returned from method <" );
117             msg.append( methodName ).append( "> on action <" );
118             String clazzname = action.getClass().getName();
119             msg.append( clazzname.substring( clazzname.lastIndexOf( '.' ) ) );
120             msg.append( ">: expected:<" ).append( expectedStatus ).append( "> but was:<" );
121             msg.append( (String) actualStatus ).append( ">. (see attached action messages and errors below)" );
122     
123             for ( String message : (Collection<String>) action.getActionMessages() )
124             {
125                 msg.append( "\n  [MESSAGE]: " ).append( message );
126             }
127     
128             for ( String error : (Collection<String>) action.getActionErrors() )
129             {
130                 msg.append( "\n  [ERROR]: " ).append( error );
131             }
132     
133             fail( msg.toString() );
134         }
135     }
136 }