001: package com.mockrunner.test.web;
002:
003: import javax.servlet.Servlet;
004: import javax.servlet.ServletContext;
005: import javax.servlet.ServletRequest;
006: import javax.servlet.ServletResponse;
007: import javax.servlet.http.HttpServletRequest;
008: import javax.servlet.http.HttpServletRequestWrapper;
009: import javax.servlet.http.HttpServletResponse;
010: import javax.servlet.http.HttpServletResponseWrapper;
011: import javax.servlet.jsp.JspApplicationContext;
012: import javax.servlet.jsp.JspEngineInfo;
013: import javax.servlet.jsp.JspFactory;
014: import javax.servlet.jsp.PageContext;
015:
016: import com.mockrunner.mock.web.MockFilterChain;
017: import com.mockrunner.mock.web.MockFilterConfig;
018: import com.mockrunner.mock.web.MockHttpServletRequest;
019: import com.mockrunner.mock.web.MockHttpServletResponse;
020: import com.mockrunner.mock.web.MockHttpSession;
021: import com.mockrunner.mock.web.MockJspFactory;
022: import com.mockrunner.mock.web.MockPageContext;
023: import com.mockrunner.mock.web.MockServletConfig;
024: import com.mockrunner.mock.web.MockServletContext;
025: import com.mockrunner.mock.web.WebMockObjectFactory;
026:
027: import junit.framework.TestCase;
028:
029: public class WebMockObjectFactoryTest extends TestCase {
030: public void testDifferentMockObjects() {
031: WebMockObjectFactory factory1 = new WebMockObjectFactory();
032: WebMockObjectFactory factory2 = new WebMockObjectFactory();
033: assertNotSame(factory1.getMockRequest(), factory2
034: .getMockRequest());
035: assertNotSame(factory1.getMockResponse(), factory2
036: .getMockResponse());
037: assertNotSame(factory1.getMockSession(), factory2
038: .getMockSession());
039: assertNotSame(factory1.getMockServletConfig(), factory2
040: .getMockServletConfig());
041: assertNotSame(factory1.getMockServletContext(), factory2
042: .getMockServletContext());
043: }
044:
045: public void testMockObjectsWithSameContext() {
046: WebMockObjectFactory factory1 = new WebMockObjectFactory();
047: WebMockObjectFactory factory2 = new WebMockObjectFactory(
048: factory1);
049: assertNotSame(factory1.getMockRequest(), factory2
050: .getMockRequest());
051: assertNotSame(factory1.getMockResponse(), factory2
052: .getMockResponse());
053: assertNotSame(factory1.getMockSession(), factory2
054: .getMockSession());
055: assertNotSame(factory1.getMockServletConfig(), factory2
056: .getMockServletConfig());
057: assertSame(factory1.getMockServletContext(), factory2
058: .getMockServletContext());
059: }
060:
061: public void testMockObjectsWithSameSessionAndContext() {
062: WebMockObjectFactory factory1 = new WebMockObjectFactory();
063: WebMockObjectFactory factory2 = new WebMockObjectFactory(
064: factory1, false);
065: assertNotSame(factory1.getMockRequest(), factory2
066: .getMockRequest());
067: assertNotSame(factory1.getMockResponse(), factory2
068: .getMockResponse());
069: assertSame(factory1.getMockSession(), factory2.getMockSession());
070: assertNotSame(factory1.getMockServletConfig(), factory2
071: .getMockServletConfig());
072: assertSame(factory1.getMockServletContext(), factory2
073: .getMockServletContext());
074: factory2 = new WebMockObjectFactory(factory1, true);
075: assertNotSame(factory1.getMockRequest(), factory2
076: .getMockRequest());
077: assertNotSame(factory1.getMockResponse(), factory2
078: .getMockResponse());
079: assertNotSame(factory1.getMockSession(), factory2
080: .getMockSession());
081: assertNotSame(factory1.getMockServletConfig(), factory2
082: .getMockServletConfig());
083: assertSame(factory1.getMockServletContext(), factory2
084: .getMockServletContext());
085: }
086:
087: public void testSetDefaultJspFactory() {
088: WebMockObjectFactory factory = new WebMockObjectFactory();
089: assertSame(factory.getMockJspFactory(), JspFactory
090: .getDefaultFactory());
091: assertSame(factory.getJspFactory(), JspFactory
092: .getDefaultFactory());
093: assertSame(factory.getMockPageContext(), factory
094: .getMockJspFactory().getPageContext());
095: TestJspFactory testJspFactory = new TestJspFactory();
096: factory.setDefaultJspFactory(testJspFactory);
097: assertNull(factory.getMockJspFactory());
098: assertSame(testJspFactory, JspFactory.getDefaultFactory());
099: assertSame(factory.getJspFactory(), JspFactory
100: .getDefaultFactory());
101: MockJspFactory testMockJspFactory = new MockJspFactory() {
102: };
103: factory.setDefaultJspFactory(testMockJspFactory);
104: assertSame(testMockJspFactory, JspFactory.getDefaultFactory());
105: assertSame(factory.getMockJspFactory(), JspFactory
106: .getDefaultFactory());
107: assertSame(factory.getJspFactory(), JspFactory
108: .getDefaultFactory());
109: assertSame(factory.getMockPageContext(), factory
110: .getMockJspFactory().getPageContext());
111: factory.setDefaultJspFactory(null);
112: assertNull(factory.getMockJspFactory());
113: assertNull(factory.getJspFactory());
114: }
115:
116: public void testAddRequestWrapper() {
117: WebMockObjectFactory factory = new WebMockObjectFactory();
118: factory.getMockRequest().setupAddParameter("test", "test");
119: factory.addRequestWrapper(HttpServletRequestWrapper.class);
120: HttpServletRequest request = factory.getWrappedRequest();
121: assertTrue(request instanceof HttpServletRequestWrapper);
122: assertEquals("test", request.getParameter("test"));
123: HttpServletRequestWrapper requestWrapper = (HttpServletRequestWrapper) factory
124: .getWrappedRequest();
125: assertSame(factory.getMockRequest(), requestWrapper
126: .getRequest());
127: }
128:
129: public void testAddResponseWrapper() throws Exception {
130: WebMockObjectFactory factory = new WebMockObjectFactory();
131: factory.addResponseWrapper(HttpServletResponseWrapper.class);
132: HttpServletResponse response = factory.getWrappedResponse();
133: assertTrue(response instanceof HttpServletResponseWrapper);
134: response.getWriter().print("test");
135: response.getWriter().flush();
136: assertEquals("test", factory.getMockResponse()
137: .getOutputStreamContent());
138: HttpServletResponseWrapper responseWrapper = (HttpServletResponseWrapper) factory
139: .getWrappedResponse();
140: assertSame(factory.getMockResponse(), responseWrapper
141: .getResponse());
142: }
143:
144: public void testAddRequestAndResponseWrapperClasses() {
145: WebMockObjectFactory factory = new WebMockObjectFactory();
146: factory.addRequestWrapper(TestRequestWrapper.class);
147: assertTrue(factory.getWrappedRequest() instanceof TestRequestWrapper);
148: assertSame(factory.getMockRequest(),
149: ((TestRequestWrapper) factory.getWrappedRequest())
150: .getRequest());
151: factory.addResponseWrapper(TestResponseWrapper.class);
152: assertTrue(factory.getWrappedResponse() instanceof TestResponseWrapper);
153: assertSame(factory.getMockResponse(),
154: ((TestResponseWrapper) factory.getWrappedResponse())
155: .getResponse());
156: }
157:
158: public void testRefresh() throws Exception {
159: WebMockObjectFactory factory = new WebMockObjectFactory();
160: HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(
161: factory.getMockRequest());
162: HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(
163: factory.getMockResponse());
164: factory.addRequestWrapper(requestWrapper);
165: factory.addResponseWrapper(responseWrapper);
166: MockPageContext pageContext = factory.getMockPageContext();
167: assertSame(factory.getMockRequest(), pageContext.getRequest());
168: assertSame(factory.getMockResponse(), pageContext.getResponse());
169: factory.refresh();
170: pageContext = factory.getMockPageContext();
171: assertSame(requestWrapper, pageContext.getRequest());
172: assertSame(responseWrapper, pageContext.getResponse());
173: assertSame(pageContext, factory.getMockJspFactory()
174: .getPageContext());
175: }
176:
177: public void testOverrideCreate() {
178: WebMockObjectFactory factory = new TestWebMockObjectFactory();
179: assertNotSame(factory.getMockRequest().getClass(),
180: MockHttpServletRequest.class);
181: assertNotSame(factory.getMockResponse().getClass(),
182: MockHttpServletResponse.class);
183: assertNotSame(factory.getMockFilterChain().getClass(),
184: MockFilterChain.class);
185: assertNotSame(factory.getMockFilterConfig().getClass(),
186: MockFilterConfig.class);
187: assertNotSame(factory.getMockPageContext().getClass(),
188: MockPageContext.class);
189: assertNotSame(factory.getMockServletConfig().getClass(),
190: MockServletConfig.class);
191: assertNotSame(factory.getMockServletContext().getClass(),
192: MockServletContext.class);
193: assertNotSame(factory.getMockSession().getClass(),
194: MockHttpSession.class);
195: }
196:
197: public static class TestRequestWrapper extends
198: MockHttpServletRequest {
199: private HttpServletRequest request;
200:
201: public TestRequestWrapper(HttpServletRequest request) {
202: this .request = request;
203: }
204:
205: public HttpServletRequest getRequest() {
206: return request;
207: }
208: }
209:
210: public static class TestResponseWrapper extends
211: MockHttpServletResponse {
212: private HttpServletResponse response;
213:
214: public TestResponseWrapper(HttpServletResponse response) {
215: this .response = response;
216: }
217:
218: public HttpServletResponse getResponse() {
219: return response;
220: }
221: }
222:
223: public static class TestWebMockObjectFactory extends
224: WebMockObjectFactory {
225: public MockFilterChain createMockFilterChain() {
226: return new MockFilterChain() {
227: };
228: }
229:
230: public MockFilterConfig createMockFilterConfig() {
231: return new MockFilterConfig() {
232: };
233: }
234:
235: public MockPageContext createMockPageContext() {
236: return new MockPageContext() {
237: };
238: }
239:
240: public MockHttpServletRequest createMockRequest() {
241:
242: return new MockHttpServletRequest() {
243: };
244: }
245:
246: public MockHttpServletResponse createMockResponse() {
247: return new MockHttpServletResponse() {
248: };
249: }
250:
251: public MockServletConfig createMockServletConfig() {
252: return new MockServletConfig() {
253: };
254: }
255:
256: public MockServletContext createMockServletContext() {
257: return new MockServletContext() {
258: };
259: }
260:
261: public MockHttpSession createMockSession() {
262: return new MockHttpSession() {
263: };
264: }
265: }
266:
267: public static class TestJspFactory extends JspFactory {
268: public JspEngineInfo getEngineInfo() {
269: return null;
270: }
271:
272: public JspApplicationContext getJspApplicationContext(
273: ServletContext context) {
274: return null;
275: }
276:
277: public PageContext getPageContext(Servlet servlet,
278: ServletRequest request, ServletResponse response,
279: String errorPageURL, boolean needsSession, int buffer,
280: boolean autoflush) {
281: return null;
282: }
283:
284: public void releasePageContext(PageContext pageContext) {
285:
286: }
287: }
288: }
|