FluentLenium/FluentLenium

View on GitHub
fluentlenium-core/src/test/java/io/fluentlenium/configuration/AnnotationConfigurationTest.java

Summary

Maintainability
C
1 day
Test Coverage
package io.fluentlenium.configuration;

import io.fluentlenium.configuration.PropertiesBackendConfigurationTest.DummyConfigurationDefaults;
import io.fluentlenium.configuration.PropertiesBackendConfigurationTest.DummyConfigurationFactory;
import org.assertj.core.api.Assertions;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;

/**
 * Unit test for {@link AnnotationConfiguration}.
 */
public class AnnotationConfigurationTest {
    private static AnnotationConfiguration configuration;
    private static AnnotationConfiguration defaultConfiguration;
    private static AnnotationConfiguration noConfiguration;
    private static AnnotationConfiguration desiredCapabilitiesConfiguration;
    private static AnnotationConfiguration capabilitiesClassNameConfiguration;
    private static AnnotationConfiguration capabilitiesFactoryConfiguration;
    private static AnnotationConfiguration capabilitiesInvalidJsonConfiguration;
    private static AnnotationConfiguration capabilitiesInvalidUrlConfiguration;

    @FluentConfiguration(baseUrl = "http://localhost:3000", configurationFactory = DummyConfigurationFactory.class,
            configurationDefaults = DummyConfigurationDefaults.class, eventsEnabled = FluentConfiguration.BooleanValue.FALSE,
            remoteUrl = "http://localhost:4444", htmlDumpMode =
            ConfigurationProperties.TriggerMode.AUTOMATIC_ON_FAIL, htmlDumpPath = "/html-path", implicitlyWait = 1000,
            pageLoadTimeout = 2000, awaitPollingEvery = 10, awaitAtMost = 100, screenshotMode = ConfigurationProperties
            .TriggerMode.MANUAL, screenshotPath = "/screenshot-path", scriptTimeout = 3000, webDriver = "firefox", custom =
    @CustomProperty(name = "key", value = "value"), driverLifecycle = ConfigurationProperties.DriverLifecycle.METHOD,
            browserTimeout = 5000L, browserTimeoutRetries = 3, deleteCookies = FluentConfiguration.BooleanValue.TRUE)
    public static class ConfiguredClass {
    }

    @FluentConfiguration(capabilities = "firefox")
    public static class DesiredCapabilitiesClass {
    }

    @FluentConfiguration(capabilities = "io.fluentlenium.configuration.TestCapabilities")
    public static class CapabilitiesClassNameClass {
    }

    @FluentConfiguration(capabilities = "test-capabilities-factory")
    public static class CapabilitiesFactoryClass {
    }

    @FluentConfiguration(capabilities = "vivaldi")
    public static class CapabilitiesInvalidJsonClass {
    }

    @FluentConfiguration(capabilities = "https://some.nonexistent.com/path")
    public static class CapabilitiesInvalidUrlClass {
    }

    @FluentConfiguration
    public static class DefaultClass {
    }

    @BeforeClass
    public static void beforeClass() {
        configuration = new AnnotationConfiguration(ConfiguredClass.class);
        defaultConfiguration = new AnnotationConfiguration(DefaultClass.class);
        noConfiguration = new AnnotationConfiguration(Object.class);
        desiredCapabilitiesConfiguration = new AnnotationConfiguration(DesiredCapabilitiesClass.class);
        capabilitiesClassNameConfiguration = new AnnotationConfiguration(CapabilitiesClassNameClass.class);
        capabilitiesFactoryConfiguration = new AnnotationConfiguration(CapabilitiesFactoryClass.class);
        capabilitiesInvalidJsonConfiguration = new AnnotationConfiguration(CapabilitiesInvalidJsonClass.class);
        capabilitiesInvalidUrlConfiguration = new AnnotationConfiguration(CapabilitiesInvalidUrlClass.class);
    }

    @Test
    public void configurationFactory() {
        Assertions.assertThat(configuration.getConfigurationFactory()).isEqualTo(DummyConfigurationFactory.class);
    }

    @Test
    public void defaultConfigurationFactory() {
        Assertions.assertThat(defaultConfiguration.getConfigurationFactory()).isNull();
    }

