/**
*
*/
package org.minnal.instrument.resource.metadata.handler;
import static org.mockito.Mockito.mock;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HEAD;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.OPTIONS;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import org.minnal.instrument.resource.metadata.ResourceMetaData;
import org.minnal.instrument.resource.metadata.ResourceMethodMetaData;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author ganeshs
*
*/
public class HttpMethodAnnotationHandlerTest {
private ResourceMetaData metaData;
@BeforeMethod
public void setup() {
metaData = new ResourceMetaData(DummyResource.class, "/dummy");
}
@Test
public void shouldHandleGETAnnotation() throws Exception {
GETAnnotationHandler handler = new GETAnnotationHandler();
handler.handle(metaData, mock(GET.class), DummyResource.class.getMethod("get"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.GET, DummyResource.class.getMethod("get")));
}
@Test
public void shouldHandleGETAnnotationWithPath() throws Exception {
GETAnnotationHandler handler = new GETAnnotationHandler();
handler.handle(metaData, mock(GET.class), DummyResource.class.getMethod("getWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/get", HttpMethod.GET, DummyResource.class.getMethod("getWithPath")));
}
@Test
public void shouldHandlePOSTAnnotation() throws Exception {
POSTAnnotationHandler handler = new POSTAnnotationHandler();
handler.handle(metaData, mock(POST.class), DummyResource.class.getMethod("post"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.POST, DummyResource.class.getMethod("post")));
}
@Test
public void shouldHandlePOSTAnnotationWithPath() throws Exception {
POSTAnnotationHandler handler = new POSTAnnotationHandler();
handler.handle(metaData, mock(POST.class), DummyResource.class.getMethod("postWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/post", HttpMethod.POST, DummyResource.class.getMethod("postWithPath")));
}
@Test
public void shouldHandlePUTAnnotation() throws Exception {
PUTAnnotationHandler handler = new PUTAnnotationHandler();
handler.handle(metaData, mock(PUT.class), DummyResource.class.getMethod("put"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.PUT, DummyResource.class.getMethod("put")));
}
@Test
public void shouldHandlePUTAnnotationWithPath() throws Exception {
PUTAnnotationHandler handler = new PUTAnnotationHandler();
handler.handle(metaData, mock(PUT.class), DummyResource.class.getMethod("putWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/put", HttpMethod.PUT, DummyResource.class.getMethod("putWithPath")));
}
@Test
public void shouldHandleDELETEAnnotation() throws Exception {
DELETEAnnotationHandler handler = new DELETEAnnotationHandler();
handler.handle(metaData, mock(DELETE.class), DummyResource.class.getMethod("delete"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.DELETE, DummyResource.class.getMethod("delete")));
}
@Test
public void shouldHandleDELETEAnnotationWithPath() throws Exception {
DELETEAnnotationHandler handler = new DELETEAnnotationHandler();
handler.handle(metaData, mock(DELETE.class), DummyResource.class.getMethod("deleteWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/delete", HttpMethod.DELETE, DummyResource.class.getMethod("deleteWithPath")));
}
@Test
public void shouldHandleHEADAnnotation() throws Exception {
HEADAnnotationHandler handler = new HEADAnnotationHandler();
handler.handle(metaData, mock(HEAD.class), DummyResource.class.getMethod("head"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.HEAD, DummyResource.class.getMethod("head")));
}
@Test
public void shouldHandleHEADAnnotationWithPath() throws Exception {
HEADAnnotationHandler handler = new HEADAnnotationHandler();
handler.handle(metaData, mock(HEAD.class), DummyResource.class.getMethod("headWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/head", HttpMethod.HEAD, DummyResource.class.getMethod("headWithPath")));
}
@Test
public void shouldHandleOPTIONSAnnotation() throws Exception {
OPTIONSAnnotationHandler handler = new OPTIONSAnnotationHandler();
handler.handle(metaData, mock(OPTIONS.class), DummyResource.class.getMethod("options"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy", HttpMethod.OPTIONS, DummyResource.class.getMethod("options")));
}
@Test
public void shouldHandleOPTIONSAnnotationWithPath() throws Exception {
OPTIONSAnnotationHandler handler = new OPTIONSAnnotationHandler();
handler.handle(metaData, mock(OPTIONS.class), DummyResource.class.getMethod("optionsWithPath"));
assertTrue(! metaData.getResourceMethods().isEmpty());
assertEquals(metaData.getResourceMethods().iterator().next(), new ResourceMethodMetaData("/dummy/options", HttpMethod.OPTIONS, DummyResource.class.getMethod("optionsWithPath")));
}
@Path("/dummy")
public static class DummyResource {
@GET
public void get() {}
@GET
@Path("/get")
public void getWithPath() {}
@PUT
public void put() {}
@PUT
@Path("/put")
public void putWithPath() {}
@POST
public void post() {}
@POST
@Path("/post")
public void postWithPath() {}
@DELETE
public void delete() {}
@DELETE
@Path("/delete")
public void deleteWithPath() {}
@HEAD
public void head() {}
@HEAD
@Path("/head")
public void headWithPath() {}
@OPTIONS
public void options() {}
@OPTIONS
@Path("/options")
public void optionsWithPath() {}
}
}