WIP
[demos/spring-boot] / src / test / java / de / juplo / demo / DemoControllerIT.java
index 6a9a2a5..bd9dcd2 100644 (file)
@@ -1,26 +1,63 @@
 package de.juplo.demo;
 
 
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.SocketException;
+import java.net.UnknownHostException;
 import lombok.extern.slf4j.Slf4j;
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-import org.springframework.test.web.reactive.server.WebTestClient;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.springframework.boot.test.context.SpringBootTest;
+import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
+import org.springframework.boot.web.server.LocalServerPort;
 
 
 /**
  * Integration-Test for the {@link DemoController}.
  * @author Kai Moritz
  */
-@ExtendWith(SpringExtension.class)
-@WebFluxTest
+@SpringBootTest(webEnvironment = RANDOM_PORT)
+@ExtendWith(WebDriverExtension.class)
 @Slf4j
 public class DemoControllerIT
 {
+  @LocalServerPort
+  int port;
+  String baseUri;
+
+
+  @BeforeEach()
+  void generateBaseUri()
+  {
+    try (final DatagramSocket socket = new DatagramSocket())
+    {
+      socket.connect(InetAddress.getByName("8.8.8.8"), 10002);
+      baseUri =
+          "http://" +
+          socket.getLocalAddress().getHostAddress() +
+          ":" +
+          port;
+    }
+    catch (SocketException | UnknownHostException e)
+    {
+      throw new RuntimeException(e);
+    }
+  }
+
+
   @Test
-  void testSubmit(WebTestClient client)
+  void testSubmit(RemoteWebDriver driver)
   {
-    
+    driver.get(baseUri + "/");
+    log.info("Fetched page:\n\n{}\n", driver.getPageSource());
+
+    WebElement submit = driver.findElement(By.cssSelector(".card-footer > button"));
+    assertThat(submit).isNotNull();
   }
 }