/* (c) 2014 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.service; import static org.junit.Assert.*; import java.util.List; import org.apache.wicket.extensions.markup.html.form.palette.component.Recorder; import org.apache.wicket.util.tester.FormTester; import org.geoserver.security.impl.GeoServerRole; import org.geoserver.security.impl.ServiceAccessRule; import org.geoserver.security.impl.ServiceAccessRuleDAO; import org.geoserver.security.web.AbstractSecurityWicketTestSupport; import org.geoserver.security.web.role.NewRolePage; import org.junit.Test; public class EditServiceAccessRulePageTest extends AbstractSecurityWicketTestSupport { EditServiceAccessRulePage page; @Test public void testFill() throws Exception { initializeForXML(); //insertValues(); tester.startPage(page=new EditServiceAccessRulePage(getRule("wms.GetMap"))); tester.assertRenderedPage(EditServiceAccessRulePage.class); tester.assertModelValue("form:service", "wms"); tester.assertModelValue("form:method", "GetMap"); // Does not work with Palette //tester.assertModelValue("form:roles:roles:recorder","ROLE_AUTHENTICATED"); tester.assertModelValue("form:roles:anyRole",Boolean.FALSE); tester.assertComponent("form:roles:palette:recorder", Recorder.class); FormTester form = tester.newFormTester("form"); form.setValue("roles:anyRole", true); // open new role dialog again to ensure that the current state is not lost form.submit("roles:addRole"); tester.assertRenderedPage(NewRolePage.class); tester.clickLink("form:cancel"); tester.assertRenderedPage(EditServiceAccessRulePage.class); form=tester.newFormTester("form"); form.submit("save"); tester.assertErrorMessages(new String[0]); tester.assertRenderedPage(ServiceAccessRulePage.class); ServiceAccessRule rule = getRule("wms.GetMap"); assertNotNull(rule); assertEquals(1,rule.getRoles().size()); assertEquals(GeoServerRole.ANY_ROLE,rule.getRoles().iterator().next()); } @Test public void testEmptyRoles() throws Exception { initializeForXML(); initializeServiceRules(); tester.startPage(page=new EditServiceAccessRulePage(getRule("wms.GetMap"))); FormTester form = tester.newFormTester("form"); form.setValue("roles:palette:recorder", ""); form.submit("save"); //print(tester.getLastRenderedPage(),true,true); assertTrue(testErrorMessagesWithRegExp(".*no role.*")); tester.assertRenderedPage(EditServiceAccessRulePage.class); } @Test public void testReadOnlyRoleService() throws Exception{ initializeForXML(); activateRORoleService(); tester.startPage(page=new EditServiceAccessRulePage(getRule("wms.GetMap"))); tester.assertInvisible("form:roles:addRole"); } protected int indexOf(List<? extends String> strings, String searchValue) { int index =0; for (String s : strings) { if (s.equals(searchValue)) return index; index++; } assertTrue(index!=-1); return -1; } ServiceAccessRule getRule(String key) { for (ServiceAccessRule rule : ServiceAccessRuleDAO.get().getRules()) { if (key.equals(rule.getKey())) { return rule; } } return null; } }