package org.arquillian.cube.docker.restassured; import io.restassured.builder.RequestSpecBuilder; import java.util.HashMap; import java.util.Map; import org.arquillian.cube.docker.impl.client.CubeDockerConfiguration; import org.arquillian.cube.docker.impl.util.ConfigUtil; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class RestAssuredCustomizerTest { private static final String SIMPLE_SCENARIO = "helloworld:\n" + " image: dockercloud/hello-world\n" + " portBindings: [8080->80/tcp]"; @Mock CubeDockerConfiguration cubeDockerConfiguration; @Mock RequestSpecBuilder requestSpecBuilder; @Before public void setup() { when(cubeDockerConfiguration.getDockerServerIp()).thenReturn("192.168.99.100"); when(cubeDockerConfiguration.getDockerContainersContent()).thenReturn(ConfigUtil.load(SIMPLE_SCENARIO)); } @Test public void should_autoresolve_base_uri() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setBaseUri("http://192.168.99.100"); } @Test public void should_autoresolve_base_uri_with_schema_if_set() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("schema", "https"); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setBaseUri("https://192.168.99.100"); } @Test public void should_use_base_uri() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("baseUri", "http://localhost"); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setBaseUri(("http://localhost")); } @Test public void should_autoresolve_port() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("baseUri", "http://localhost"); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setPort(8080); } @Test public void should_resolve_exposed_port() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("baseUri", "http://localhost"); conf.put("port", "80"); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setPort(8080); } @Test public void should_resolve_exposed_port_as_bind_port_if_no_definitions() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("baseUri", "http://localhost"); conf.put("port", "8081"); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setPort(8081); } @Test public void should_set_relaxed_https_validation_in_all_protocols() { RestAssuredCustomizer restAssuredCustomizer = new RestAssuredCustomizer(); Map<String, String> conf = new HashMap<>(); conf.put("baseUri", "http://localhost"); conf.put("port", "8081"); conf.put("useRelaxedHttpsValidation", null); final RestAssuredConfiguration restAssuredConfiguration = RestAssuredConfiguration.fromMap(conf); restAssuredCustomizer.configureRequestSpecBuilder(restAssuredConfiguration, cubeDockerConfiguration, requestSpecBuilder); verify(requestSpecBuilder).setRelaxedHTTPSValidation(); } }