package com.mozilla.grouperfish.rest.jaxrs;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Response;
import org.testng.annotations.Test;
import com.mozilla.grouperfish.naming.Scope;
import com.mozilla.grouperfish.rest.jaxrs.DocumentsResource;
import com.mozilla.grouperfish.rest.jaxrs.RestHelper;
import com.mozilla.grouperfish.rest.jaxrs.ConfigurationsResource.TransformConfigsResource;
import com.mozilla.grouperfish.services.api.Grid;
import com.mozilla.grouperfish.services.mock.MockGrid;
@Test(groups="unit")
public class RestHelperTest {
private final Grid grid = new MockGrid();
private final Scope NS = new Scope("unit-test", grid);
public void testPutAny() throws IOException {
final HttpServletRequest mock = mock(HttpServletRequest.class);
final String body = "{\"id\": \"mydoc\"}";
when(mock.getMethod()).thenReturn("PUT");
when(mock.getContentLength()).thenReturn(body.length());
when(mock.getInputStream()).thenReturn(new ServletInputStream() {
final ByteArrayInputStream byteStream = new ByteArrayInputStream(body.getBytes());
@Override
public int read() throws IOException {
return byteStream.read();
}
});
final Response response = RestHelper.putAny(DocumentsResource.class, NS, "mydoc", mock);
assertNotNull(response);
assertEquals(201, response.getStatus());
}
public void testDeleteAny() throws IOException {
final HttpServletRequest mock = mock(HttpServletRequest.class);
when(mock.getMethod()).thenReturn("DELETE");
final Response response = RestHelper.deleteAny(DocumentsResource.class, NS, "somedoc", mock);
assertNotNull(response);
assertEquals(204, response.getStatus());
}
public void testGetAny() {
// Put stuff in, to get afterwards:
NS.documents().put("myGetDoc", "{\"id\": \"myGetDoc\"}");
final HttpServletRequest mock = mock(HttpServletRequest.class);
final Response response = RestHelper.getAny(DocumentsResource.class, NS, "myGetDoc", mock);
assertNotNull(response);
assertEquals(200, response.getStatus());
final Response response404 = RestHelper.getAny(DocumentsResource.class, NS, "no such doc", mock);
assertNotNull(response404);
assertEquals(404, response404.getStatus());
}
public void testListAny() {
final HttpServletRequest mock = mock(HttpServletRequest.class);
final Response response = RestHelper.listAny(TransformConfigsResource.class, NS, mock);
assertNotNull(response);
assertEquals(200, response.getStatus());
}
}