diff --git a/modules/selenium/src/test/java/org/testcontainers/containers/BrowserWebDriverContainerSeleniumAddressTest.java b/modules/selenium/src/test/java/org/testcontainers/containers/BrowserWebDriverContainerSeleniumAddressTest.java new file mode 100644 index 00000000000..aaed79c7f91 --- /dev/null +++ b/modules/selenium/src/test/java/org/testcontainers/containers/BrowserWebDriverContainerSeleniumAddressTest.java @@ -0,0 +1,53 @@ +package org.testcontainers.containers; + +import org.junit.jupiter.api.Test; + +import java.net.MalformedURLException; +import java.net.URL; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class BrowserWebDriverContainerSeleniumAddressTest { + + @Test + void getSeleniumAddressReturnsUrlBuiltFromHostAndMappedPort() throws MalformedURLException { + BrowserWebDriverContainer container = new FixedAddressBrowserWebDriverContainer("localhost", 32768); + + assertThat(container.getSeleniumAddress()).isEqualTo(new URL("http", "localhost", 32768, "/wd/hub")); + } + + @Test + void getSeleniumAddressThrowsContainerLaunchExceptionWhenUrlCannotBeConstructed() { + BrowserWebDriverContainer container = new FixedAddressBrowserWebDriverContainer("http://bad", 32768); + + assertThatThrownBy(container::getSeleniumAddress) + .isInstanceOf(ContainerLaunchException.class) + .hasMessage("Could not construct Selenium address") + .hasCauseInstanceOf(MalformedURLException.class); + } + + private static class FixedAddressBrowserWebDriverContainer + extends BrowserWebDriverContainer { + + private final String host; + + private final int mappedPort; + + FixedAddressBrowserWebDriverContainer(String host, int mappedPort) { + super(); + this.host = host; + this.mappedPort = mappedPort; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getMappedPort(int originalPort) { + return mappedPort; + } + } +} diff --git a/modules/selenium/src/test/java/org/testcontainers/selenium/BrowserWebDriverContainerSeleniumAddressTest.java b/modules/selenium/src/test/java/org/testcontainers/selenium/BrowserWebDriverContainerSeleniumAddressTest.java new file mode 100644 index 00000000000..a52eb89d19a --- /dev/null +++ b/modules/selenium/src/test/java/org/testcontainers/selenium/BrowserWebDriverContainerSeleniumAddressTest.java @@ -0,0 +1,56 @@ +package org.testcontainers.selenium; + +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.ContainerLaunchException; +import org.testcontainers.utility.DockerImageName; + +import java.net.MalformedURLException; +import java.net.URL; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +class BrowserWebDriverContainerSeleniumAddressTest { + + private static final DockerImageName CHROME_IMAGE = DockerImageName.parse("selenium/standalone-chrome:4.13.0"); + + @Test + void getSeleniumAddressReturnsUrlBuiltFromHostAndMappedPort() throws MalformedURLException { + BrowserWebDriverContainer container = new FixedAddressBrowserWebDriverContainer("localhost", 32768); + + assertThat(container.getSeleniumAddress()).isEqualTo(new URL("http", "localhost", 32768, "/wd/hub")); + } + + @Test + void getSeleniumAddressThrowsContainerLaunchExceptionWhenUrlCannotBeConstructed() { + BrowserWebDriverContainer container = new FixedAddressBrowserWebDriverContainer("http://bad", 32768); + + assertThatThrownBy(container::getSeleniumAddress) + .isInstanceOf(ContainerLaunchException.class) + .hasMessage("Could not construct Selenium address") + .hasCauseInstanceOf(MalformedURLException.class); + } + + private static class FixedAddressBrowserWebDriverContainer extends BrowserWebDriverContainer { + + private final String host; + + private final int mappedPort; + + FixedAddressBrowserWebDriverContainer(String host, int mappedPort) { + super(CHROME_IMAGE); + this.host = host; + this.mappedPort = mappedPort; + } + + @Override + public String getHost() { + return host; + } + + @Override + public Integer getMappedPort(int originalPort) { + return mappedPort; + } + } +}