package net.jsunit.action;
import junit.framework.TestCase;
import net.jsunit.BrowserLaunchSpecification;
import net.jsunit.MockBrowserTestRunner;
import net.jsunit.model.ResultType;
import net.jsunit.utility.XmlUtility;
public class TestRunnerActionTest extends TestCase {
private TestRunnerAction action;
private MockBrowserTestRunner mockRunner;
public void setUp() throws Exception {
super.setUp();
action = new TestRunnerAction();
mockRunner = new MockBrowserTestRunner();
mockRunner.hasReceivedResult = true;
action.setBrowserTestRunner(mockRunner);
}
public void testSuccess() throws Exception {
mockRunner.shouldSucceed = true;
assertEquals(TestRunnerAction.SUCCESS, action.execute());
String xmlString = XmlUtility.asString(action.getXmlRenderable().asXml());
assertTrue(xmlString.startsWith("<testRunResult type=\"" + ResultType.SUCCESS.name()));
}
public void testFailure() throws Exception {
mockRunner.shouldSucceed = false;
assertEquals(TestRunnerAction.SUCCESS, action.execute());
String xmlString = XmlUtility.asString(action.getXmlRenderable().asXml());
assertTrue(xmlString.startsWith("<testRunResult type=\"" + ResultType.FAILURE.name()));
}
public void testOverrideUrl() throws Exception {
String overrideUrl = "http://www.example.com:8954/jsunit/testRunner.html?testPage=http://www.example.com:8954/tests/myTests.html?autoRun=true&submitResults=http://www.example.com:8954/tests";
action.setUrl(overrideUrl);
assertEquals(TestRunnerAction.SUCCESS, action.execute());
assertEquals(2, mockRunner.launchSpecs.size());
BrowserLaunchSpecification spec1 = mockRunner.launchSpecs.get(0);
BrowserLaunchSpecification spec2 = mockRunner.launchSpecs.get(1);
assertTrue(spec1.hasOverrideUrl());
assertEquals(overrideUrl, spec1.getOverrideUrl());
assertTrue(spec2.hasOverrideUrl());
assertEquals(overrideUrl, spec2.getOverrideUrl());
}
public void testRequestIpAddressAndHostLogged() throws Exception {
action.execute();
assertEquals("Received request to run tests", mockRunner.logMessages.get(0));
mockRunner.logMessages.clear();
action.setRequestIPAddress("123.456.78.9");
action.execute();
assertEquals("Received request to run tests from 123.456.78.9", mockRunner.logMessages.get(0));
mockRunner.logMessages.clear();
action.setRequestHost("www.example.com");
action.execute();
assertEquals("Received request to run tests from www.example.com (123.456.78.9)", mockRunner.logMessages.get(0));
mockRunner.logMessages.clear();
action.setRequestIPAddress("");
action.execute();
assertEquals("Received request to run tests from www.example.com", mockRunner.logMessages.get(0));
mockRunner.logMessages.clear();
action.setRequestIPAddress("12.34.56.78");
action.setRequestHost("12.34.56.78");
action.execute();
assertEquals("Received request to run tests from 12.34.56.78", mockRunner.logMessages.get(0));
}
public void testLimitToParticularBrowser() throws Exception {
action.setBrowserId("1");
assertEquals(TestRunnerAction.SUCCESS, action.execute());
assertEquals(1, mockRunner.launchSpecs.size());
assertEquals("mybrowser2.exe", mockRunner.launchSpecs.get(0).getBrowser().getFileName());
}
public void testLimitToBrowserWithBadId() throws Exception {
action.setBrowserId("34");
action.execute();
assertEquals(TestRunnerAction.ERROR, action.execute());
assertTrue(mockRunner.launchSpecs.isEmpty());
assertEquals("<error>Invalid browser ID: 34</error>", XmlUtility.asString(action.getXmlRenderable().asXml()));
}
public void testLimitToBrowserWithNonIntegerId() throws Exception {
action.setBrowserId("foo");
action.execute();
assertEquals(TestRunnerAction.ERROR, action.execute());
assertTrue(mockRunner.launchSpecs.isEmpty());
assertEquals("<error>Invalid browser ID: foo</error>", XmlUtility.asString(action.getXmlRenderable().asXml()));
}
}