1 package org.apache.maven.continuum.web.action;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
35
36
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
83
84
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
125 action.validate();
126
127
128 assertFalse( action.hasActionErrors() );
129 assertEquals( 0, action.getActionErrors().size() );
130
131
132 action.add();
133
134 continuumMock.verify();
135 }
136
137
138
139
140
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
180 action.validate();
181
182
183 assertFalse( action.hasActionErrors() );
184 assertEquals( 0, action.getActionErrors().size() );
185
186
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 }