]> source.dussan.org Git - archiva.git/blob
42d9895b476ccd5d5e5e4fdf36ee203c69d208fa
[archiva.git] /
1 package org.apache.archiva.web.test.parent;
2
3 import org.junit.runner.RunWith;
4 import org.junit.runners.BlockJUnit4ClassRunner;
5
6 import java.io.File;
7 import java.io.IOException;
8
9 /*
10  * Licensed to the Apache Software Foundation (ASF) under one
11  * or more contributor license agreements.  See the NOTICE file
12  * distributed with this work for additional information
13  * regarding copyright ownership.  The ASF licenses this file
14  * to you under the Apache License, Version 2.0 (the
15  * "License"); you may not use this file except in compliance
16  * with the License.  You may obtain a copy of the License at
17  *
18  *   http://www.apache.org/licenses/LICENSE-2.0
19  *
20  * Unless required by applicable law or agreed to in writing,
21  * software distributed under the License is distributed on an
22  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23  * KIND, either express or implied.  See the License for the
24  * specific language governing permissions and limitations
25  * under the License.
26  */
27
28 @RunWith( BlockJUnit4ClassRunner.class )
29 public abstract class AbstractArchivaTest
30     extends AbstractSeleniumTest
31 {
32
33     protected String username;
34
35     protected String fullname;
36
37     public String getUserEmail()
38     {
39         String email = getProperty( "USERROLE_EMAIL" );
40         return email;
41     }
42
43     public String getUserRolePassword()
44     {
45         String password = getProperty( "USERROLE_PASSWORD" );
46         return password;
47     }
48
49     public String getUserRoleNewPassword()
50     {
51         String password_new = getProperty( "NEW_USERROLE_PASSWORD" );
52         return password_new;
53     }
54
55     public String getBasedir()
56     {
57         String basedir = System.getProperty( "basedir" );
58
59         if ( basedir == null )
60         {
61             basedir = new File( "" ).getAbsolutePath();
62         }
63
64         return basedir;
65     }
66
67
68     public void submitUserData( String username, String password, boolean rememberme, boolean success )
69     {
70
71         setFieldValue( "username", username );
72         setFieldValue( "password", password );
73         if ( rememberme )
74         {
75             checkField( "rememberMe" );
76         }
77
78         submit();
79         if ( success )
80         {
81             assertUserLoggedIn( username );
82         }
83         else
84         {
85             assertLoginModal();
86         }
87     }
88
89     // User Management
90     public void goToUserManagementPage()
91     {
92         getSelenium().open( "/archiva/security/userlist.action" );
93         assertUserManagementPage();
94     }
95
96     public void assertUserManagementPage()
97     {
98         assertPage( "Apache Archiva \\ [Admin] User List" );
99         assertTextPresent( "[Admin] List of Users in Role: Any" );
100         assertTextPresent( "Navigation" );
101         assertImgWithAlt( "First" );
102         assertImgWithAlt( "Prev" );
103         assertImgWithAlt( "Next" );
104         assertImgWithAlt( "Last" );
105         assertTextPresent( "Display Rows" );
106         assertTextPresent( "Username" );
107         assertTextPresent( "Full Name" );
108         assertTextPresent( "Email" );
109         assertTextPresent( "Permanent" );
110         assertTextPresent( "Validated" );
111         assertTextPresent( "Locked" );
112         assertTextPresent( "Tasks" );
113         assertTextPresent( "Tools" );
114         assertTextPresent( "Tasks" );
115         assertTextPresent( "The following tools are available for administrators to manipulate the user list." );
116         assertButtonWithValuePresent( "Create New User" );
117         assertButtonWithValuePresent( "Show Users In Role" );
118         assertElementPresent( "roleName" );
119         assertTextPresent( "Reports" );
120         assertTextPresent( "Name" );
121         assertTextPresent( "Types" );
122         assertTextPresent( "User List" );
123         assertTextPresent( "Roles Matrix" );
124     }
125
126     /*
127      * //User Role public void goToUserRolesPage() { clickLinkWithText( "User Roles" ); assertUserRolesPage(); }
128      */
129
130     public void assertUserRolesPage()
131     {
132         //assertPage( "Apache Archiva \\ [Admin] User Edit" );
133         //[Admin] RĂ´les de l'utilisateur
134
135         assertTextPresent( "[Admin] User Roles", "[Admin] R\u00F4les de l'utilisateur" );
136         assertTextPresent( "Username", "Nom d'utilisateur" );
137         assertTextPresent( "Full Name", "Nom complet" );
138         String userRoles =
139             "Guest,Registered User,System Administrator,User Administrator,Global Repository Observer,Global Repository Manager,Repository Observer,Repository Manager,internal";
140         String[] arrayRole = userRoles.split( "," );
141         for ( String userroles : arrayRole )
142         {
143             assertTextPresent( userroles );
144         }
145     }
146
147     public void assertDeleteUserPage( String username )
148     {
149         assertTextPresent( "[Admin] User Delete", "[Admin] Suppression de l'utilisateur",
150                            "L'utilisateur suivant va \u00EAtre supprim\u00E9:" );
151         assertTextPresent( "The following user will be deleted:" );
152         assertTextPresent( "Username: " + username, "Nom d'utilisateur:" + username );
153         assertButtonWithIdPresent( "userDeleteSubmit" );
154     }
155
156     public void createUser( String userName, String fullName, String email, String password, boolean valid )
157     {
158         createUser( userName, fullName, email, password, password, valid );
159     }
160
161     private void createUser( String userName, String fullName, String emailAd, String password, String confirmPassword,
162                              boolean valid )
163     {
164
165         clickLinkWithLocator( "menu-users-list-a", true );
166         clickLinkWithLocator( "users-view-tabs-li-user-edit-a", true );
167
168         assertCreateUserPage();
169         setFieldValue( "username", userName );
170         setFieldValue( "fullname", fullName );
171         setFieldValue( "email", emailAd );
172         setFieldValue( "password", password );
173         setFieldValue( "confirmPassword", confirmPassword );
174
175         clickLinkWithLocator( "user-create-form-register-button", true );
176
177         assertTextPresent( "User " + userName + " created." );
178         assertElementPresent( "users-grid-user-id-" + userName );
179
180         if ( valid )
181         {
182             //String[] columnValues = { userName, fullName, emailAd };
183             //assertElementPresent( XPathExpressionUtil.getTableRow( columnValues ) );
184
185         }
186         else
187         {
188             assertCreateUserPage();
189         }
190     }
191
192     public void deleteUser( String userName, String fullName, String emailAdd )
193     {
194         deleteUser( userName, fullName, emailAdd, false, false );
195     }
196
197     public void deleteUser( String userName, String fullName, String emailAd, boolean validated, boolean locked )
198     {
199         clickLinkWithLocator( "menu-users-list-a", true );
200         assertTextPresent( userName );
201         assertTextPresent( fullName );
202
203         clickLinkWithLocator( "users-grid-delete-" + userName );
204
205         clickLinkWithLocator( "dialog-confirm-modal-ok" );
206         assertTextPresent( "User " + userName + " deleted." );
207
208         clickLinkWithLocator( "alert-message-success-close-a" );
209
210         assertElementNotPresent( "users-grid-user-id-" + userName );
211         assertTextNotPresent( fullName );
212
213
214     }
215
216     // User Roles
217     public void assertUserRoleCheckBoxPresent( String value )
218     {
219         getSelenium().isElementPresent(
220             "xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" + value
221                 + "']" );
222     }
223
224     public void assertResourceRolesCheckBoxPresent( String value )
225     {
226         getSelenium().isElementPresent( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
227     }
228
229     public void checkUserRoleWithValue( String value )
230     {
231         assertUserRoleCheckBoxPresent( value );
232         getSelenium().click(
233             "xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" + value
234                 + "']" );
235     }
236
237     public void checkResourceRoleWithValue( String value )
238     {
239         assertResourceRolesCheckBoxPresent( value );
240         getSelenium().click( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
241     }
242
243     public void changePassword( String oldPassword, String newPassword )
244     {
245         assertPage( "Apache Archiva \\ Change Password" );
246         setFieldValue( "existingPassword", oldPassword );
247         setFieldValue( "newPassword", newPassword );
248         setFieldValue( "newPasswordConfirm", newPassword );
249         clickButtonWithValue( "Change Password" );
250     }
251
252     public void assertCreateUserPage()
253     {
254         assertTextPresent( "Username" );
255         assertElementPresent( "username" );
256         assertTextPresent( "Full Name" );
257         assertElementPresent( "fullname" );
258         assertTextPresent( "Email Address" );
259         assertElementPresent( "email" );
260         assertTextPresent( "Password" );
261         assertElementPresent( "password" );
262         assertTextPresent( "Confirm Password" );
263         assertElementPresent( "confirmPassword" );
264         assertButtonWithIdPresent( "user-create-form-register-button" );
265
266     }
267
268     public void assertLeftNavMenuWithRole( String role )
269     {
270         if ( role.equals( "Guest" ) || role.equals( "Registered User" ) || role.equals( "Global Repository Observer" )
271             || role.equals( "Repository Observer - internal" ) || role.equals( "Repository Observer - snapshots" ) )
272         {
273             assertTextPresent( "Search" );
274             assertLinkPresent( "Find Artifact" );
275             assertLinkPresent( "Browse" );
276             assertLinkNotPresent( "Repositories" );
277         }
278         else if ( role.equals( "User Administrator" ) )
279         {
280             assertTextPresent( "Search" );
281             assertLinkPresent( "Find Artifact" );
282             assertLinkPresent( "Browse" );
283             assertLinkPresent( "User Management" );
284             assertLinkPresent( "User Roles" );
285             assertLinkNotPresent( "Repositories" );
286         }
287         else if ( role.equals( "Global Repository Manager" ) || role.equals( "Repository Manager - internal" )
288             || role.equals( "Repository Manager - snapshots" ) )
289         {
290             assertTextPresent( "Search" );
291             assertLinkPresent( "Find Artifact" );
292             assertLinkPresent( "Browse" );
293             assertLinkPresent( "Upload Artifact" );
294             assertLinkPresent( "Delete Artifact" );
295             assertLinkNotPresent( "Repositories" );
296         }
297         else
298         {
299             assertTextPresent( "Search" );
300             String navMenu =
301                 "Find Artifact,Browse,Reports,User Management,User Roles,Appearance,Upload Artifact,Delete Artifact,Repository Groups,Repositories,Proxy Connectors,Legacy Support,Network Proxies,Repository Scanning";
302             String[] arrayMenu = navMenu.split( "," );
303             for ( String navmenu : arrayMenu )
304             {
305                 assertLinkPresent( navmenu );
306             }
307         }
308     }
309
310     // Find Artifact
311     public void goToFindArtifactPage()
312     {
313         getSelenium().open( "/archiva/findArtifact.action" );
314         assertFindArtifactPage();
315     }
316
317     public void assertFindArtifactPage()
318     {
319         //assertPage( "Apache Archiva \\ Find Artifact" );
320         assertElementPresent( "searchBox" );
321         //assertTextPresent( "Find Artifact" );
322         //assertTextPresent( "Search for:" );
323         //assertTextPresent( "Checksum:" );
324         assertElementPresent( "quickSearchBox" );
325         assertElementPresent( "checksumSearch" );
326         //assertButtonWithValuePresent( "Search" );
327         assertElementPresent( "checksumSearch_0" );
328     }
329
330     // Appearance
331     public void goToAppearancePage()
332     {
333         getSelenium().open( "/archiva/admin/configureAppearance.action" );
334         assertAppearancePage();
335     }
336
337     public void assertAppearancePage()
338     {
339         assertPage( "Apache Archiva \\ Configure Appearance" );
340         String appearance =
341             "Appearance,Organization Details,The logo in the top right of the screen is controlled by the following settings.,Organization Information,Name,URL,Logo URL";
342         String[] arrayAppearance = appearance.split( "," );
343         for ( String appear : arrayAppearance )
344         {
345             assertTextPresent( appear );
346         }
347         assertLinkPresent( "Edit" );
348         assertLinkPresent( "Change your appearance" );
349     }
350
351     public void addEditAppearance( String name, String url, String logoUrl, boolean wait )
352     {
353         setFieldValue( "organisationName", name );
354         setFieldValue( "organisationUrl", url );
355         setFieldValue( "organisationLogo", logoUrl );
356         clickButtonWithValue( "Save", wait );
357     }
358
359     public void goToHomePage()
360     {
361         getSelenium().open( baseUrl );
362     }
363
364     // Upload Artifact
365     public void goToAddArtifactPage()
366     {
367         // must be logged as admin
368         getSelenium().open( "/archiva/upload.action" );
369         assertAddArtifactPage();
370     }
371
372     public void assertAddArtifactPage()
373     {
374         assertPage( "Apache Archiva \\ Upload Artifact" );
375         assertTextPresent( "Upload Artifact" );
376
377         String artifact =
378             "Upload Artifact,Group Id*:,Artifact Id*:,Version*:,Packaging*:,Classifier:,Generate Maven 2 POM,Artifact File*:,POM File:,Repository Id:";
379         String[] arrayArtifact = artifact.split( "," );
380         for ( String arrayartifact : arrayArtifact )
381         {
382             assertTextPresent( arrayartifact );
383         }
384
385         String artifactElements =
386             "upload_groupId,upload_artifactId,upload_version,upload_packaging,upload_classifier,upload_generatePom,upload_artifact,upload_pom,upload_repositoryId,uploadSubmit";
387         String[] arrayArtifactElements = artifactElements.split( "," );
388         for ( String artifactelements : arrayArtifactElements )
389         {
390             assertElementPresent( artifactelements );
391         }
392     }
393
394     public void addArtifact( String groupId, String artifactId, String version, String packaging,
395                              String artifactFilePath, String repositoryId, boolean wait )
396     {
397         addArtifact( groupId, artifactId, version, packaging, true, artifactFilePath, repositoryId, wait );
398     }
399
400     public void addArtifact( String groupId, String artifactId, String version, String packaging, boolean generatePom,
401                              String artifactFilePath, String repositoryId, boolean wait )
402     {
403         login( getProperty( "ADMIN_USERNAME" ), getProperty( "ADMIN_PASSWORD" ) );
404         goToAddArtifactPage();
405         setFieldValue( "groupId", groupId );
406         setFieldValue( "artifactId", artifactId );
407         setFieldValue( "version", version );
408         setFieldValue( "packaging", packaging );
409
410         if ( generatePom )
411         {
412             checkField( "generatePom" );
413         }
414
415         String path;
416         if ( artifactFilePath != null && artifactFilePath.trim().length() > 0 )
417         {
418             File f = new File( artifactFilePath );
419             try
420             {
421                 path = f.getCanonicalPath();
422             }
423             catch ( IOException e )
424             {
425                 path = f.getAbsolutePath();
426             }
427         }
428         else
429         {
430             path = artifactFilePath;
431         }
432
433         setFieldValue( "artifact", path );
434         selectValue( "upload_repositoryId", repositoryId );
435
436         //clickButtonWithValue( "Submit" );
437         clickButtonWithLocator( "uploadSubmit", wait );
438     }
439
440     public void goToRepositoriesPage()
441     {
442         if ( !getTitle().equals( "Apache Archiva \\ Administration - Repositories" ) )
443         {
444             getSelenium().open( "/archiva/admin/repositories.action" );
445         }
446         assertRepositoriesPage();
447     }
448
449     public void assertRepositoriesPage()
450     {
451         assertPage( "Apache Archiva \\ Administration - Repositories" );
452         assertTextPresent( "Administration - Repositories" );
453         assertTextPresent( "Managed Repositories" );
454         assertTextPresent( "Remote Repositories" );
455     }
456
457     public void addManagedRepository( String identifier, String name, String directory, String indexDirectory,
458                                       String type, String cron, String daysOlder, String retentionCount, boolean wait )
459     {
460         // goToRepositoriesPage();
461         // clickLinkWithText( "Add" );
462         setFieldValue( "repository.id", identifier );
463         setFieldValue( "repository.name", name );
464         setFieldValue( "repository.location", directory );
465         setFieldValue( "repository.indexDirectory", indexDirectory );
466         selectValue( "repository.layout", type );
467         setFieldValue( "repository.cronExpression", cron );
468         setFieldValue( "repository.daysOlder", daysOlder );
469         setFieldValue( "repository.retentionCount", retentionCount );
470         // TODO
471         clickButtonWithValue( "Add Repository", wait );
472     }
473
474     // artifact management
475     public void assertDeleteArtifactPage()
476     {
477         assertPage( "Apache Archiva \\ Delete Artifact" );
478         assertTextPresent( "Delete Artifact" );
479         assertTextPresent( "Group Id*:" );
480         assertTextPresent( "Artifact Id*:" );
481         assertTextPresent( "Version*:" );
482         assertTextPresent( "Repository Id:" );
483         assertElementPresent( "groupId" );
484         assertElementPresent( "artifactId" );
485         assertElementPresent( "version" );
486         assertElementPresent( "repositoryId" );
487         assertButtonWithValuePresent( "Submit" );
488     }
489
490     // network proxies
491     public void goToNetworkProxiesPage()
492     {
493         clickLinkWithText( "Network Proxies" );
494         assertNetworkProxiesPage();
495     }
496
497     public void assertNetworkProxiesPage()
498     {
499         assertPage( "Apache Archiva \\ Administration - Network Proxies" );
500         assertTextPresent( "Administration - Network Proxies" );
501         assertTextPresent( "Network Proxies" );
502         assertLinkPresent( "Add Network Proxy" );
503     }
504
505     public void addNetworkProxy( String identifier, String protocol, String hostname, String port, String username,
506                                  String password )
507     {
508         //goToNetworkProxiesPage();
509         clickLinkWithText( "Add Network Proxy" );
510         assertAddNetworkProxy();
511         setFieldValue( "proxy.id", identifier );
512         setFieldValue( "proxy.protocol", protocol );
513         setFieldValue( "proxy.host", hostname );
514         setFieldValue( "proxy.port", port );
515         setFieldValue( "proxy.username", username );
516         setFieldValue( "proxy.password", password );
517         clickButtonWithValue( "Save Network Proxy" );
518     }
519
520     public void assertAddNetworkProxy()
521     {
522         assertPage( "Apache Archiva \\ Admin: Add Network Proxy" );
523         assertTextPresent( "Admin: Add Network Proxy" );
524         assertTextPresent( "Add network proxy:" );
525         assertTextPresent( "Identifier*:" );
526         assertTextPresent( "Protocol*:" );
527         assertTextPresent( "Hostname*:" );
528         assertTextPresent( "Port*:" );
529         assertTextPresent( "Username:" );
530         assertTextPresent( "Password:" );
531         assertButtonWithValuePresent( "Save Network Proxy" );
532     }
533
534     // Legacy Support
535     public void goToLegacySupportPage()
536     {
537         getSelenium().open( "/archiva/admin/legacyArtifactPath.action" );
538         assertLegacySupportPage();
539     }
540
541     public void assertLegacySupportPage()
542     {
543         assertPage( "Apache Archiva \\ Administration - Legacy Support" );
544         assertTextPresent( "Administration - Legacy Artifact Path Resolution" );
545         assertTextPresent( "Path Mappings" );
546         assertLinkPresent( "Add" );
547     }
548
549     public void addLegacyArtifactPath( String path, String groupId, String artifactId, String version,
550                                        String classifier, String type, boolean wait )
551     {
552         assertAddLegacyArtifactPathPage();
553         setFieldValue( "legacyArtifactPath.path", path );
554         setFieldValue( "groupId", groupId );
555         setFieldValue( "artifactId", artifactId );
556         setFieldValue( "version", version );
557         setFieldValue( "classifier", classifier );
558         setFieldValue( "type", type );
559         clickButtonWithValue( "Add Legacy Artifact Path", wait );
560     }
561
562     public void assertAddLegacyArtifactPathPage()
563     {
564         assertPage( "Apache Archiva \\ Admin: Add Legacy Artifact Path" );
565         assertTextPresent( "Admin: Add Legacy Artifact Path" );
566         assertTextPresent(
567             "Enter the legacy path to map to a particular artifact reference, then adjust the fields as necessary." );
568         String element =
569             "addLegacyArtifactPath_legacyArtifactPath_path,addLegacyArtifactPath_groupId,addLegacyArtifactPath_artifactId,addLegacyArtifactPath_version,addLegacyArtifactPath_classifier,addLegacyArtifactPath_type";
570         String[] arrayElement = element.split( "," );
571         for ( String arrayelement : arrayElement )
572         {
573             assertElementPresent( arrayelement );
574         }
575         assertButtonWithValuePresent( "Add Legacy Artifact Path" );
576     }
577
578     // add managed repository and its staging repository
579     public void addStagingRepository( String identifier, String name, String directory, String indexDirectory,
580                                       String type, String cron, String daysOlder, String retentionCount )
581     {
582         setFieldValue( "repository.id", identifier );
583         setFieldValue( "repository.name", name );
584         setFieldValue( "repository.location", directory );
585         setFieldValue( "repository.indexDirectory", indexDirectory );
586         selectValue( "repository.layout", type );
587         setFieldValue( "repository.cronExpression", cron );
588         setFieldValue( "repository.daysOlder", daysOlder );
589         setFieldValue( "repository.retentionCount", retentionCount );
590         checkField( "stageNeeded" );
591
592         clickButtonWithValue( "Add Repository" );
593     }
594
595     protected void logout()
596     {
597         clickLinkWithText( "Logout" );
598         assertTextNotPresent( "Current User:" );
599         assertLinkNotVisible( "Edit Details" );
600         assertLinkNotVisible( "Logout" );
601         assertLinkVisible( "Login" );
602     }
603
604     protected String getAdminUserName()
605     {
606         return getProperty( "ADMIN_FULLNAME" );
607     }
608 }