package org.geoserver.flow.config;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import junit.framework.TestCase;
import org.geoserver.flow.ControllerPriorityComparator;
import org.geoserver.flow.FlowController;
import org.geoserver.flow.controller.BasicOWSController;
import org.geoserver.flow.controller.GlobalFlowController;
import org.geoserver.flow.controller.UserFlowController;
import org.geoserver.security.PropertyFileWatcher;
public class DefaultControlFlowConfigurationTest extends TestCase {
public void testParsing() throws Exception {
Properties p = new Properties();
p.put("timeout", "10");
p.put("ows.global", "100");
p.put("ows.wms.getmap", "8");
p.put("user", "6");
DefaultControlFlowConfigurator configurator = new DefaultControlFlowConfigurator(new FixedWatcher(p));
assertTrue(configurator.isStale());
List<FlowController> controllers = configurator.buildFlowControllers();
Collections.sort(controllers, new ControllerPriorityComparator());
assertFalse(configurator.isStale());
assertEquals(10 * 1000, configurator.getTimeout());
assertEquals(3, controllers.size());
assertTrue(controllers.get(0) instanceof UserFlowController);
assertTrue(controllers.get(1) instanceof BasicOWSController);
assertTrue(controllers.get(2) instanceof GlobalFlowController);
UserFlowController uc = (UserFlowController) controllers.get(0);
assertEquals(6, uc.getPriority());
BasicOWSController oc = (BasicOWSController) controllers.get(1);
assertEquals(8, oc.getPriority());
assertEquals("wms", oc.getService());
assertEquals("getmap", oc.getMethod());
assertNull(oc.getOutputFormat());
GlobalFlowController gc = (GlobalFlowController) controllers.get(2);
assertEquals(100, gc.getPriority());
}
static class FixedWatcher extends PropertyFileWatcher {
boolean stale = true;
Properties properties;
public FixedWatcher(Properties properties) {
super(null);
this.properties = properties;
}
@Override
public boolean isStale() {
if(stale) {
stale = false;
return true;
} else {
return false;
}
}
@Override
public Properties getProperties() throws IOException {
return properties;
}
}
}