package egovframework.rte.ptl.mvc.handler; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletConfig; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; /** * * 시스템명 : 실행환경시스템 * 서브시스템명 : 화면처리 * 요구사항ID : REQ-RTE-113 * 요구사항명 : 전후처리기능 제공. * 설명 : 웹 요청/응답로직의 전후처리 기능 제공함. * * @author Ham Cheol */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath*:META-INF/spring/handler/test_servlet.xml") public class WebRequestInterceptorTest { @Autowired private ApplicationContext ctx; private DispatcherServlet dispatcher; /** * org.springframework.web.servlet.mvc.annotation.ServletAnnotationControllerTests 를 참조했다. * @throws ServletException */ @Before public void setUp() throws ServletException { this.dispatcher = new DispatcherServlet() { /** * serialVersion UID */ private static final long serialVersionUID = -6801286643507797419L; @Override protected WebApplicationContext createWebApplicationContext(WebApplicationContext parent) throws BeansException { GenericWebApplicationContext genericCtx = new GenericWebApplicationContext(); genericCtx.setParent(ctx); genericCtx.refresh(); return genericCtx; } }; dispatcher.init(new MockServletConfig()); } @Test public void testPrePostHandle() throws ServletException, IOException { MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test.do"); MockHttpServletResponse response = new MockHttpServletResponse(); dispatcher.service(request, response); ArrayList<?> array = (ArrayList<?>) request.getAttribute("interceptor"); assertEquals("OneInterceptor.preHandle", array.get(0)); assertEquals("TwoInterceptor.preHandle", array.get(1)); assertEquals("InterceptorTestController", array.get(2)); assertEquals("TwoInterceptor.postHandle", array.get(3)); assertEquals("OneInterceptor.postHandle", array.get(4)); } }