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