    @Test
    public void configurationDefaults() {
        Assertions.assertThat(configuration.getConfigurationDefaults()).isEqualTo(DummyConfigurationDefaults.class);
    }

    @Test
    public void defaultConfigurationDefaults() {
        Assertions.assertThat(defaultConfiguration.getConfigurationDefaults()).isNull();
    }

    @Test
    public void webDriver() {
        Assertions.assertThat(noConfiguration.getWebDriver()).isNull();
        Assertions.assertThat(defaultConfiguration.getWebDriver()).isNull();

        Assertions.assertThat(configuration.getWebDriver()).isEqualTo("firefox");
    }

    @Test
    public void remoteUrl() {
        Assertions.assertThat(noConfiguration.getRemoteUrl()).isNull();
        Assertions.assertThat(defaultConfiguration.getRemoteUrl()).isNull();

        Assertions.assertThat(configuration.getRemoteUrl()).isEqualTo("http://localhost:4444");
    }

    @Test
    public void capabilities() {
        Assertions.assertThat(noConfiguration.getCapabilities()).isNull();
        Assertions.assertThat(defaultConfiguration.getCapabilities()).isNull();
        Assertions.assertThat(configuration.getCapabilities()).isNull();
    }

    @Test
    public void desiredCapabilities() {
        DesiredCapabilities capabilities = PredefinedDesiredCapabilities.firefox();
        Assertions.assertThat(desiredCapabilitiesConfiguration.getCapabilities()).isEqualTo(capabilities);

        DesiredCapabilities differentCapabilities = PredefinedDesiredCapabilities.chrome();
        Assertions.assertThat(desiredCapabilitiesConfiguration.getCapabilities()).isNotEqualTo(differentCapabilities);
    }

    @Test
    public void capabilitiesClassName() {
        Assertions.assertThat(capabilitiesClassNameConfiguration.getCapabilities()).isExactlyInstanceOf(TestCapabilities.class);
    }

    @Test
    public void capabilitiesFactory() {
        Assertions.assertThat(capabilitiesFactoryConfiguration.getCapabilities()).isExactlyInstanceOf(TestCapabilities.class);
    }

    @Test
    @Ignore("TO BE IMPLEMENTED")
    public void capabilitiesUrl() {
    }

    @Test
    public void capabilitiesCannotBeReadFromUrl() {
        Assertions.assertThatThrownBy(() -> capabilitiesInvalidUrlConfiguration.getCapabilities())
                .isInstanceOf(ConfigurationException.class)
                .hasMessage("Can't read Capabilities defined at https://some.nonexistent.com/path");
    }

    @Test
    public void capabilitiesCannotBeConvertedFromJson() {
        Assertions.assertThatThrownBy(() -> capabilitiesInvalidJsonConfiguration.getCapabilities())
                .isInstanceOf(ConfigurationException.class)
                .hasMessage("Can't convert JSON Capabilities to Object.");
    }

    @Test
    public void driverLifecycle() {
        Assertions.assertThat(noConfiguration.getDriverLifecycle()).isNull();
        Assertions.assertThat(defaultConfiguration.getDriverLifecycle()).isNull();

        Assertions.assertThat(configuration.getDriverLifecycle()).isEqualTo(ConfigurationProperties.DriverLifecycle.METHOD);
    }

    @Test
    public void browserTimeout() {
        Assertions.assertThat(noConfiguration.getBrowserTimeout()).isNull();
        Assertions.assertThat(defaultConfiguration.getBrowserTimeout()).isEqualTo(60000L);

        Assertions.assertThat(configuration.getBrowserTimeout()).isEqualTo(5000L);
    }

    @Test
    public void browserTimeoutRetries() {
        Assertions.assertThat(noConfiguration.getBrowserTimeoutRetries()).isNull();
        Assertions.assertThat(defaultConfiguration.getBrowserTimeoutRetries()).isEqualTo(2);

        Assertions.assertThat(configuration.getBrowserTimeoutRetries()).isEqualTo(3);
    }

