Java tutorial
/* (c) 2014 - 2015 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.role; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.lang.reflect.Method; import java.util.List; import java.util.SortedSet; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.geoserver.security.impl.GeoServerRole; import org.geoserver.security.web.AbstractSecurityPage; import org.geoserver.security.web.AbstractTabbedListPageTest; import org.geoserver.web.wicket.GeoServerDataProvider.Property; import org.junit.Test; public class RoleListPageTest extends AbstractTabbedListPageTest<GeoServerRole> { public static final String SECOND_COLUM_PATH = "itemProperties:1:component:link"; protected String getServiceName() { return getRoleServiceName(); } protected AbstractSecurityPage listPage(String roleServiceName) { AbstractSecurityPage result = initializeForRoleServiceNamed(roleServiceName); tester.clickLink(getTabbedPanelPath() + ":tabs-container:tabs:1:link", true); return result; } protected Page newPage(AbstractSecurityPage page, Object... params) { if (params.length == 0) return new NewRolePage(getSecurityManager().getActiveRoleService().getName()).setReturnPage(page); else return new NewRolePage((String) params[0]).setReturnPage(page); } protected Page editPage(AbstractSecurityPage page, Object... params) { if (params.length == 0) { return new EditRolePage(getSecurityManager().getActiveRoleService().getName(), GeoServerRole.ADMIN_ROLE) .setReturnPage(page); } if (params.length == 1) return new EditRolePage(getSecurityManager().getActiveRoleService().getName(), (GeoServerRole) params[0]).setReturnPage(page); else return new EditRolePage((String) params[0], (GeoServerRole) params[1]).setReturnPage(page); } protected String getTabbedPanelPath() { return "panel:panel"; }; protected String getItemsPath() { return getTabbedPanelPath() + ":panel:table:listContainer:items"; }; @Test public void testEditParentRole() throws Exception { tester.startPage(listPage(getRoleServiceName())); GeoServerRole role = gaService.getRoleByName("ROLE_AUTHENTICATED"); assertNotNull(role); List<Property<GeoServerRole>> props = new RoleListProvider(getRoleServiceName()).getProperties(); Property<GeoServerRole> parentProp = null; for (Property<GeoServerRole> prop : props) { if (RoleListProvider.ParentPropertyName.equals(prop.getName())) { parentProp = prop; break; } } Component c = getFromList(SECOND_COLUM_PATH, role, parentProp); assertNotNull(c); tester.clickLink(c.getPageRelativePath()); tester.assertRenderedPage(EditRolePage.class); assertTrue(checkEditForm(role.getAuthority())); } @Override protected String getSearchString() throws Exception { GeoServerRole role = gaService.getRoleByName(GeoServerRole.ADMIN_ROLE.getAuthority()); assertNotNull(role); return role.getAuthority(); } @Override protected Property<GeoServerRole> getEditProperty() { return RoleListProvider.ROLENAME; } @Override protected boolean checkEditForm(String objectString) { return objectString.equals(tester.getComponentFromLastRenderedPage("form:name").getDefaultModelObject()); } @Test public void testReadOnlyService() throws Exception { listPage(getRoleServiceName()); tester.assertVisible(getRemoveLink().getPageRelativePath()); tester.assertVisible(getAddLink().getPageRelativePath()); activateRORoleService(); listPage(getRORoleServiceName()); tester.assertInvisible(getRemoveLink().getPageRelativePath()); tester.assertInvisible(getAddLink().getPageRelativePath()); } @Override protected void simulateDeleteSubmit() throws Exception { SelectionRoleRemovalLink link = (SelectionRoleRemovalLink) getRemoveLink(); Method m = link.delegate.getClass().getDeclaredMethod("onSubmit", AjaxRequestTarget.class, Component.class); m.invoke(link.delegate, null, null); SortedSet<GeoServerRole> roles = gaService.getRoles(); assertEquals(3, roles.size()); assertFalse(roles.contains(createNewRoleForRemvovalTest())); } GeoServerRole createNewRoleForRemvovalTest() throws Exception { return gaStore.createRoleObject("NEW_ROLE"); } @Override protected void doRemove(String pathForLink) throws Exception { GeoServerRole newRole = createNewRoleForRemvovalTest(); gaStore.addRole(newRole); gaStore.store(); assertEquals(5, gaService.getRoles().size()); super.doRemove(pathForLink); } }