]> source.dussan.org Git - archiva.git/blob
35f526e4ff4bd88cdd9d49b4c637b6b62955a38e
[archiva.git] /
1 package org.apache.maven.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.xwork.ActionSupport;
23 import org.apache.commons.lang.StringUtils;
24 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
25
26 import java.lang.reflect.Method;
27 import java.util.Collection;
28 import java.util.List;
29
30 /**
31  * AbstractWebworkTestCase 
32  *
33  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
34  * @version $Id$
35  */
36 public abstract class AbstractWebworkTestCase
37     extends PlexusInSpringTestCase
38 {
39     /**
40      * This is a conveinence method for mimicking how the webwork interceptors
41      * operate on an action, before the request is processed.
42      * 
43      * Call this before each major request to the action to be sure you mimic the webwork process correctly. 
44      */
45     protected void preRequest( ActionSupport action )
46     {
47         action.clearErrorsAndMessages();
48     }
49
50     /**
51      * Tests the action to ensure that it has errors.
52      * 
53      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
54      */
55     protected void assertHasErrors( ActionSupport action )
56     {
57         assertNotNull( action.getActionErrors() );
58         assertTrue( "Expected an error to occur.", action.getActionErrors().size() > 0 );
59     }
60     
61     /**
62      * Tests the action to ensure that it has messages.
63      * 
64      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
65      */
66     protected void assertHasMessages( ActionSupport action )
67     {
68         assertNotNull( action.getActionMessages() );
69         assertTrue( "Expected an message to be set.", action.getActionMessages().size() > 0 );
70     }
71
72     /**
73      * Tests the action to ensure that it has NO errors.
74      * 
75      * NOTE: Don't forget to run {@link #preRequest(ActionSupport)} before each request to your action!
76      */
77     protected void assertNoErrors( ActionSupport action )
78     {
79         List<String> errors = (List<String>) action.getActionErrors();
80     
81         assertNotNull( errors );
82         if ( errors.size() > 0 )
83         {
84             StringBuffer msg = new StringBuffer();
85             msg.append( "Should have had no errors. but found the following errors." );
86     
87             for ( String error : errors )
88             {
89                 msg.append( "\n " ).append( error );
90             }
91             fail( msg.toString() );
92         }
93     }
94
95     protected void assertRequestStatus( ActionSupport action, String expectedStatus, String methodName )
96         throws Exception
97     {
98         action.clearErrorsAndMessages();
99     
100         Method method = action.getClass().getDeclaredMethod( methodName, (Class[]) null );
101         Object actualStatus = method.invoke( action, (Object[]) null );
102         assertTrue( "return should be of type String", actualStatus instanceof String );
103     
104         if ( !StringUtils.equals( expectedStatus, (String) actualStatus ) )
105         {
106             StringBuffer msg = new StringBuffer();
107             msg.append( "Unexpected status returned from method <" );
108             msg.append( methodName ).append( "> on action <" );
109             String clazzname = action.getClass().getName();
110             msg.append( clazzname.substring( clazzname.lastIndexOf( '.' ) ) );
111             msg.append( ">: expected:<" ).append( expectedStatus ).append( "> but was:<" );
112             msg.append( (String) actualStatus ).append( ">. (see attached action messages and errors below)" );
113     
114             for ( String message : (Collection<String>) action.getActionMessages() )
115             {
116                 msg.append( "\n  [MESSAGE]: " ).append( message );
117             }
118     
119             for ( String error : (Collection<String>) action.getActionErrors() )
120             {
121                 msg.append( "\n  [ERROR]: " ).append( error );
122             }
123     
124             fail( msg.toString() );
125         }
126     }
127 }