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