    @Test
    public void deleteCookies() {
        Assertions.assertThat(noConfiguration.getDeleteCookies()).isNull();
        Assertions.assertThat(defaultConfiguration.getDeleteCookies()).isNull();

        Assertions.assertThat(configuration.getDeleteCookies()).isTrue();
    }

    @Test
    public void baseUrl() {
        Assertions.assertThat(noConfiguration.getBaseUrl()).isNull();
        Assertions.assertThat(defaultConfiguration.getBaseUrl()).isNull();

        Assertions.assertThat(configuration.getBaseUrl()).isEqualTo("http://localhost:3000");
    }

    @Test
    public void pageLoadTimeout() {
        Assertions.assertThat(noConfiguration.getPageLoadTimeout()).isNull();
        Assertions.assertThat(defaultConfiguration.getPageLoadTimeout()).isNull();

        Assertions.assertThat(configuration.getPageLoadTimeout()).isEqualTo(2000L);
    }

    @Test
    public void implicitlyWait() {
        Assertions.assertThat(noConfiguration.getImplicitlyWait()).isNull();
        Assertions.assertThat(defaultConfiguration.getImplicitlyWait()).isNull();

        Assertions.assertThat(configuration.getImplicitlyWait()).isEqualTo(1000L);
    }

    @Test
    public void awaitAtMost() {
        Assertions.assertThat(noConfiguration.getAwaitAtMost()).isNull();
        Assertions.assertThat(defaultConfiguration.getAwaitAtMost()).isNull();

        Assertions.assertThat(configuration.getAwaitAtMost()).isEqualTo(100L);
    }

    @Test
    public void awaitPollingEvery() {
        Assertions.assertThat(noConfiguration.getAwaitPollingEvery()).isNull();
        Assertions.assertThat(defaultConfiguration.getAwaitPollingEvery()).isNull();

        Assertions.assertThat(configuration.getAwaitPollingEvery()).isEqualTo(10L);
    }

    @Test
    public void scriptTimeout() {
        Assertions.assertThat(noConfiguration.getScriptTimeout()).isNull();
        Assertions.assertThat(defaultConfiguration.getScriptTimeout()).isNull();

        Assertions.assertThat(configuration.getScriptTimeout()).isEqualTo(3000L);
    }

    @Test
    public void eventsEnabled() {
        Assertions.assertThat(noConfiguration.getEventsEnabled()).isNull();
        Assertions.assertThat(defaultConfiguration.getEventsEnabled()).isNull();

        Assertions.assertThat(configuration.getEventsEnabled()).isFalse();
    }

    @Test
    public void screenshotPath() {
        Assertions.assertThat(noConfiguration.getScreenshotPath()).isNull();
        Assertions.assertThat(defaultConfiguration.getScreenshotPath()).isNull();

        Assertions.assertThat(configuration.getScreenshotPath()).isEqualTo("/screenshot-path");
    }

    @Test
    public void htmlDumpPath() {
        Assertions.assertThat(noConfiguration.getHtmlDumpPath()).isNull();
        Assertions.assertThat(defaultConfiguration.getHtmlDumpPath()).isNull();

        Assertions.assertThat(configuration.getHtmlDumpPath()).isEqualTo("/html-path");
    }

    @Test
    public void screenshotMode() {
        Assertions.assertThat(noConfiguration.getScreenshotMode()).isNull();
        Assertions.assertThat(defaultConfiguration.getScreenshotMode()).isNull();

        Assertions.assertThat(configuration.getScreenshotMode()).isEqualTo(ConfigurationProperties.TriggerMode.MANUAL);
    }

    @Test
    public void htmlDumpMode() {
        Assertions.assertThat(noConfiguration.getHtmlDumpMode()).isNull();
        Assertions.assertThat(defaultConfiguration.getHtmlDumpMode()).isNull();

        Assertions.assertThat(configuration.getHtmlDumpMode()).isEqualTo(ConfigurationProperties.TriggerMode.AUTOMATIC_ON_FAIL);
    }

    @Test
    public void custom() {
        Assertions.assertThat(noConfiguration.getCustomProperty("key")).isNull();
        Assertions.assertThat(defaultConfiguration.getCustomProperty("key")).isNull();

        Assertions.assertThat(configuration.getCustomProperty("key")).isEqualTo("value");
    }
}