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