package org.everrest.assured;
import com.jayway.restassured.RestAssured;
import org.everrest.core.Filter;
import org.everrest.core.GenericContainerResponse;
import org.everrest.core.ResponseFilter;
import org.everrest.sample.book.Book;
import org.everrest.sample.book.BookService;
import org.everrest.sample.book.BookStorage;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Providers;
import static org.hamcrest.Matchers.equalTo;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@Listeners(value = {EverrestJetty.class, MockitoTestNGListener.class})
public class ResponseFilterTest {
@Filter
public static class ResponseFilter1 implements ResponseFilter {
@Context
private UriInfo uriInfo;
@Context
private HttpHeaders httpHeaders;
private Providers providers;
private HttpServletRequest httpRequest;
public ResponseFilter1(@Context Providers providers, @Context HttpServletRequest httpRequest) {
this.providers = providers;
this.httpRequest = httpRequest;
}
public void doFilter(GenericContainerResponse response) {
if (uriInfo != null && httpHeaders != null && providers != null && httpRequest != null) {
response.setResponse(Response.status(200).entity("to be or not to be").type("text/plain").build());
}
}
}
ResponseFilter1 responseFilter1;
@Mock
private BookStorage bookStorage;
@InjectMocks
private BookService bookService;
@Test
public void shouldChangeMethodName() throws Exception {
Book book = new Book();
book.setId("123-1235-555");
when(bookStorage.getBook(eq("123-1235-555"))).thenReturn(book);
//unsecure call to rest service
RestAssured.given().
pathParam("id", "123-1235-555").
when().
get("/books/{id}").
then().statusCode(200).contentType("text/plain").body(equalTo("to be or not to be"));
verify(bookStorage).getBook(eq("123-1235-555"));
}
@Test
public void shouldBeAbleToWorkTwice() throws Exception {
Book book = new Book();
book.setId("123-1235-555");
when(bookStorage.getBook(eq("123-1235-555"))).thenReturn(book);
//unsecure call to rest service
RestAssured.given().
pathParam("id", "123-1235-555").
when().
get("/books/{id}").
then().statusCode(200).contentType("text/plain").body(equalTo("to be or not to be"));
verify(bookStorage).getBook(eq("123-1235-555"));
}
}