001: /*
002: * Copyright 2005-2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
005: * in compliance with the License. You may obtain a copy of the License at
006: *
007: * http://www.apache.org/licenses/LICENSE-2.0
008: *
009: * Unless required by applicable law or agreed to in writing, software distributed under the License
010: * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
011: * or implied. See the License for the specific language governing permissions and limitations under
012: * the License.
013: */
014:
015: package org.strecks.navigate.handler;
016:
017: import static org.easymock.EasyMock.expect;
018: import static org.easymock.classextension.EasyMock.createStrictMock;
019: import static org.easymock.classextension.EasyMock.replay;
020: import static org.easymock.classextension.EasyMock.verify;
021: import static org.testng.Assert.assertEquals;
022:
023: import java.util.HashMap;
024: import java.util.LinkedHashMap;
025:
026: import javax.servlet.http.HttpServletRequest;
027: import javax.servlet.http.HttpSession;
028:
029: import org.apache.struts.action.ActionForward;
030: import org.strecks.constants.InfrastructureKeys;
031: import org.strecks.context.impl.TestContextImpl;
032: import org.strecks.view.ActionForwardViewAdapter;
033: import org.strecks.view.ViewAdapter;
034: import org.strecks.web.RedirectHelper;
035: import org.testng.annotations.Test;
036:
037: /**
038: * @author Phil Zoio
039: */
040: public class TestActionRedirectNavigationHandler {
041:
042: @Test
043: public void testGetRedirectURL() {
044:
045: ActionRedirectNavigationHandler handler = new ActionRedirectNavigationHandler();
046: HashMap<String, String> parameters = getRequestParameters();
047:
048: String redirectURL = handler.getRedirectURL("action",
049: parameters);
050:
051: assertEquals(redirectURL,
052: "action.do?param1=value1¶m2=value2");
053:
054: }
055:
056: @Test
057: public void testGetRedirectURLNullParams() {
058:
059: ActionRedirectNavigationHandler handler = new ActionRedirectNavigationHandler();
060: String redirectURL = handler.getRedirectURL("action", null);
061: assertEquals(redirectURL, "action.do");
062:
063: }
064:
065: @Test
066: public void testGetActionForward() {
067:
068: HttpServletRequest request = createStrictMock(HttpServletRequest.class);
069: HttpSession session = createStrictMock(HttpSession.class);
070: RedirectHelper redirectHelper = createStrictMock(RedirectHelper.class);
071:
072: expect(request.getAttribute(InfrastructureKeys.REDIRECT_HELPER))
073: .andReturn(redirectHelper);
074: expect(redirectHelper.getRequestParameters()).andReturn(
075: getRequestParameters());
076: expect(request.getSession()).andReturn(session);
077: expect(redirectHelper.getSessionParameters()).andReturn(
078: getSessionParameters());
079: session.setAttribute(InfrastructureKeys.REDIRECT_PARAMETERS,
080: getSessionParameters());
081:
082: replay(request);
083: replay(session);
084: replay(redirectHelper);
085:
086: ActionRedirectNavigationHandler handler = new ActionRedirectNavigationHandler();
087: ViewAdapter viewAdapter = handler.getActionForward(
088: new TestContextImpl(request), "action");
089:
090: ActionForwardViewAdapter va = (ActionForwardViewAdapter) viewAdapter;
091: ActionForward actionForward = va.getActionForward();
092:
093: verify(request);
094: verify(session);
095: verify(redirectHelper);
096:
097: assertEquals(actionForward.getPath(),
098: "action.do?param1=value1¶m2=value2");
099: assert actionForward.getRedirect();
100:
101: }
102:
103: private HashMap<String, String> getRequestParameters() {
104: HashMap<String, String> parameters = new LinkedHashMap<String, String>();
105:
106: parameters.put("param1", "value1");
107: parameters.put("param2", "value2");
108: return parameters;
109: }
110:
111: private HashMap<String, Object> getSessionParameters() {
112: HashMap<String, Object> parameters = new LinkedHashMap<String, Object>();
113:
114: parameters.put("param1", 1);
115: parameters.put("param2", 12L);
116: return parameters;
117: }
118:
119: }
|