diff --git a/micro-springboot/insurance-service/pom.xml b/micro-springboot/insurance-service/pom.xml index e06f18a9..43f51451 100644 --- a/micro-springboot/insurance-service/pom.xml +++ b/micro-springboot/insurance-service/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.11 + 4.0.3 4.0.0 @@ -43,17 +43,17 @@ org.springdoc springdoc-openapi-starter-webmvc-ui - 2.8.16 + 3.0.2 com.blazebit - blaze-persistence-integration-spring-data-3.4 + blaze-persistence-integration-spring-data-4.0 ${blaze.version} com.blazebit - blaze-persistence-integration-hibernate-6.2 + blaze-persistence-integration-hibernate-7.1 ${blaze.version} runtime @@ -68,6 +68,11 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-webflux + test + org.springframework.boot spring-boot-testcontainers diff --git a/micro-springboot/insurance-service/src/main/java/pl/redhat/samples/insurance/InsuranceApplication.java b/micro-springboot/insurance-service/src/main/java/pl/redhat/samples/insurance/InsuranceApplication.java index b2f01351..7c24f826 100644 --- a/micro-springboot/insurance-service/src/main/java/pl/redhat/samples/insurance/InsuranceApplication.java +++ b/micro-springboot/insurance-service/src/main/java/pl/redhat/samples/insurance/InsuranceApplication.java @@ -9,7 +9,6 @@ import com.blazebit.persistence.view.spi.EntityViewConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @@ -27,7 +26,7 @@ public static void main(String[] args) { @Bean RestTemplate restTemplate() { - return new RestTemplateBuilder().build(); + return new RestTemplate(); } @PersistenceUnit diff --git a/micro-springboot/insurance-service/src/main/resources/import.sql b/micro-springboot/insurance-service/src/main/resources/import.sql index 27284345..0a84fc1d 100644 --- a/micro-springboot/insurance-service/src/main/resources/import.sql +++ b/micro-springboot/insurance-service/src/main/resources/import.sql @@ -1,7 +1,7 @@ -insert into insurance(personId, type, amount) values(1, 'MEDICAL', 1000); -insert into insurance(personId, type, amount) values(2, 'MEDICAL', 800); -insert into insurance(personId, type, amount) values(3, 'LIFE', 30000); -insert into insurance(personId, type, amount) values(4, 'LIFE', 20000); -insert into insurance(personId, type, amount) values(5, 'MEDICAL', 1500); -insert into insurance(personId, type, amount) values(6, 'LIFE', 50000); -insert into insurance(personId, type, amount) values(7, 'LIFE', 50000); \ No newline at end of file +insert into insurance(person_id, type, amount) values(1, 'MEDICAL', 1000); +insert into insurance(person_id, type, amount) values(2, 'MEDICAL', 800); +insert into insurance(person_id, type, amount) values(3, 'LIFE', 30000); +insert into insurance(person_id, type, amount) values(4, 'LIFE', 20000); +insert into insurance(person_id, type, amount) values(5, 'MEDICAL', 1500); +insert into insurance(person_id, type, amount) values(6, 'LIFE', 50000); +insert into insurance(person_id, type, amount) values(7, 'LIFE', 50000); \ No newline at end of file diff --git a/micro-springboot/insurance-service/src/test/java/pl/redhat/samples/insurance/InsuranceControllerTests.java b/micro-springboot/insurance-service/src/test/java/pl/redhat/samples/insurance/InsuranceControllerTests.java index 66a41864..44f11f6a 100644 --- a/micro-springboot/insurance-service/src/test/java/pl/redhat/samples/insurance/InsuranceControllerTests.java +++ b/micro-springboot/insurance-service/src/test/java/pl/redhat/samples/insurance/InsuranceControllerTests.java @@ -3,24 +3,33 @@ import org.instancio.Instancio; import org.instancio.Select; import org.junit.jupiter.api.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.web.reactive.server.WebTestClient; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import pl.redhat.samples.insurance.domain.Insurance; +import java.util.List; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class InsuranceControllerTests { - @Autowired - TestRestTemplate restTemplate; + @LocalServerPort + int port; + + WebTestClient webTestClient; + + @BeforeEach + void setUp() { + webTestClient = WebTestClient.bindToServer() + .baseUrl("http://localhost:" + port) + .build(); + } @Container @ServiceConnection @@ -33,9 +42,14 @@ void add() { Insurance insurance = Instancio.of(Insurance.class) .ignore(Select.field("id")) .create(); - insurance = restTemplate.postForObject("/insurances", insurance, Insurance.class); - Assertions.assertNotNull(insurance); - Assertions.assertNotNull(insurance.getId()); + Insurance saved = webTestClient.post().uri("/insurances") + .bodyValue(insurance) + .exchange() + .expectStatus().isOk() + .expectBody(Insurance.class) + .returnResult().getResponseBody(); + Assertions.assertNotNull(saved); + Assertions.assertNotNull(saved.getId()); } @Test @@ -45,25 +59,42 @@ void updateAndGet() { Insurance insurance = Instancio.of(Insurance.class) .set(Select.field("id"), id) .create(); - restTemplate.put("/insurances", insurance); - Insurance updated = restTemplate.getForObject("/insurances/{id}", Insurance.class, id); - Assertions.assertNotNull(insurance); - Assertions.assertNotNull(insurance.getId()); - Assertions.assertEquals(id, insurance.getId()); + webTestClient.put().uri("/insurances") + .bodyValue(insurance) + .exchange(); + Insurance updated = webTestClient.get().uri("/insurances/{id}", id) + .exchange() + .expectStatus().isOk() + .expectBody(Insurance.class) + .returnResult().getResponseBody(); + Assertions.assertNotNull(updated); + Assertions.assertNotNull(updated.getId()); + Assertions.assertEquals(id, updated.getId()); } @Test @Order(3) void getAll() { - Insurance[] insurances = restTemplate.getForObject("/insurances", Insurance[].class); - Assertions.assertEquals(1, insurances.length); + List insurances = webTestClient.get().uri("/insurances") + .exchange() + .expectStatus().isOk() + .expectBodyList(Insurance.class) + .hasSize(8) + .returnResult().getResponseBody(); + Assertions.assertNotNull(insurances); + Assertions.assertEquals(8, insurances.size()); } @Test @Order(4) void deleteAndGet() { - restTemplate.delete("/insurances/{id}", 1); - Insurance insurance = restTemplate.getForObject("/insurances/{id}", Insurance.class, 1); + webTestClient.delete().uri("/insurances/{id}", 1) + .exchange() + .expectStatus().isOk(); + Insurance insurance = webTestClient.get().uri("/insurances/{id}", 1) + .exchange() + .expectBody(Insurance.class) + .returnResult().getResponseBody(); Assertions.assertNull(insurance); } diff --git a/micro-springboot/person-service/pom.xml b/micro-springboot/person-service/pom.xml index 26ac7520..84abe316 100644 --- a/micro-springboot/person-service/pom.xml +++ b/micro-springboot/person-service/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.11 + 4.0.3 4.0.0 @@ -47,17 +47,17 @@ org.springdoc springdoc-openapi-starter-webmvc-ui - 2.8.16 + 3.0.2 com.blazebit - blaze-persistence-integration-spring-data-3.4 + blaze-persistence-integration-spring-data-4.0 ${blaze.version} com.blazebit - blaze-persistence-integration-hibernate-6.2 + blaze-persistence-integration-hibernate-7.1 ${blaze.version} runtime @@ -72,6 +72,11 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-webflux + test + org.springframework.boot spring-boot-testcontainers diff --git a/micro-springboot/person-service/src/test/java/pl/redhat/samples/person/PersonControllerTests.java b/micro-springboot/person-service/src/test/java/pl/redhat/samples/person/PersonControllerTests.java index 5a887bdf..22be9155 100644 --- a/micro-springboot/person-service/src/test/java/pl/redhat/samples/person/PersonControllerTests.java +++ b/micro-springboot/person-service/src/test/java/pl/redhat/samples/person/PersonControllerTests.java @@ -3,22 +3,33 @@ import org.instancio.Instancio; import org.instancio.Select; import org.junit.jupiter.api.*; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.test.web.reactive.server.WebTestClient; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import pl.redhat.samples.person.domain.Person; +import java.util.List; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class PersonControllerTests { - @Autowired - TestRestTemplate restTemplate; + @LocalServerPort + int port; + + WebTestClient webTestClient; + + @BeforeEach + void setUp() { + webTestClient = WebTestClient.bindToServer() + .baseUrl("http://localhost:" + port) + .build(); + } @Container @ServiceConnection @@ -31,9 +42,14 @@ void add() { Person person = Instancio.of(Person.class) .ignore(Select.field("id")) .create(); - person = restTemplate.postForObject("/persons", person, Person.class); - Assertions.assertNotNull(person); - Assertions.assertNotNull(person.getId()); + Person saved = webTestClient.post().uri("/persons") + .bodyValue(person) + .exchange() + .expectStatus().isOk() + .expectBody(Person.class) + .returnResult().getResponseBody(); + Assertions.assertNotNull(saved); + Assertions.assertNotNull(saved.getId()); } @Test @@ -43,8 +59,15 @@ void updateAndGet() { Person person = Instancio.of(Person.class) .set(Select.field("id"), id) .create(); - restTemplate.put("/persons", person); - Person updated = restTemplate.getForObject("/persons/{id}", Person.class, id); + webTestClient.put().uri("/persons") + .bodyValue(person) + .exchange() + .expectStatus().isOk(); + Person updated = webTestClient.get().uri("/persons/{id}", id) + .exchange() + .expectStatus().isOk() + .expectBody(Person.class) + .returnResult().getResponseBody(); Assertions.assertNotNull(updated); Assertions.assertNotNull(updated.getId()); Assertions.assertEquals(id, updated.getId()); @@ -53,15 +76,26 @@ void updateAndGet() { @Test @Order(3) void getAll() { - Person[] persons = restTemplate.getForObject("/persons", Person[].class); - Assertions.assertEquals(1, persons.length); + List persons = webTestClient.get().uri("/persons") + .exchange() + .expectStatus().isOk() + .expectBodyList(Person.class) + .hasSize(1) + .returnResult().getResponseBody(); + Assertions.assertNotNull(persons); + Assertions.assertEquals(1, persons.size()); } @Test @Order(4) void deleteAndGet() { - restTemplate.delete("/persons/{id}", 1); - Person person = restTemplate.getForObject("/persons/{id}", Person.class, 1); + webTestClient.delete().uri("/persons/{id}", 1) + .exchange() + .expectStatus().isOk(); + Person person = webTestClient.get().uri("/persons/{id}", 1) + .exchange() + .expectBody(Person.class) + .returnResult().getResponseBody(); Assertions.assertNull(person); } diff --git a/micro-springboot/pom.xml b/micro-springboot/pom.xml index 23e9a284..b81f4671 100644 --- a/micro-springboot/pom.xml +++ b/micro-springboot/pom.xml @@ -21,7 +21,7 @@ 1.21.4 - 1.6.11 + 1.6.18 ${project.artifactId}