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