[JAVA-632] Standardizing packages from org.baeldung to com.baeldung: spring-cloud-rest
This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
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<Object> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
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");
|
||||
}
|
||||
|
||||
}
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
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<String> 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<String> 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());
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
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() {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user