package com.github.dynamicextensionsalfresco.webscripts;
import static org.mockito.Mockito.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.github.dynamicextensionsalfresco.webscripts.annotations.HttpMethod;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.extensions.surf.util.Content;
import org.springframework.extensions.webscripts.Runtime;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.WebScriptResponse;
import org.springframework.extensions.webscripts.WebScriptSession;
import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest;
import org.springframework.extensions.webscripts.servlet.WebScriptServletResponse;
/**
* Tests the resolving of handler method arguments.
*
* @author Laurens Fridael
*
*/
public class ArgumentResolverTest extends AbstractWebScriptAnnotationsTest {
@Autowired
private ArgumentResolverHandler handler;
@Test
public void testHandleWebScriptRequest() {
handleGet("/handleWebScriptRequest");
verify(handler).handleWebScriptRequest(any(WebScriptRequest.class));
}
@Test
public void testHandleWebScriptResponse() {
handleGet("/handleWebScriptResponse");
verify(handler).handleWebScriptResponse(any(WebScriptResponse.class));
}
@Test
public void testHandleWebScriptSession() {
final Runtime runtime = mock(Runtime.class);
when(runtime.getSession()).thenReturn(mock(WebScriptSession.class));
handleGet("/handleWebScriptSession", new MockWebScriptRequest().runtime(runtime));
verify(handler).handleWebScriptSession(any(WebScriptSession.class));
}
@SuppressWarnings("unchecked")
@Test
public void testHandleMap() {
handleGet("/handleMap");
verify(handler).handleMap(anyMap());
}
@Test
public void testHandleContent() {
final Content content = mock(Content.class);
handleGet("/handleContent", new MockWebScriptRequest().content(content));
verify(handler).handleContent(eq(content));
}
@Test
public void testHandleHttpServletRequest() {
final WebScriptServletRequest nextRequest = mock(WebScriptServletRequest.class);
when(nextRequest.getHttpServletRequest()).thenReturn(mock(HttpServletRequest.class));
handleGet("/handleHttpServletRequest", new MockWebScriptRequest().next(nextRequest));
verify(handler).handleHttpServletRequest(any(HttpServletRequest.class));
}
@Test
public void testHandleHttpServletResponse() {
final WebScriptServletResponse nextResponse = mock(WebScriptServletResponse.class);
when(nextResponse.getHttpServletResponse()).thenReturn(mock(HttpServletResponse.class));
handleRequest(HttpMethod.GET, "/handleHttpServletResponse", new MockWebScriptRequest(),
new MockWebScriptResponse().next(nextResponse));
verify(handler).handleHttpServletResponse(any(HttpServletResponse.class));
}
}