/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security.web.user;
import static org.junit.Assert.*;
import org.apache.wicket.Page;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.security.web.AbstractSecurityWicketTestSupport;
import org.geoserver.security.web.group.NewGroupPage;
import org.geoserver.security.web.role.NewRolePage;
import org.junit.Test;
public abstract class AbstractUserPageTest extends AbstractSecurityWicketTestSupport {
protected AbstractUserPage page;
protected FormTester form;
protected abstract void initializeTester();
@Test
public void testReadOnlyRoleService() throws Exception{
doInitialize();
activateRORoleService();
initializeTester();
assertTrue(page.userGroupPalette.isEnabled());
}
protected void doInitialize() throws Exception {
initializeForXML();
}
protected void doTestPasswordsDontMatch(Class <? extends Page> pageClass) throws Exception {
doInitialize();
initializeTester();
newFormTester();
form.setValue("username", "user");
form.setValue("password", "pwd1");
form.setValue("confirmPassword", "pwd2");
form.submit("save");
assertTrue(testErrorMessagesWithRegExp(".*[Pp]assword.*"));
tester.assertRenderedPage(pageClass);
}
protected void newFormTester() {
form = tester.newFormTester("form");
}
protected void addNewRole(String roleName) {
// add a role on the fly
form.submit("roles:addRole");
tester.assertRenderedPage(NewRolePage.class);
FormTester roleform=tester.newFormTester("form");
roleform.setValue("name", "ROLE_NEW");
roleform.submit("save");
newFormTester();
}
protected void addNewGroup(String groupName) {
// add a role on the fly
form.submit("groups:addGroup");
tester.assertRenderedPage(NewGroupPage.class);
FormTester groupform=tester.newFormTester("form");
groupform.setValue("groupname", groupName);
groupform.submit("save");
newFormTester();
}
protected void assignRole(String roleName) throws Exception {
form.setValue("roles:palette:recorder", gaService.getRoleByName(roleName).getAuthority());
form.submit();
tester.executeAjaxEvent("form:roles:palette:recorder", "change");
newFormTester();
form.setValue("roles:palette:recorder", gaService.getRoleByName(roleName).getAuthority());
}
protected void assignGroup(String groupName) throws Exception {
String theName = ugService.getGroupByGroupname(groupName).getGroupname();
form.setValue("groups:palette:recorder", theName);
form.submit();
tester.executeAjaxEvent("form:groups:palette:recorder", "change");
newFormTester();
form.setValue("groups:palette:recorder", theName);
}
protected void openCloseRolePanel(Class<? extends Page> responseClass ) {
form.submit("roles:addRole");
tester.assertRenderedPage(NewRolePage.class);
tester.clickLink("form:cancel");
tester.assertRenderedPage(responseClass);
newFormTester();
}
protected void openCloseGroupPanel(Class<? extends Page> responseClass) {
form.submit("groups:addGroup");
tester.assertRenderedPage(NewGroupPage.class);
tester.clickLink("form:cancel");
tester.assertRenderedPage(responseClass);
newFormTester();
}
protected void addUserProperty(String key, String value) {
tester.executeAjaxEvent("form:properties:add", "click");
//newFormTester();
form.setValue("properties:container:list:0:key", key);
form.setValue("properties:container:list:0:value", value);
}
protected void assertCalculatedRoles( String[] roles) throws Exception{
for (int i = 0; i < roles.length;i++ )
tester.assertModelValue("form:calculatedRolesContainer:calculatedRoles:"+i,
gaService.getRoleByName(roles[i]));
}
}