View Javadoc

1   package org.apache.maven.continuum.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 org.apache.continuum.web.action.AbstractActionTest;
23  import org.apache.maven.continuum.Continuum;
24  import org.apache.maven.continuum.model.project.Project;
25  import org.apache.maven.continuum.model.project.ProjectGroup;
26  import org.apache.maven.continuum.web.action.stub.AddProjectActionStub;
27  import org.jmock.Mock;
28  
29  import java.util.ArrayList;
30  import java.util.Collection;
31  import java.util.List;
32  
33  /**
34   * Test for {@link AddProjectAction}
35   *
36   * @author <a href="mailto:jzurbano@apache.org">jzurbano</a>
37   */
38  public class AddProjectActionTest
39      extends AbstractActionTest
40  {
41      private AddProjectActionStub action;
42  
43      private Mock continuumMock;
44  
45      private static final String VALID_NAME_CHARACTER = "abcABC123whitespaces_.:-";
46  
47      private static final String VALID_VERSION_CHARACTER = "abcABC123.-";
48  
49      private static final String VALID_SCM_URL_CHARACTER = "abcABC123_.:-#~=@\\/|[]";
50  
51      private static final String VALID_SCM_TAG_CHARACTER = "abcABC123_.:-#~=@\\/|[]";
52  
53      private static final String VALID_DESCRIPTION_CHARACTER = "abcABC123whitespaces_.-";
54  
55      protected void setUp()
56          throws Exception
57      {
58          super.setUp();
59  
60          action = new AddProjectActionStub();
61          continuumMock = new Mock( Continuum.class );
62          action.setContinuum( (Continuum) continuumMock.proxy() );
63  
64          Collection<ProjectGroup> projectGroups = new ArrayList<ProjectGroup>();
65          ProjectGroup projectGroup = new ProjectGroup();
66          projectGroups.add( projectGroup );
67  
68          action.setProjectGroups( projectGroups );
69      }
70  
71      public void testAddProjectNullValues()
72          throws Exception
73      {
74          action.setProjectName( null );
75          action.setProjectVersion( null );
76          action.setProjectScmUrl( null );
77  
78          action.validate();
79      }
80  
81      /**
82       * Test add of Ant project
83       *
84       * @throws Exception
85       */
86      public void testAddAntProject()
87          throws Exception
88      {
89          String scmUrl = "scm:svn:http://project/scm/url/test/build.xml";
90  
91          List<Project> projects = createProjectList();
92          continuumMock.expects( once() ).method( "getProjects" ).will( returnValue( projects ) );
93          continuumMock.expects( once() ).method( "addProject" ).will( returnValue( 3 ) );
94  
95          action.setProjectName( "Ant Test Project" );
96          action.setProjectVersion( "1.0-SNAPSHOT" );
97          action.setProjectScmUrl( scmUrl );
98          action.setProjectType( "ant" );
99          action.setSelectedProjectGroup( 1 );
100         action.setBuildDefintionTemplateId( 1 );
101 
102         action.validate();
103         action.add();
104         continuumMock.verify();
105 
106     }
107 
108     public void testAddAntProjectWithValidValues()
109         throws Exception
110     {
111         List<Project> projects = createProjectList();
112         continuumMock.expects( once() ).method( "getProjects" ).will( returnValue( projects ) );
113         continuumMock.expects( once() ).method( "addProject" ).will( returnValue( 3 ) );
114 
115         action.setProjectName( VALID_NAME_CHARACTER );
116         action.setProjectDescription( VALID_DESCRIPTION_CHARACTER );
117         action.setProjectVersion( VALID_VERSION_CHARACTER );
118         action.setProjectScmUrl( VALID_SCM_URL_CHARACTER );
119         action.setProjectScmTag( VALID_SCM_TAG_CHARACTER );
120         action.setProjectType( "ant" );
121         action.setSelectedProjectGroup( 1 );
122         action.setBuildDefintionTemplateId( 1 );
123 
124         // validate
125         action.validate();
126 
127         // verify
128         assertFalse( action.hasActionErrors() );
129         assertEquals( 0, action.getActionErrors().size() );
130 
131         // add
132         action.add();
133 
134         continuumMock.verify();
135     }
136 
137     /**
138      * Test add of Shell project
139      *
140      * @throws Exception
141      */
142     public void testAddShellProject()
143         throws Exception
144     {
145         String scmUrl = "scm:svn:http://project/scm/url/test/run.sh";
146 
147         List<Project> projects = createProjectList();
148         continuumMock.expects( once() ).method( "getProjects" ).will( returnValue( projects ) );
149         continuumMock.expects( once() ).method( "addProject" ).will( returnValue( 3 ) );
150 
151         action.setProjectName( "Shell Test Project" );
152         action.setProjectVersion( "1.0-SNAPSHOT" );
153         action.setProjectScmUrl( scmUrl );
154         action.setProjectType( "shell" );
155         action.setSelectedProjectGroup( 1 );
156         action.setBuildDefintionTemplateId( 1 );
157 
158         action.validate();
159         action.add();
160         continuumMock.verify();
161     }
162 
163     public void testAddShellProjectWithValidValues()
164         throws Exception
165     {
166         List<Project> projects = createProjectList();
167         continuumMock.expects( once() ).method( "getProjects" ).will( returnValue( projects ) );
168         continuumMock.expects( once() ).method( "addProject" ).will( returnValue( 3 ) );
169 
170         action.setProjectName( VALID_NAME_CHARACTER );
171         action.setProjectDescription( VALID_DESCRIPTION_CHARACTER );
172         action.setProjectVersion( VALID_VERSION_CHARACTER );
173         action.setProjectScmUrl( VALID_SCM_URL_CHARACTER );
174         action.setProjectScmTag( VALID_SCM_TAG_CHARACTER );
175         action.setProjectType( "shell" );
176         action.setSelectedProjectGroup( 1 );
177         action.setBuildDefintionTemplateId( 1 );
178 
179         // validate
180         action.validate();
181 
182         // verify
183         assertFalse( action.hasActionErrors() );
184         assertEquals( 0, action.getActionErrors().size() );
185 
186         // add
187         action.add();
188 
189         continuumMock.verify();
190     }
191 
192     private List<Project> createProjectList()
193     {
194         List<Project> projects = new ArrayList<Project>();
195 
196         Project project1 = createProject( "scm:svn:http://project/scm/url/test-1/run.sh", "Shell Test Project 1",
197                                           "1.0-SNAPSHOT", 1 );
198         Project project2 = createProject( "scm:svn:http://project/scm/url/test-2/build.xml", "Ant Test Project 1",
199                                           "1.0-SNAPSHOT", 2 );
200 
201         projects.add( project1 );
202         projects.add( project2 );
203 
204         return projects;
205     }
206 
207     private Project createProject( String scmUrl, String name, String version, int id )
208     {
209         Project project = new Project();
210         project.setId( id );
211         project.setName( name );
212         project.setVersion( version );
213         project.setScmUrl( scmUrl );
214 
215         return project;
216     }
217 }