001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.dispatcher;
006:
007: import com.mockobjects.dynamic.C;
008: import com.mockobjects.dynamic.Mock;
009: import com.opensymphony.webwork.ServletActionContext;
010: import com.opensymphony.webwork.WebWorkStatics;
011: import com.opensymphony.webwork.WebWorkTestCase;
012: import com.opensymphony.xwork.ActionContext;
013: import com.opensymphony.xwork.ActionInvocation;
014: import com.opensymphony.xwork.mock.MockActionInvocation;
015: import com.opensymphony.xwork.util.OgnlValueStack;
016: import ognl.Ognl;
017:
018: import javax.servlet.http.HttpServletRequest;
019: import javax.servlet.http.HttpServletResponse;
020: import java.util.HashMap;
021:
022: /**
023: * DOCUMENT ME!
024: *
025: * @author $author$
026: * @version $Revision: 2308 $
027: */
028: public class ServletRedirectResultTest extends WebWorkTestCase
029: implements WebWorkStatics {
030:
031: protected ServletRedirectResult view;
032: private ActionContext oldContext;
033: private Mock requestMock;
034: private Mock responseMock;
035: protected ActionInvocation ai;
036:
037: public void testAbsoluteRedirect() {
038: view.setLocation("/bar/foo.jsp");
039: responseMock.expectAndReturn("encodeRedirectURL",
040: "/context/bar/foo.jsp", "/context/bar/foo.jsp");
041: responseMock.expect("sendRedirect", C.args(C
042: .eq("/context/bar/foo.jsp")));
043:
044: try {
045: view.execute(ai);
046: requestMock.verify();
047: responseMock.verify();
048: } catch (Exception e) {
049: e.printStackTrace();
050: fail();
051: }
052: }
053:
054: public void testPrependServletContextFalse() {
055: view.setLocation("/bar/foo.jsp");
056: view.setPrependServletContext(false);
057: responseMock.expectAndReturn("encodeRedirectURL",
058: "/bar/foo.jsp", "/bar/foo.jsp");
059: responseMock.expect("sendRedirect", C
060: .args(C.eq("/bar/foo.jsp")));
061:
062: try {
063: view.execute(ai);
064: requestMock.verify();
065: responseMock.verify();
066: } catch (Exception e) {
067: e.printStackTrace();
068: fail();
069: }
070: }
071:
072: public void testRelativeRedirect() throws Exception {
073: view.setLocation("foo.jsp");
074: requestMock.expectAndReturn("getParameterMap", new HashMap());
075: requestMock.expectAndReturn("getServletPath",
076: "/namespace/some.action");
077: requestMock.expectAndReturn("getAttribute", C.ANY_ARGS, null);
078: responseMock.expectAndReturn("encodeRedirectURL",
079: "/context/namespace/foo.jsp",
080: "/context/namespace/foo.jsp");
081: responseMock.expect("sendRedirect", C.args(C
082: .eq("/context/namespace/foo.jsp")));
083:
084: view.execute(ai);
085:
086: requestMock.verify();
087: responseMock.verify();
088: }
089:
090: protected void setUp() throws Exception {
091: super .setUp();
092:
093: view = new ServletRedirectResult();
094:
095: responseMock = new Mock(HttpServletResponse.class);
096:
097: requestMock = new Mock(HttpServletRequest.class);
098: requestMock.matchAndReturn("getContextPath", "/context");
099:
100: ActionContext ac = new ActionContext(Ognl
101: .createDefaultContext(null));
102: ac.put(ServletActionContext.HTTP_REQUEST, requestMock.proxy());
103: ac
104: .put(ServletActionContext.HTTP_RESPONSE, responseMock
105: .proxy());
106: MockActionInvocation ai = new MockActionInvocation();
107: ai.setInvocationContext(ac);
108: this .ai = ai;
109: ai.setStack(new OgnlValueStack());
110: }
111: }
|