blob: 553e0a2d2f47c07a66894607ab9ee5b7205a1f76 [file] [log] [blame]
package org.apache.continuum.web.test.parent;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
public abstract class AbstractUserRolesManagementTest
extends AbstractAdminTest
{
protected String username;
protected String fullname;
protected String getUserEmail()
{
return getProperty( "USERROLE_EMAIL" );
}
protected String getUserRolePassword()
{
return getProperty( "USERROLE_PASSWORD" );
}
protected String getUserRoleNewPassword()
{
return getProperty( "NEW_USERROLE_PASSWORD" );
}
////////////////////////////
// Assertions
////////////////////////////
protected void assertCreateUserPage()
{
assertPage( "[Admin] User Create" );
assertTextPresent( "[Admin] User Create" );
assertTextPresent( "Username*:" );
assertElementPresent( "user.username" );
assertTextPresent( "Full Name*:" );
assertElementPresent( "user.fullName" );
assertTextPresent( "Email Address*:" );
assertElementPresent( "user.email" );
assertTextPresent( "Password*:" );
assertElementPresent( "user.password" );
assertTextPresent( "Confirm Password*:" );
assertElementPresent( "user.confirmPassword" );
assertButtonWithValuePresent( "Create User" );
}
protected void assertUserRolesPage()
{
assertPage( "[Admin] User Edit" );
assertTextPresent( "[Admin] User Roles" );
String userRoles =
"Username,Full Name,Email,Guest,Registered User,System Administrator,User Administrator,Continuum Group Project Administrator,Continuum Group Project Developer,Continuum Group Project User,Continuum Manage Build Environments,Continuum Manage Build Templates,Continuum Manage Installations,Continuum Manage Local Repositories,Continuum Manage Purging,Continuum Manage Queues,Continuum Manage Scheduling,Project Administrator,Project Developer,Project User,Default Project Group";
String[] arrayUserRoles = userRoles.split( "," );
for ( String userroles : arrayUserRoles )
{
assertTextPresent( userroles );
}
}
protected void assertCreatedUserInfo( String username )
{
selectValue( "name=ec_rd", "50" );
waitPage();
clickLinkWithText( username );
clickLinkWithText( "Edit Roles" );
}
void assertUserRoleCheckBoxPresent( String value )
{
getSelenium().isElementPresent(
"xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" +
value + "']" );
}
void assertResourceRolesCheckBoxPresent( String value )
{
getSelenium().isElementPresent( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
}
protected void checkUserRoleWithValue( String value )
{
assertUserRoleCheckBoxPresent( value );
getSelenium().click(
"xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" +
value + "']" );
}
protected void checkResourceRoleWithValue( String value )
{
assertResourceRolesCheckBoxPresent( value );
getSelenium().click( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
}
protected void assertLeftNavMenuWithRole( String role )
{
if ( "System Administrator".equals( role ) )
{
String navMenu =
"About,Show Project Groups,Maven Project,Maven 1.x Project,Ant Project,Shell Project,Local Repositories,Purge Configurations,Schedules,Installations,Build Environments,Build Definition Templates,Configuration,Appearance,Users,Roles,Build Queue";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "User Administrator".equals( role ) )
{
String navMenu = "About,Show Project Groups,Users,Roles";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Group Project Administrator".equals( role ) )
{
String navMenu =
"About,Show Project Groups,Maven Project,Maven 1.x Project,Ant Project,Shell Project,Schedules,Users,Roles";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Group Project Developer".equals( role ) )
{
String navMenu = "About,Show Project Groups";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Group Project User".equals( role ) )
{
String navMenu = "About,Show Project Groups";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Build Environments".equals( role ) )
{
String navMenu = "About,Show Project Groups,Build Environments";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Build Templates".equals( role ) )
{
String navMenu = "About,Show Project Groups,Build Definition Templates";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Installations".equals( role ) )
{
String navMenu = "About,Show Project Groups,Installations";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Local Repositories".equals( role ) )
{
String navMenu = "About,Show Project Groups,Local Repositories";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Purging".equals( role ) )
{
String navMenu = "About,Show Project Groups,Purge Configurations";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Queues".equals( role ) )
{
String navMenu = "About,Show Project Groups,Queues";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Continuum Manage Scheduling".equals( role ) )
{
String navMenu = "About,Show Project Groups,Schedules";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Project Administrator - Default Project Group".equals( role ) )
{
String navMenu = "About,Show Project Groups,Users,Roles";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else if ( "Project Developer - Default Project Group".equals( role ) ||
"Project User - Default Project Group".equals( role ) )
{
String navMenu = "About,Show Project Groups";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
}
else
{
String navMenu = "About,Show Project Groups";
String[] arrayNavMenu = navMenu.split( "," );
for ( String navmenu : arrayNavMenu )
{
assertLinkPresent( navmenu );
}
assertTextPresent( "Project Groups" );
//assertTextPresent( "Project Groups list is empty." );
}
}
void assertDeleteUserPage( String username )
{
assertPage( "[Admin] User Delete" );
assertTextPresent( "[Admin] User Delete" );
assertTextPresent( "The following user will be deleted:" );
assertTextPresent( "Username: " + username );
assertButtonWithValuePresent( "Delete User" );
}
protected void assertProjectAdministratorAccess()
{
assertLinkPresent( "About" );
assertLinkPresent( "Show Project Groups" );
assertLinkPresent( "Maven Project" );
assertLinkPresent( "Maven 1.x Project" );
assertLinkPresent( "Ant Project" );
assertLinkPresent( "Shell Project" );
assertLinkPresent( "Schedules" );
assertLinkPresent( "Users" );
assertLinkPresent( "Roles" );
assertLinkNotPresent( "Local Repositories" );
assertLinkNotPresent( "Purge Configurations" );
assertLinkNotPresent( "Installations" );
assertLinkNotPresent( "Build Environments" );
assertLinkNotPresent( "Build Definition Templates" );
assertLinkNotPresent( "Configuration" );
assertLinkNotPresent( "Appearance" );
assertLinkNotPresent( "Build Queue" );
assertLinkNotPresent( "Build Agent" );
}
/////////////////////////////////////////
// User Roles Management
/////////////////////////////////////////
protected void changePassword( String oldPassword, String newPassword )
{
assertPage( "Change Password" );
setFieldValue( "existingPassword", oldPassword );
setFieldValue( "newPassword", newPassword );
setFieldValue( "newPasswordConfirm", newPassword );
clickButtonWithValue( "Change Password" );
}
protected void createUser( String userName, String fullName, String email, String password )
{
createUser( userName, fullName, email, password, password );
}
private void createUser( String userName, String fullName, String emailAd, String password, String confirmPassword )
{
loginAsAdmin();
clickLinkWithText( "Users" );
clickButtonWithValue( "Create New User" );
assertCreateUserPage();
setFieldValue( "user.username", userName );
setFieldValue( "user.fullName", fullName );
setFieldValue( "user.email", emailAd );
setFieldValue( "user.password", password );
setFieldValue( "user.confirmPassword", confirmPassword );
submit();
assertUserRolesPage();
clickButtonWithValue( "Submit" );
}
protected void deleteUser( String userName )
{
deleteUser( userName, true );
}
protected void deleteUser( String userName, boolean failIfMissing )
{
String xpath = "//tr[.//a[text()='" + userName + "']]/td/a[@title='delete user']";
if ( failIfMissing || isElementPresent( "xpath=" + xpath ) )
{
clickLinkWithXPath( xpath );
assertDeleteUserPage( userName );
submit();
assertElementNotPresent( userName );
}
}
}