From 8ed798e22de9bc444044be429450a4a41cb78731 Mon Sep 17 00:00:00 2001 From: freelansam <79205526+freelansam@users.noreply.github.com> Date: Sun, 26 Jun 2022 21:12:01 +0530 Subject: [PATCH] JAVA-12465: Look into spring-cloud-rest module (#12406) * JAVA-12465: Look into spring-cloud-rest module * JAVA-12465: updated README to include ebook reference --- spring-cloud-modules/pom.xml | 3 +- .../spring-cloud-bootstrap/README.md | 4 +- .../spring-cloud-rest/.gitignore | 24 --- .../spring-cloud-rest/README.md | 5 - .../application-config/discovery.properties | 16 -- .../application-config/resource.properties | 20 --- .../spring-cloud-rest/pom.xml | 52 ------ .../spring-cloud-rest-books-api/pom.xml | 78 --------- .../com/baeldung/BooksApiApplication.java | 14 -- .../main/java/com/baeldung/SessionConfig.java | 8 - .../persistence/dao/BookRepository.java | 13 -- .../com/baeldung/persistence/model/Book.java | 111 ------------- .../src/main/resources/bootstrap.properties | 9 - .../src/main/resources/logback.xml | 13 -- .../com/baeldung/BooksApiIntegrationTest.java | 43 ----- .../java/com/baeldung/RestApiLiveTest.java | 156 ------------------ .../java/com/baeldung/SessionLiveTest.java | 70 -------- .../com/baeldung/SpringContextLiveTest.java | 22 --- .../src/test/resources/application.properties | 19 --- .../.gitignore | 24 --- .../spring-cloud-rest-config-server/pom.xml | 58 ------- .../SpringCloudRestConfigApplication.java | 17 -- .../src/main/resources/application.properties | 11 -- .../src/main/resources/logback.xml | 13 -- .../java/com/baeldung/SpringContextTest.java | 15 -- .../.gitignore | 24 --- .../pom.xml | 66 -------- .../main/java/com/baeldung/SessionConfig.java | 8 - .../SpringCloudRestServerApplication.java | 14 -- .../src/main/resources/bootstrap.properties | 4 - .../src/main/resources/logback.xml | 13 -- .../SpringCloudRestServerIntegrationTest.java | 42 ----- .../com/baeldung/SpringContextLiveTest.java | 21 --- .../spring-cloud-rest-reviews-api/pom.xml | 88 ---------- .../baeldung/BookReviewsApiApplication.java | 14 -- .../main/java/com/baeldung/SessionConfig.java | 8 - .../persistence/dao/BookReviewRepository.java | 13 -- .../persistence/model/BookReview.java | 120 -------------- .../src/main/resources/bootstrap.properties | 9 - .../src/main/resources/logback.xml | 13 -- .../BookReviewsApiIntegrationTest.java | 43 ----- .../java/com/baeldung/RestApiLiveTest.java | 147 ----------------- .../com/baeldung/SpringContextLiveTest.java | 22 --- .../src/test/resources/application.properties | 19 --- 44 files changed, 3 insertions(+), 1503 deletions(-) delete mode 100644 spring-cloud-modules/spring-cloud-rest/.gitignore delete mode 100644 spring-cloud-modules/spring-cloud-rest/README.md delete mode 100644 spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/application-config/resource.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/pom.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.gitignore delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/SessionConfig.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java delete mode 100644 spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties diff --git a/spring-cloud-modules/pom.xml b/spring-cloud-modules/pom.xml index e725b366c6..77c45eb640 100644 --- a/spring-cloud-modules/pom.xml +++ b/spring-cloud-modules/pom.xml @@ -22,8 +22,7 @@ spring-cloud-eureka spring-cloud-hystrix spring-cloud-bootstrap - spring-cloud-ribbon-client - spring-cloud-rest + spring-cloud-ribbon-client spring-cloud-zookeeper spring-cloud-gateway spring-cloud-stream diff --git a/spring-cloud-modules/spring-cloud-bootstrap/README.md b/spring-cloud-modules/spring-cloud-bootstrap/README.md index 6923e951ff..252058be1f 100644 --- a/spring-cloud-modules/spring-cloud-bootstrap/README.md +++ b/spring-cloud-modules/spring-cloud-bootstrap/README.md @@ -1,6 +1,6 @@ -## Spring Cloud Bootstrap +## Guide to Microservices: with Spring Boot and Spring Cloud Ebook -This module contains articles about bootstrapping Spring Cloud applications +This module contains articles about bootstrapping Spring Cloud applications that are part of the Guide to Microservices: with Spring Boot and Spring Cloud Ebook. ### Relevant Articles: diff --git a/spring-cloud-modules/spring-cloud-rest/.gitignore b/spring-cloud-modules/spring-cloud-rest/.gitignore deleted file mode 100644 index 2af7cefb0a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -target/ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -nbproject/private/ -build/ -nbbuild/ -dist/ -nbdist/ -.nb-gradle/ \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/README.md b/spring-cloud-modules/spring-cloud-rest/README.md deleted file mode 100644 index 25d62007b6..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Spring Cloud REST - -This module contains articles about RESTful APIs with Spring Cloud - -Code for an ebook - "A REST API with Spring Boot and Spring Cloud" diff --git a/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties b/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties deleted file mode 100644 index 2f2a56248f..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/application-config/discovery.properties +++ /dev/null @@ -1,16 +0,0 @@ -spring.application.name=discovery -server.port=8761 - -#### cloud -eureka.instance.hostname=localhost -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} -eureka.client.registerWithEureka=false -eureka.client.fetchRegistry=false - -#### security -security.basic.enabled=true -security.basic.path=/** -security.user.name=system -security.user.password=systemPass -security.user.role=ADMIN -security.sessions=always \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties b/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties deleted file mode 100644 index 759bb87895..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/application-config/resource.properties +++ /dev/null @@ -1,20 +0,0 @@ -spring.application.name=resource -#server.port=0 - -#### cloud -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} -eureka.instance.preferIpAddress=true - -#### persistence -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:cloud_rest;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.username=sa -spring.datasource.password= - -#### security -security.basic.enabled=true -security.basic.path=/** -security.user.name=user -security.user.password=userPass -security.user.role=USER -security.sessions=always \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/pom.xml b/spring-cloud-modules/spring-cloud-rest/pom.xml deleted file mode 100644 index 0b3cda772a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest - 1.0.0-SNAPSHOT - spring-cloud-rest - pom - - - com.baeldung.spring.cloud - spring-cloud-modules - 1.0.0-SNAPSHOT - - - - spring-cloud-rest-config-server - spring-cloud-rest-discovery-server - spring-cloud-rest-books-api - spring-cloud-rest-reviews-api - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source} - ${maven.compiler.target} - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - - - - - 1.4.2.RELEASE - 1.8 - 1.8 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml deleted file mode 100644 index c7ff472655..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-books-api - 0.0.1-SNAPSHOT - spring-cloud-rest-books-api - jar - Simple books API - - - com.baeldung - parent-boot-1 - 0.0.1-SNAPSHOT - ../../../parent-boot-1 - - - - - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - Camden.SR4 - pom - import - - - - - - - org.springframework.cloud - spring-cloud-starter-config - - - org.springframework.cloud - spring-cloud-starter-eureka - - - org.springframework.boot - spring-boot-starter-data-jpa - - - com.h2database - h2 - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-data-rest - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-data-redis - - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java deleted file mode 100644 index abcbabe737..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/BooksApiApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; - -@SpringBootApplication -@EnableEurekaClient -public class BooksApiApplication { - - public static void main(String[] args) { - SpringApplication.run(BooksApiApplication.class, args); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java deleted file mode 100644 index 6c984fb6d5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/SessionConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung; - -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; - -@EnableRedisHttpSession -public class SessionConfig extends AbstractHttpSessionApplicationInitializer { -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java deleted file mode 100644 index 434d4332f7..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/dao/BookRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.repository.CrudRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.data.rest.core.annotation.RepositoryRestResource; - -@RepositoryRestResource(collectionResourceRel = "books", path = "books") -public interface BookRepository extends CrudRepository { - Page findByTitle(@Param("title") String title, Pageable pageable); -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java deleted file mode 100644 index 26fe3625ec..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/java/com/baeldung/persistence/model/Book.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.baeldung.persistence.model; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - -@Entity -public class Book { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private long id; - - @Column(nullable = false, unique = true) - private String title; - - @Column(nullable = false) - private String author; - - // - - public Book() { - super(); - } - - public Book(String title, String author) { - super(); - this.title = title; - this.author = author; - } - - // - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - // - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) + ((author == null) ? 0 : author.hashCode()); - result = (prime * result) + (int) (id ^ (id >>> 32)); - result = (prime * result) + ((title == null) ? 0 : title.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final Book other = (Book) obj; - if (author == null) { - if (other.author != null) { - return false; - } - } else if (!author.equals(other.author)) { - return false; - } - if (id != other.id) { - return false; - } - - if (title == null) { - if (other.title != null) { - return false; - } - } else if (!title.equals(other.title)) { - return false; - } - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Book [id=").append(id).append(", title=").append(title).append(", author=").append(author).append("]"); - return builder.toString(); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties deleted file mode 100644 index 2cb3b71ca7..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,9 +0,0 @@ -spring.cloud.config.name=resource -spring.cloud.config.discovery.service-id=config -spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=configUser -spring.cloud.config.password=configPassword - -eureka.client.serviceUrl.defaultZone=http://system:systemPass@localhost:8761/eureka - -server.port=8084 \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java deleted file mode 100644 index 2a90b668cb..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/BooksApiIntegrationTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class BooksApiIntegrationTest { - - @Test - public void contextLoads() { - } - - @EnableRedisHttpSession - @Configuration - static class Config { - - @Bean - @SuppressWarnings("unchecked") - public RedisSerializer defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java deleted file mode 100644 index 4184b3aef7..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/RestApiLiveTest.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.baeldung; - -import static io.restassured.RestAssured.preemptive; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BooksApiApplication; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import com.baeldung.persistence.model.Book; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BooksApiApplication.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class RestApiLiveTest { - - private static final String API_URI = "http://localhost:8084/books"; - - @Before - public void setUp() { - RestAssured.authentication = preemptive().basic("user", "userPass"); - } - - // GET - - @Test - public void whenGetAllBooks_thenOK() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - } - - @Test - public void whenGetCreatedBookById_thenOK() { - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - final Response response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(book.getTitle(), response.jsonPath().get("title")); - } - - @Test - public void whenGetCreatedBookByName_thenOK() { - final Book book = createRandomBook(); - createBookAsUri(book); - - final Response response = RestAssured.get(API_URI + "/search/findByTitle?title=" + book.getTitle()); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") > 0); - } - - @Test - public void whenGetNotExistBookById_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenGetNotExistBookByName_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/search/findByTitle?title=" + randomAlphabetic(20)); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") == 0); - } - - // POST - @Test - public void whenCreateNewBook_thenCreated() { - final Book book = createRandomBook(); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CREATED.value(), response.getStatusCode()); - } - - @Test - public void whenCreateDuplicateBook_thenError() { - final Book book = createRandomBook(); - createBookAsUri(book); - - // duplicate - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenInvalidBook_thenError() { - final Book book = createRandomBook(); - book.setAuthor(null); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenUpdateCreatedBook_thenUpdated() { - // create - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - // update - book.setAuthor("newAuthor"); - Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).put(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // check if changes saved - response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals("newAuthor", response.jsonPath().get("author")); - - } - - @Test - public void whenDeleteCreatedBook_thenOk() { - // create - final Book book = createRandomBook(); - final String location = createBookAsUri(book); - - // delete - Response response = RestAssured.delete(location); - assertEquals(HttpStatus.NO_CONTENT.value(), response.getStatusCode()); - - // confirm it was deleted - response = RestAssured.get(location); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenDeleteNotExistBook_thenError() { - final Response response = RestAssured.delete(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - // =============================== Util - - private Book createRandomBook() { - final Book book = new Book(); - book.setTitle(randomAlphabetic(10)); - book.setAuthor(randomAlphabetic(15)); - return book; - } - - private String createBookAsUri(Book book) { - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(book).post(API_URI); - return response.jsonPath().get("_links.self.href"); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java deleted file mode 100644 index 9869a650b4..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SessionLiveTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BooksApiApplication; -import com.baeldung.SessionConfig; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import java.util.Set; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.test.context.junit4.SpringRunner; - -import redis.clients.jedis.Jedis; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BooksApiApplication.class, SessionConfig.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class SessionLiveTest { - - private Jedis jedis; - private static final String API_URI = "http://localhost:8084/books"; - - @Before - public void setUp() { - jedis = new Jedis("localhost", 6379); - jedis.flushAll(); - } - - @Test - public void whenStart_thenNoSessionsExist() { - final Set result = jedis.keys("*"); - assertEquals(0, result.size()); - } - - @Test - public void givenUnauthorizeUser_whenAccessResources_then_unAuthorized() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.UNAUTHORIZED.value(), response.getStatusCode()); - } - - @Test - public void givenAuthorizedUser_whenDeleteSession_thenUnauthorized() { - // authorize User - Response response = RestAssured.given().auth().preemptive().basic("user", "userPass").get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - final String sessionCookie = response.getCookie("SESSION"); - - // check redis - final Set redisResult = jedis.keys("*"); - assertTrue(redisResult.size() > 0); - - // login with cookie - response = RestAssured.given().cookie("SESSION", sessionCookie).get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // empty redis - jedis.flushAll(); - - // login with cookie again - response = RestAssured.given().cookie("SESSION", sessionCookie).get(API_URI); - assertEquals(HttpStatus.UNAUTHORIZED.value(), response.getStatusCode()); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 783c2f99c0..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung; - -import com.baeldung.BooksApiApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = BooksApiApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties deleted file mode 100644 index ece9ca1d94..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-books-api/src/test/resources/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -#### cloud -spring.application.name=spring-cloud-eureka-client -server.port=8084 -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} -eureka.instance.preferIpAddress=true - -#### persistence -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:cloud_rest;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.username=sa -spring.datasource.password= - -#### security -security.basic.enabled=true -security.basic.path=/** -security.user.name=user -security.user.password=userPass -security.user.role=USER -security.sessions=always \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.gitignore b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.gitignore deleted file mode 100644 index 2af7cefb0a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -target/ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -nbproject/private/ -build/ -nbbuild/ -dist/ -nbdist/ -.nb-gradle/ \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml deleted file mode 100644 index 9180283c2d..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-config-server - 0.0.1-SNAPSHOT - spring-cloud-rest-config-server - jar - Spring Cloud REST configuration server - - - com.baeldung - parent-boot-1 - 0.0.1-SNAPSHOT - ../../../parent-boot-1 - - - - - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - - - - - org.springframework.cloud - spring-cloud-config-server - - - org.springframework.cloud - spring-cloud-starter-eureka - - - org.springframework.boot - spring-boot-starter-security - - - - - Camden.SR4 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java deleted file mode 100644 index d49a21f4ed..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/java/com/baeldung/SpringCloudRestConfigApplication.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.config.server.EnableConfigServer; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; - -@SpringBootApplication -@EnableConfigServer -@EnableEurekaClient -public class SpringCloudRestConfigApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringCloudRestConfigApplication.class, args); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties deleted file mode 100644 index 4071dc81ea..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/application.properties +++ /dev/null @@ -1,11 +0,0 @@ -server.port=8081 -spring.application.name=config - -spring.cloud.config.server.git.uri=${HOME}/application-config - -eureka.client.region = default -eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} - -security.user.name=configUser -security.user.password=configPassword \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java deleted file mode 100644 index 1548d6a95e..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-config-server/src/test/java/com/baeldung/SpringContextTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringCloudRestConfigApplication.class) -public class SpringContextTest { - @Test - public void contextLoads() { - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore deleted file mode 100644 index 2af7cefb0a..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -target/ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -nbproject/private/ -build/ -nbbuild/ -dist/ -nbdist/ -.nb-gradle/ \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml deleted file mode 100644 index eb65395821..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-discovery-server - 0.0.1-SNAPSHOT - spring-cloud-rest-discovery-server - jar - Spring Cloud REST server - - - com.baeldung - parent-boot-1 - 0.0.1-SNAPSHOT - ../../../parent-boot-1 - - - - - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - - - - - org.springframework.cloud - spring-cloud-starter-config - - - org.springframework.cloud - spring-cloud-starter-eureka-server - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-data-redis - - - - - Edgware.SR4 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java deleted file mode 100644 index 6c984fb6d5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SessionConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung; - -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; - -@EnableRedisHttpSession -public class SessionConfig extends AbstractHttpSessionApplicationInitializer { -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java deleted file mode 100644 index 1cc0f2982c..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/java/com/baeldung/SpringCloudRestServerApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; - -@SpringBootApplication -@EnableEurekaServer -public class SpringCloudRestServerApplication { - - public static void main(String[] args) { - SpringApplication.run(SpringCloudRestServerApplication.class, args); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties deleted file mode 100644 index d31caf55b5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,4 +0,0 @@ -spring.cloud.config.name=discovery -spring.cloud.config.uri=http://localhost:8081 -spring.cloud.config.username=configUser -spring.cloud.config.password=configPassword \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java deleted file mode 100644 index 1ee895b6b1..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringCloudRestServerIntegrationTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class SpringCloudRestServerIntegrationTest { - @Test - public void contextLoads() { - } - - @EnableRedisHttpSession - @Configuration - static class Config { - - @Bean - @SuppressWarnings("unchecked") - public RedisSerializer defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 92acd482cd..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-discovery-server/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringCloudRestServerApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml deleted file mode 100644 index a8d5837320..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - 4.0.0 - com.baeldung - spring-cloud-rest-reviews-api - 0.0.1-SNAPSHOT - spring-cloud-rest-reviews-api - jar - Simple reviews API - - - com.baeldung - parent-boot-1 - 0.0.1-SNAPSHOT - ../../../parent-boot-1 - - - - - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - - - org.springframework.cloud - spring-cloud-dependencies - Camden.SR4 - pom - import - - - - - - - org.springframework.cloud - spring-cloud-starter-config - - - org.springframework.cloud - spring-cloud-starter-eureka - - - org.springframework.boot - spring-boot-starter-data-jpa - - - com.h2database - h2 - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-data-rest - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.session - spring-session - - - org.springframework.boot - spring-boot-starter-data-redis - - - com.github.kstyrc - embedded-redis - ${embedded-redis.version} - - - - - 3.0.1 - 0.6 - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java deleted file mode 100644 index 707c97cb69..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/BookReviewsApiApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; - -@SpringBootApplication -@EnableEurekaClient -public class BookReviewsApiApplication { - - public static void main(String[] args) { - SpringApplication.run(BookReviewsApiApplication.class, args); - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/SessionConfig.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/SessionConfig.java deleted file mode 100644 index 6c984fb6d5..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/SessionConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung; - -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; - -@EnableRedisHttpSession -public class SessionConfig extends AbstractHttpSessionApplicationInitializer { -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java deleted file mode 100644 index 1f29b66867..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/dao/BookReviewRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.BookReview; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.repository.CrudRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.data.rest.core.annotation.RepositoryRestResource; - -@RepositoryRestResource(collectionResourceRel = "reviews", path = "reviews") -public interface BookReviewRepository extends CrudRepository { - Page findByBookId(@Param("bookId") long bookId, Pageable pageable); -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java deleted file mode 100644 index 4b6ff7f32b..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/java/com/baeldung/persistence/model/BookReview.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.baeldung.persistence.model; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; - -@Entity -public class BookReview { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private long id; - - private String content; - - private int rating; - - @Column(nullable = false) - private Long bookId; - - // - - public BookReview() { - super(); - } - - public BookReview(String content, int rating, long bookId) { - super(); - this.content = content; - this.rating = rating; - this.bookId = bookId; - } - - // - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public int getRating() { - return rating; - } - - public void setRating(int rating) { - this.rating = rating; - } - - public Long getBookId() { - return bookId; - } - - public void setBookId(Long bookId) { - this.bookId = bookId; - } - - // - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = (prime * result) + (int) (bookId ^ (bookId >>> 32)); - result = (prime * result) + ((content == null) ? 0 : content.hashCode()); - result = (prime * result) + (int) (id ^ (id >>> 32)); - result = (prime * result) + rating; - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final BookReview other = (BookReview) obj; - if (bookId != other.bookId) { - return false; - } - if (content == null) { - if (other.content != null) { - return false; - } - } else if (!content.equals(other.content)) { - return false; - } - if (id != other.id) { - return false; - } - if (rating != other.rating) { - return false; - } - return true; - } - - // - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("BookReview [id=").append(id).append(", content=").append(content).append(", rating=").append(rating).append(", bookId=").append(bookId).append("]"); - return builder.toString(); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties deleted file mode 100644 index d6e642afcb..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,9 +0,0 @@ -spring.cloud.config.name=resource -spring.cloud.config.discovery.service-id=config -spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=configUser -spring.cloud.config.password=configPassword - -eureka.client.serviceUrl.defaultZone=http://system:systemPass@localhost:8761/eureka - -server.port=8085 \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java deleted file mode 100644 index 7d7867f9ac..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/BookReviewsApiIntegrationTest.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.connection.RedisConnection; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class BookReviewsApiIntegrationTest { - - @Test - public void contextLoads() { - } - - @EnableRedisHttpSession - @Configuration - static class Config { - - @Bean - @SuppressWarnings("unchecked") - public RedisSerializer defaultRedisSerializer() { - return Mockito.mock(RedisSerializer.class); - } - - @Bean - public RedisConnectionFactory connectionFactory() { - - RedisConnectionFactory factory = Mockito.mock(RedisConnectionFactory.class); - RedisConnection connection = Mockito.mock(RedisConnection.class); - Mockito.when(factory.getConnection()).thenReturn(connection); - - return factory; - } - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java deleted file mode 100644 index 88f845adcc..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/RestApiLiveTest.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.baeldung; - -import static io.restassured.RestAssured.preemptive; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import com.baeldung.BookReviewsApiApplication; -import io.restassured.RestAssured; -import io.restassured.response.Response; - -import com.baeldung.persistence.model.BookReview; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = { BookReviewsApiApplication.class }, webEnvironment = WebEnvironment.DEFINED_PORT) -public class RestApiLiveTest { - - private static final String API_URI = "http://localhost:8085/reviews"; - - @Before - public void setUp() { - RestAssured.authentication = preemptive().basic("user", "userPass"); - } - - // GET - - @Test - public void whenGetAllReviews_thenOK() { - final Response response = RestAssured.get(API_URI); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - } - - @Test - public void whenGetCreatedReviewById_thenOK() { - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - final Response response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(review.getContent(), response.jsonPath().get("content")); - } - - @Test - public void whenGetCreatedReviewByBookId_thenOK() { - final BookReview review = createRandomReview(); - createReviewAsUri(review); - - final Response response = RestAssured.get(API_URI + "/search/findByBookId?bookId=" + review.getBookId()); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") > 0); - } - - @Test - public void whenGetNotExistReviewById_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenGetNotExistReviewByBookId_thenNotFound() { - final Response response = RestAssured.get(API_URI + "/search/findByBookId?bookId=" + randomNumeric(4)); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertTrue(response.jsonPath().getLong("page.totalElements") == 0); - } - - // POST - @Test - public void whenCreateNewReview_thenCreated() { - final BookReview review = createRandomReview(); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - assertEquals(HttpStatus.CREATED.value(), response.getStatusCode()); - } - - @Test - public void whenCreateInvalidReview_thenError() { - final BookReview review = createRandomReview(); - review.setBookId(null); - - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - assertEquals(HttpStatus.CONFLICT.value(), response.getStatusCode()); - } - - @Test - public void whenUpdateCreatedReview_thenUpdated() { - // create - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - // update - review.setRating(4); - Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).put(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - - // check if changes saved - response = RestAssured.get(location); - assertEquals(HttpStatus.OK.value(), response.getStatusCode()); - assertEquals(4, response.jsonPath().getInt("rating")); - - } - - @Test - public void whenDeleteCreatedReview_thenOk() { - // create - final BookReview review = createRandomReview(); - final String location = createReviewAsUri(review); - - // delete - Response response = RestAssured.delete(location); - assertEquals(HttpStatus.NO_CONTENT.value(), response.getStatusCode()); - - // confirm it was deleted - response = RestAssured.get(location); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - @Test - public void whenDeleteNotExistReview_thenError() { - final Response response = RestAssured.delete(API_URI + "/" + randomNumeric(4)); - assertEquals(HttpStatus.NOT_FOUND.value(), response.getStatusCode()); - } - - // =============================== Util - - private BookReview createRandomReview() { - final BookReview review = new BookReview(); - review.setContent(randomAlphabetic(10)); - review.setRating(3); - review.setBookId(1L); - return review; - } - - private String createReviewAsUri(BookReview review) { - final Response response = RestAssured.given().contentType(MediaType.APPLICATION_JSON_VALUE).body(review).post(API_URI); - return response.jsonPath().get("_links.self.href"); - } - -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 6bb75ed1eb..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/java/com/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung; - -import com.baeldung.BookReviewsApiApplication; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -/** - * - * This Live Test requires: - * * A Redis instance running in port 6379 (e.g. using `docker run --name some-redis -p 6379:6379 -d redis`) - * - */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = BookReviewsApiApplication.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties b/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties deleted file mode 100644 index e69cb2f555..0000000000 --- a/spring-cloud-modules/spring-cloud-rest/spring-cloud-rest-reviews-api/src/test/resources/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -#### cloud -spring.application.name=spring-cloud-eureka-client -server.port=8085 -eureka.client.serviceUrl.defaultZone=${EUREKA_URI:http://system:systemPass@localhost:8761/eureka} -eureka.instance.preferIpAddress=true - -#### persistence -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:cloud_rest;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.username=sa -spring.datasource.password= - -#### security -security.basic.enabled=true -security.basic.path=/** -security.user.name=user -security.user.password=userPass -security.user.role=USER -security.sessions=always \ No newline at end of file