From 73a26bdabb1c2232d6b26076f0fd57c2c59c30f2 Mon Sep 17 00:00:00 2001 From: shelajev Date: Tue, 29 Oct 2024 11:12:26 -0400 Subject: [PATCH] add RestAssuredTests (build will fail) --- pom.xml | 5 ++ .../com/atomicjar/todos/ApplicationTests.java | 71 ++++++++++++++++++- .../com/atomicjar/todos/TestApplication.java | 8 +-- 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index bec159c..3a8cf5a 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,11 @@ postgresql test + + io.rest-assured + rest-assured + test + org.flywaydb flyway-database-postgresql diff --git a/src/test/java/com/atomicjar/todos/ApplicationTests.java b/src/test/java/com/atomicjar/todos/ApplicationTests.java index be1da28..e93782e 100644 --- a/src/test/java/com/atomicjar/todos/ApplicationTests.java +++ b/src/test/java/com/atomicjar/todos/ApplicationTests.java @@ -1,20 +1,89 @@ package com.atomicjar.todos; +import com.atomicjar.todos.entity.Todo; +import com.atomicjar.todos.repository.TodoRepository; +import io.restassured.RestAssured; +import io.restassured.builder.RequestSpecBuilder; +import io.restassured.http.ContentType; +import io.restassured.specification.RequestSpecification; import org.junit.jupiter.api.Assertions; +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.http.HttpHeaders; +import org.springframework.http.MediaType; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import java.util.List; + +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.hasSize; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {ContainersConfig.class}) class ApplicationTests { + @LocalServerPort + protected Integer localServerPort; + protected RequestSpecification requestSpecification; + + + @Autowired + private TodoRepository todoRepository; + + + @BeforeEach + void setUp() { + RestAssured.enableLoggingOfRequestAndResponseIfValidationFails(); + requestSpecification = new RequestSpecBuilder() + .setPort(localServerPort) + .addHeader( + HttpHeaders.CONTENT_TYPE, + MediaType.APPLICATION_JSON_VALUE + ) + .build(); + } + @Test void contextLoads() { -// Assertions.assertTrue(false); + List customers = List.of( + new Todo(null, "Feed all horses", false, 1), + new Todo(null, "Free all horses", false, 2), + new Todo(null, "Feel all horses", false, 3) + ); + todoRepository.saveAll(customers); + + given(requestSpecification) + .when() + .get("/todos") + .then() + .statusCode(200) + .body(".", hasSize(4)); + + todoRepository.deleteAll(); } + + @Test + void getByIDFindsId() { + Todo feedAllHorses = todoRepository.save(new Todo(null, "Feed all horses", false, 1)); + + given(requestSpecification) + .when() + .get("/todos/" + feedAllHorses.getId()) + .then() + .statusCode(200) + .body(".", hasSize(4)); + + todoRepository.deleteAll(); + } + + + } diff --git a/src/test/java/com/atomicjar/todos/TestApplication.java b/src/test/java/com/atomicjar/todos/TestApplication.java index 0d7438b..7ce6985 100644 --- a/src/test/java/com/atomicjar/todos/TestApplication.java +++ b/src/test/java/com/atomicjar/todos/TestApplication.java @@ -38,13 +38,7 @@ public DataLoader(TodoRepository todoRepository, JdbcTemplate jdbcTemplate) { @PostConstruct public void addTodo() { - String serverVersion = DockerClientFactory.instance().getInfo().getServerVersion(); - String title = "Set up and run with Testcontainers desktop app and Testcontainers Cloud!"; - - if (serverVersion.contains("testcontainerscloud")) { - String string = jdbcTemplate.queryForObject("SELECT encode(sha256(?::bytea), 'hex')", String.class, serverVersion); - title = "I need your root, your RAM, and your CPU cycles"; - } + String title = "I need your root, your RAM, and your CPU cycles"; Todo t = new Todo(); t.setTitle(title);