/* (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.service;
import static org.junit.Assert.assertTrue;
import java.lang.reflect.Method;
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.geoserver.security.impl.ServiceAccessRule;
import org.geoserver.security.impl.ServiceAccessRuleDAO;
import org.geoserver.security.web.AbstractListPageTest;
import org.geoserver.web.wicket.GeoServerDataProvider.Property;
public class ServiceAccessRulePageTest extends AbstractListPageTest<ServiceAccessRule> {
protected Page listPage(PageParameters params ) {
return new ServiceAccessRulePage();
}
protected Page newPage(Object...params) {
return new NewServiceAccessRulePage();
}
protected Page editPage(Object...params) {
if (params.length==0) {
return new EditServiceAccessRulePage( new ServiceAccessRule());
}
else
return new EditServiceAccessRulePage( (ServiceAccessRule) params[0]);
}
@Override
protected Property<ServiceAccessRule> getEditProperty() {
return ServiceAccessRuleProvider.RULEKEY;
}
@Override
protected boolean checkEditForm(String objectString) {
String[] array=objectString.split("\\.");
return array[0].equals(
tester.getComponentFromLastRenderedPage("form:service").getDefaultModelObject()) &&
array[1].equals(
tester.getComponentFromLastRenderedPage("form:method").getDefaultModelObject());
}
@Override
protected String getSearchString() throws Exception{
for (ServiceAccessRule rule : ServiceAccessRuleDAO.get().getRules()) {
if ("wms".equals(rule.getService()) && "GetMap".equals(rule.getMethod()))
return rule.getKey();
}
return null;
}
@Override
protected void simulateDeleteSubmit() throws Exception {
assertTrue (ServiceAccessRuleDAO.get().getRules().size()>0);
SelectionServiceRemovalLink link = (SelectionServiceRemovalLink) getRemoveLink();
Method m = link.delegate.getClass().getDeclaredMethod("onSubmit", AjaxRequestTarget.class,Component.class);
m.invoke(link.delegate, null,null);
// TODO, GEOS-5353, Intermittent build failure in ServiceAccessRulePageTest
// assertEquals(0,ServiceAccessRuleDAO.get().getRules().size());
}
}