diff --git a/spring-cloud-reservation-service/pom.xml b/spring-cloud-reservation-service/pom.xml index 2bb6781..d2bab92 100644 --- a/spring-cloud-reservation-service/pom.xml +++ b/spring-cloud-reservation-service/pom.xml @@ -25,58 +25,22 @@ org.springframework.boot - spring-boot-starter-aop - - - org.springframework.boot - spring-boot-starter-webflux + spring-boot-starter-data-r2dbc org.springframework.boot - spring-boot-starter-data-r2dbc + spring-boot-starter-oauth2-resource-server org.springframework.boot - spring-boot-starter-oauth2-resource-server + spring-boot-starter-webflux - - org.springframework.cloud - spring-cloud-starter-bootstrap - org.springframework.cloud spring-cloud-config-client - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - - - org.springframework.cloud - spring-cloud-starter-netflix-ribbon - - - org.springframework.cloud - spring-cloud-netflix-ribbon - - - com.netflix.ribbon - ribbon-eureka - - - org.springframework.cloud - spring-cloud-netflix-hystrix - - - - - - - org.springframework.retry - spring-retry - @@ -95,5 +59,15 @@ spring-boot-starter-test test + + org.springframework.security + spring-security-test + test + + + io.projectreactor + reactor-test + test + diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplication.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplication.java index 0841734..f37b4d3 100644 --- a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplication.java +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplication.java @@ -2,10 +2,17 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.reactive.config.EnableWebFlux; -@SpringBootApplication +@SpringBootApplication(exclude = { + SecurityAutoConfiguration.class, + WebMvcAutoConfiguration.class, + ErrorMvcAutoConfiguration.class +}) @EnableWebFlux @EnableDiscoveryClient public class ReservationServiceApplication { diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/R2dbcConfig.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/R2dbcConfig.java new file mode 100644 index 0000000..6b74fd3 --- /dev/null +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/R2dbcConfig.java @@ -0,0 +1,9 @@ +package ca.zhoozhoo.springcloud.reservations.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories; + +@Configuration +@EnableR2dbcRepositories(basePackages = "ca.zhoozhoo.springcloud.reservations") +public class R2dbcConfig { +} diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/SecurityConfig.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/SecurityConfig.java index 7499842..b7b3355 100644 --- a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/SecurityConfig.java +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/config/SecurityConfig.java @@ -4,6 +4,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import org.springframework.security.config.annotation.method.configuration.EnableReactiveMethodSecurity; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; @@ -12,6 +13,7 @@ @Configuration @EnableWebFluxSecurity @EnableReactiveMethodSecurity +@Profile({ "production" }) public class SecurityConfig { @Bean diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/controller/ReservationController.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/controller/ReservationController.java index 2d69dc0..1ef24e3 100644 --- a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/controller/ReservationController.java +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/controller/ReservationController.java @@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import ca.zhoozhoo.springcloud.reservations.dao.ReservationRepository; import ca.zhoozhoo.springcloud.reservations.model.Reservation; +import ca.zhoozhoo.springcloud.reservations.repository.ReservationRepository; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/model/Reservation.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/model/Reservation.java index 35c019f..ff9ea53 100644 --- a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/model/Reservation.java +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/model/Reservation.java @@ -6,19 +6,26 @@ import org.springframework.data.relational.core.mapping.Column; import org.springframework.data.relational.core.mapping.Table; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import reactor.util.annotation.NonNull; @Table @Data +@AllArgsConstructor +@NoArgsConstructor public class Reservation { @Id @Column("RESERVATION_ID") - private long id; + private Long id; - private long roomId; + @NonNull + private Long roomId; - private long guestId; + @NonNull + private Long guestId; @Column("RES_DATE") private LocalDate date; diff --git a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/dao/ReservationRepository.java b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepository.java similarity index 88% rename from spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/dao/ReservationRepository.java rename to spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepository.java index 90cf331..03376fd 100644 --- a/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/dao/ReservationRepository.java +++ b/spring-cloud-reservation-service/src/main/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepository.java @@ -1,4 +1,4 @@ -package ca.zhoozhoo.springcloud.reservations.dao; +package ca.zhoozhoo.springcloud.reservations.repository; import java.time.LocalDate; diff --git a/spring-cloud-reservation-service/src/main/resources/application.yml b/spring-cloud-reservation-service/src/main/resources/application.yml new file mode 100644 index 0000000..2ae9aa6 --- /dev/null +++ b/spring-cloud-reservation-service/src/main/resources/application.yml @@ -0,0 +1,11 @@ +spring: + application: + name: reservation-service + config: + import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} +--- +spring: + config: + activate: + on-profile: docker + import: configserver:http://config-server:8888 diff --git a/spring-cloud-reservation-service/src/main/resources/bootstrap.yml b/spring-cloud-reservation-service/src/main/resources/bootstrap.yml deleted file mode 100644 index 1891143..0000000 --- a/spring-cloud-reservation-service/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,16 +0,0 @@ -spring: - application: - name: reservation-service - cloud: - config: - uri: http://localhost:8888 - fail-fast: true ---- -spring: - config: - activate: - on-profile: docker - cloud: - config: - uri: http://config-server:8888 - fail-fast: true diff --git a/spring-cloud-reservation-service/src/main/resources/data.sql b/spring-cloud-reservation-service/src/main/resources/data.sql deleted file mode 100644 index 31ac28e..0000000 --- a/spring-cloud-reservation-service/src/main/resources/data.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO RESERVATION (ROOM_ID, GUEST_ID, RES_DATE) VALUES (1, 1, '2020-01-01'); \ No newline at end of file diff --git a/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTests.java b/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTest.java similarity index 86% rename from spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTests.java rename to spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTest.java index 3d73c45..329c5f2 100644 --- a/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTests.java +++ b/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/ReservationServiceApplicationTest.java @@ -4,9 +4,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -@ActiveProfiles("test") @SpringBootTest -class ReservationServiceApplicationTests { +@ActiveProfiles("test") +class ReservationServiceApplicationTest { @Test void contextLoads() { diff --git a/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepositoryTest.java b/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepositoryTest.java new file mode 100644 index 0000000..64f75ec --- /dev/null +++ b/spring-cloud-reservation-service/src/test/java/ca/zhoozhoo/springcloud/reservations/repository/ReservationRepositoryTest.java @@ -0,0 +1,47 @@ +package ca.zhoozhoo.springcloud.reservations.repository; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import ca.zhoozhoo.springcloud.reservations.model.Reservation; +import reactor.test.StepVerifier; + +@SpringBootTest +public class ReservationRepositoryTest { + + @Autowired + private ReservationRepository reservationRepository; + + @Test + public void testFindAll() { + insertReservations(); + + reservationRepository.findAll() + .as(StepVerifier::create) + .expectNextCount(2) + .verifyComplete(); + } + + @Test + public void testDeleteAll() { + insertReservations(); + + reservationRepository.deleteAll() + .as(StepVerifier::create) + .expectNextCount(0) + .verifyComplete(); + } + + public void insertReservations() { + List reservations = Arrays.asList( + new Reservation(null, 1L, 1L, LocalDate.now()), + new Reservation(null, 2L, 2L, LocalDate.now())); + + reservationRepository.saveAll(reservations).subscribe(); + } +} diff --git a/spring-cloud-reservation-service/src/test/resources/application-test.yml b/spring-cloud-reservation-service/src/test/resources/application-test.yml index 54438fa..646e997 100644 --- a/spring-cloud-reservation-service/src/test/resources/application-test.yml +++ b/spring-cloud-reservation-service/src/test/resources/application-test.yml @@ -1,10 +1,15 @@ spring: - jpa: - hibernate: - ddl-auto: none - sql: - init: - schema-locations: - - classpath*:schema.sql - data-locations: - - classpath*:data.sql + cloud: + config: + enabled: false + r2dbc: + url: "r2dbc:h2:mem:///test;DB_CLOSE_DELAY=-1" + name: "sa" + security: + oauth2: + resourceserver: + jwt: + issuer-uri: http://localhost:8180/auth/realms/spring-cloud-gateway-realm +eureka: + client: + enabled: false diff --git a/spring-cloud-reservation-service/src/test/resources/bootstrap-test.yml b/spring-cloud-reservation-service/src/test/resources/bootstrap-test.yml deleted file mode 100644 index 9c01199..0000000 --- a/spring-cloud-reservation-service/src/test/resources/bootstrap-test.yml +++ /dev/null @@ -1,7 +0,0 @@ -spring: - cloud: - config: - enabled: false -eureka: - client: - enabled: false diff --git a/spring-cloud-room-service/pom.xml b/spring-cloud-room-service/pom.xml index 7ec3cc9..951f35b 100644 --- a/spring-cloud-room-service/pom.xml +++ b/spring-cloud-room-service/pom.xml @@ -35,10 +35,6 @@ org.springframework.boot spring-boot-starter-webflux - - org.springframework.security - spring-security-oauth2-client - diff --git a/spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTests.java b/spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTest.java similarity index 88% rename from spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTests.java rename to spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTest.java index c1ce9d5..141864e 100644 --- a/spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTests.java +++ b/spring-cloud-room-service/src/test/java/ca/zhoozhoo/springcloud/rooms/RoomServiceApplicationTest.java @@ -6,7 +6,7 @@ @SpringBootTest @ActiveProfiles("test") -class RoomServiceApplicationTests { +class RoomServiceApplicationTest { @Test void contextLoads() { diff --git a/spring-cloud-room-service/src/test/resources/application-test.yml b/spring-cloud-room-service/src/test/resources/application-test.yml index 6f83937..646e997 100644 --- a/spring-cloud-room-service/src/test/resources/application-test.yml +++ b/spring-cloud-room-service/src/test/resources/application-test.yml @@ -13,5 +13,3 @@ spring: eureka: client: enabled: false - -logging.level.org.springframework: DEBUG