diff --git a/backend/build.gradle.kts b/backend/build.gradle.kts index 6c641d0..79690f2 100644 --- a/backend/build.gradle.kts +++ b/backend/build.gradle.kts @@ -32,6 +32,7 @@ dependencies { 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 55457c4..de0e9aa 100644 --- a/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java +++ b/backend/src/test/java/ovh/herisson/Clyde/ClydeApplicationTests.java @@ -9,19 +9,35 @@ 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.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; +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; - static PostgreSQLContainer postgres = new PostgreSQLContainer<>("postgres:15-alpine"); + @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; @@ -31,26 +47,24 @@ class ClydeApplicationTests { postgres.start(); } + @AfterAll static void afterAll() { postgres.stop(); } - - @DynamicPropertySource - static void configure(DynamicPropertyRegistry registry) { - registry.add("spring.datasource.url", postgres::getJdbcUrl); - registry.add("spring.datasource.username", postgres::getUsername); - registry.add("spring.datasource.password", postgres::getUsername); - } - @BeforeEach void setUp() { RestAssured.baseURI = "http://localhost:" + port; } @Test - void contextLoads() throws Exception { + void contextLoads(){ assertThat(controller).isNotNull(); } + + @Test + void enableMock(){ + RestAssured.get("/ping").then().statusCode(200); + } }