package net.jsunit;
import net.jsunit.configuration.ServerConfiguration;
import net.jsunit.logging.BrowserResultRepository;
import net.jsunit.logging.FileBrowserResultRepository;
import java.io.File;
public abstract class ServerFunctionalTestCase extends FunctionalTestCase {
protected static JsUnitServer server;
private BrowserResultRepository repository;
protected JsUnitServer createServer() {
int port = new TestPortManager().newPort();
ServerConfiguration configuration = new ServerConfiguration(new FunctionalTestConfigurationSource(port));
JsUnitServer result = new JsUnitServer(configuration, repository);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
if (server != null)
server.dispose();
}
});
return result;
}
protected int port() {
return server.getConfiguration().getPort();
}
public void setUp() throws Exception {
super.setUp();
repository = createResultRepository();
if (server == null) {
server = createServer();
server.start();
} else
JsUnitServer.registerInstance(server);
server.setResultRepository(repository);
if (shouldMockOutProcessStarter())
server.setProcessStarter(new MockProcessStarter());
else
server.setProcessStarter(new DefaultProcessStarter());
createWebTester();
}
public void tearDown() throws Exception {
super.tearDown();
}
protected boolean shouldMockOutProcessStarter() {
return true;
}
private BrowserResultRepository createResultRepository() {
return needsRealResultRepository() ?
new FileBrowserResultRepository(new File("logs")) :
new MockBrowserResultRepository();
}
protected boolean needsRealResultRepository() {
return false;
}
protected String baseURL() {
return "http://localhost:" + port() + "/jsunit";
}
}