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.injection.handler;
016:
017: import static org.easymock.EasyMock.expect;
018: import static org.easymock.classextension.EasyMock.replay;
019: import static org.easymock.classextension.EasyMock.verify;
020:
021: import java.util.HashMap;
022: import java.util.Map;
023:
024: import javax.servlet.http.HttpServletRequest;
025: import javax.servlet.http.HttpSession;
026:
027: import org.easymock.classextension.EasyMock;
028: import org.strecks.constants.InfrastructureKeys;
029: import org.strecks.context.ActionContext;
030: import org.strecks.context.impl.TestContextImpl;
031: import org.strecks.injection.handler.impl.RequestSessionAction;
032: import org.strecks.injection.internal.InjectionAnnotationReader;
033: import org.strecks.injection.internal.InjectionWrapper;
034: import org.testng.annotations.Test;
035:
036: /**
037: * @author Phil Zoio
038: */
039: public class TestRedirectParameterInjectionHandler {
040:
041: @Test
042: public void testRedirectParameter() {
043:
044: InjectionAnnotationReader c = new InjectionAnnotationReader();
045: RequestSessionAction action = new RequestSessionAction();
046:
047: c.readAnnotations(action.getClass());
048: Map<String, InjectionWrapper> inputs = c.getInjectionMap();
049:
050: HttpServletRequest request = EasyMock
051: .createStrictMock(HttpServletRequest.class);
052: HttpSession session = EasyMock
053: .createStrictMock(HttpSession.class);
054:
055: Map<String, Object> map = new HashMap<String, Object>();
056: map.put("redirectParam", new Integer(1));
057:
058: expect(request.getSession(false)).andReturn(session);
059: expect(
060: session
061: .getAttribute(InfrastructureKeys.REDIRECT_PARAMETERS))
062: .andReturn(map);
063:
064: replay(request);
065: replay(session);
066:
067: InjectionWrapper inputWrapper = inputs.get("redirectParameter");
068:
069: ActionContext injectionContext = new TestContextImpl(request);
070: inputWrapper.inject(action, injectionContext);
071:
072: verify(request);
073: verify(session);
074:
075: assert action.getRedirectParameter() != null;
076:
077: }
078:
079: @Test
080: public void testNoMap() {
081:
082: InjectionAnnotationReader c = new InjectionAnnotationReader();
083: RequestSessionAction action = new RequestSessionAction();
084:
085: c.readAnnotations(action.getClass());
086: Map<String, InjectionWrapper> inputs = c.getInjectionMap();
087:
088: HttpServletRequest request = EasyMock
089: .createStrictMock(HttpServletRequest.class);
090: HttpSession session = EasyMock
091: .createStrictMock(HttpSession.class);
092:
093: expect(request.getSession(false)).andReturn(session);
094: expect(
095: session
096: .getAttribute(InfrastructureKeys.REDIRECT_PARAMETERS))
097: .andReturn(null);
098:
099: replay(request);
100: replay(session);
101:
102: InjectionWrapper inputWrapper = inputs.get("redirectParameter");
103:
104: ActionContext injectionContext = new TestContextImpl(request);
105: inputWrapper.inject(action, injectionContext);
106:
107: verify(request);
108: verify(session);
109:
110: assert action.getRedirectParameter() == null;
111:
112: }
113:
114: @Test
115: public void testNoSession() {
116:
117: InjectionAnnotationReader c = new InjectionAnnotationReader();
118: RequestSessionAction action = new RequestSessionAction();
119:
120: c.readAnnotations(action.getClass());
121: Map<String, InjectionWrapper> inputs = c.getInjectionMap();
122:
123: HttpServletRequest request = EasyMock
124: .createStrictMock(HttpServletRequest.class);
125:
126: Map<String, Object> map = new HashMap<String, Object>();
127: map.put("redirectParam", new Integer(1));
128:
129: expect(request.getSession(false)).andReturn(null);
130:
131: replay(request);
132:
133: InjectionWrapper inputWrapper = inputs.get("redirectParameter");
134:
135: ActionContext injectionContext = new TestContextImpl(request);
136: inputWrapper.inject(action, injectionContext);
137:
138: verify(request);
139:
140: assert action.getRedirectParameter() == null;
141:
142: }
143: }
|