Package net.jsunit

Source Code of net.jsunit.JsUnitServerTest

package net.jsunit;

import junit.framework.TestCase;
import net.jsunit.configuration.ConfigurationException;
import net.jsunit.configuration.DummyConfigurationSource;
import net.jsunit.configuration.ServerConfiguration;
import net.jsunit.model.Browser;
import net.jsunit.model.BrowserLaunchSpecification;
import net.jsunit.model.BrowserResult;
import net.jsunit.model.DummyBrowserResult;

public class JsUnitServerTest extends TestCase {

    private JsUnitServer server;

    public void setUp() throws Exception {
        super.setUp();
        server = new JsUnitServer(new ServerConfiguration(new DummyConfigurationSource()), new MockBrowserResultRepository());
    }

    public void testStartTestRun() throws Exception {
        server.setProcessStarter(new MockProcessStarter());
        MockTestRunListener listener = new MockTestRunListener();
        server.addTestRunListener(listener);
        Thread thread = new Thread() {
            public void run() {
                try {
                    server.startTestRun();
                } catch (Exception e) {
                    fail(e.toString());
                }
            }
        };
        thread.start();
        Thread.sleep(500);
        assertTrue(thread.isAlive());
        listener.isReady = true;
        thread.join();
    }

    public void testLaunchingBrowser() {
        MockProcessStarter starter = new MockProcessStarter();
        server.setProcessStarter(starter);
        MockTestRunListener listener = new MockTestRunListener();
        server.addTestRunListener(listener);

        server.launchBrowserTestRun(new BrowserLaunchSpecification(new Browser(DummyConfigurationSource.BROWSER_FILE_NAME, 0)));
        assertTrue(listener.browserTestRunStartedCalled);
        assertEquals(2, starter.commandPassed.length);
        assertEquals("iexplore.exe", starter.commandPassed[0]);
        assertEquals(DummyConfigurationSource.DUMMY_URL + "&browserId=0", starter.commandPassed[1]);
        assertFalse(listener.testRunFinishedCalled);
        server.accept(new DummyBrowserResult(true, 0, 0));
        assertTrue(listener.browserTestRunFinishedCalled);
    }

    public void testLaunchingBrowserCrashes() throws InterruptedException {
        BlowingUpProcessStarter starter = new BlowingUpProcessStarter();
        server.setProcessStarter(starter);
        MockTestRunListener listener = new MockTestRunListener();
        server.addTestRunListener(listener);

        Browser browser = new Browser(DummyConfigurationSource.BROWSER_FILE_NAME, 0);
        server.launchBrowserTestRun(new BrowserLaunchSpecification(browser));
        assertTrue(listener.browserTestRunStartedCalled);
        assertTrue(listener.browserTestRunFinishedCalled);
        assertTrue(listener.result.failedToLaunch());
        assertFalse(server.isWaitingForBrowser(browser));
        assertEquals(new Browser("iexplore.exe", 0), listener.browser);
        assertEquals("iexplore.exe", listener.result.getBrowser().getStartCommand());
        assertSame(listener.result, server.lastResult());

        server.setProcessStarter(new MockProcessStarter());
        listener.reset();
        browser = new Browser("mybrowser2.exe", 1);
        server.launchBrowserTestRun(new BrowserLaunchSpecification(browser));
        assertTrue(server.isWaitingForBrowser(browser));
        assertTrue(listener.browserTestRunStartedCalled);
        assertFalse(listener.browserTestRunFinishedCalled);
        assertEquals(browser, listener.browser);
    }

    public void testStartEnd() {
        server.setProcessStarter(new MockProcessStarter());
        MockTestRunListener listener = new MockTestRunListener();
        listener.isReady = true;
        server.addTestRunListener(listener);
        server.startTestRun();
        assertTrue(listener.testRunStartedCalled);
        server.finishTestRun();
        assertTrue(listener.testRunFinishedCalled);
    }

    public void testAcceptResult() {
        server.setProcessStarter(new MockProcessStarter());
        Browser browser = new Browser("mybrowser.exe", 0);
        server.launchBrowserTestRun(new BrowserLaunchSpecification(browser));
        BrowserResult result = new BrowserResult();
        result.setBrowser(browser);
        server.accept(result);
        assertEquals("mybrowser.exe", result.getBrowser().getStartCommand());
    }

    public void testOverrideUrl() {
        MockProcessStarter starter = new MockProcessStarter();
        server.setProcessStarter(starter);
        MockTestRunListener listener = new MockTestRunListener();
        server.addTestRunListener(listener);

        String overrideUrl = "http://my.example.com:8080?submitResults=true&autoRun=true&browserId=0";
        server.launchBrowserTestRun(new BrowserLaunchSpecification(new Browser("mybrowser.exe", 0), overrideUrl));
        assertEquals(2, starter.commandPassed.length);
        assertEquals("mybrowser.exe", starter.commandPassed[0]);
        assertEquals(overrideUrl, starter.commandPassed[1]);
    }

    public void testAddingSubmitResultsAndAutoRunParameters() throws Exception {
        MockProcessStarter starter = new MockProcessStarter();
        server.setProcessStarter(starter);
        MockTestRunListener listener = new MockTestRunListener();
        server.addTestRunListener(listener);

        String overrideUrlWithoutSubmitResults = "http://my.example.com:8080?param=value";
        server.launchBrowserTestRun(new BrowserLaunchSpecification(new Browser("mybrowser.exe", 0), overrideUrlWithoutSubmitResults));
        assertEquals(2, starter.commandPassed.length);
        assertEquals("mybrowser.exe", starter.commandPassed[0]);
        assertEquals(
                overrideUrlWithoutSubmitResults + "&autoRun=true&browserId=0&submitResults=localhost:" + DummyConfigurationSource.PORT + "/jsunit/acceptor",
                starter.commandPassed[1]
        );
    }

    public void testNoURLSpecified() throws Exception {
        server = new JsUnitServer(new ServerConfiguration(new DummyConfigurationSource() {
            public String url() {
                return "";
            }
        }), new MockBrowserResultRepository());
        MockProcessStarter starter = new MockProcessStarter();
        server.setProcessStarter(starter);
        server.launchBrowserTestRun(new BrowserLaunchSpecification(new Browser("mybrowser.exe", 0)));
        assertFalse(server.lastResult().wasSuccessful());
        assertTrue(server.lastResult().getServerSideExceptionStackTrace().indexOf(NoUrlSpecifiedException.class.getName()) != -1);
    }

    public void testInvalidConfiguration() {
        try {
            server = new JsUnitServer(new ServerConfiguration(new InvalidConfigurationSource()));
            fail();
        } catch (ConfigurationException e) {

        }
    }

    static class InvalidConfigurationSource extends DummyConfigurationSource {

        public String url() {
            return "invalid url";
        }

    }

}
TOP

Related Classes of net.jsunit.JsUnitServerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.