diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts index 6557b82..79690f2 100644 --- a/backend/build.gradle.kts +++ b/backend/build.gradle.kts @@ -31,6 +31,8 @@ dependencies { testImplementation("org.springframework.boot:spring-boot-testcontainers") testImplementation("org.testcontainers:junit-jupiter") testImplementation("org.testcontainers:postgresql") + testImplementation("io.rest-assured:rest-assured") + testImplementation("org.hamcrest:hamcrest") } tasks.register("run") { diff --git a/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java b/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java index 4714cbc..de0e9aa 100644 --- a/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java +++ b/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java @@ -1,13 +1,70 @@ package ovh.herisson.Clyde; -import org.junit.jupiter.api.Test; -// import org.springframework.boot.test.context.SpringBootTest; +import static org.assertj.core.api.Assertions.assertThat; -// @SpringBootTest +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.web.service.annotation.GetExchange; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import io.restassured.RestAssured; + +import com.github.dockerjava.api.model.ExposedPort; +import com.github.dockerjava.api.model.HostConfig; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.api.model.Ports; + +@Testcontainers +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class ClydeApplicationTests { + @LocalServerPort + private Integer port; + + @Container + @ServiceConnection + static PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:alpine") + .withDatabaseName("clyde") + .withUsername("devel") + .withPassword("devel") + .withCreateContainerCmdModifier(cmd -> cmd.withHostConfig( + new HostConfig().withPortBindings(new PortBinding(Ports.Binding.bindPort(5432), new ExposedPort(5432))) + )); + + @Autowired + private ClydeApplication controller; + + @BeforeAll + static void beforeAll(){ + postgres.start(); + } + + + @AfterAll + static void afterAll() { + postgres.stop(); + } + @BeforeEach + void setUp() { + RestAssured.baseURI = "http://localhost:" + port; + } + @Test - void contextLoads() { + void contextLoads(){ + assertThat(controller).isNotNull(); + } + + @Test + void enableMock(){ + RestAssured.get("/ping").then().statusCode(200); } }