/* * Copyright (c) 2001-2007, Inversoft Inc., All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific * language governing permissions and limitations under the License. */ package org.primeframework.mvc.scope; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; import org.easymock.EasyMock; import org.primeframework.mvc.scope.annotation.Flash; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * This class tests the flash scope. * * @author Brian Pontarelli */ public class FlashScopeTest { @Test public void getRequest() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); map.put("test", value); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertSame(value, scope.get("test", new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request); } @Test public void getRequestDifferentKey() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); map.put("other", value); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertSame(value, scope.get("test", new Flash() { public String value() { return "other"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request); } @Test public void getFromSession() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); map.put("test", value); HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(new HashMap<String, Object>()); EasyMock.expect(request.getSession(false)).andReturn(session); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertSame(value, scope.get("test", new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request, session); } @Test public void getFromSessionNoSession() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(new HashMap<String, Object>()); EasyMock.expect(request.getSession(false)).andReturn(null); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertNull(scope.get("test", new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request); } @Test public void getFromSessionDifferentKey() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); map.put("other", value); HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(new HashMap<String, Object>()); EasyMock.expect(request.getSession(false)).andReturn(session); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertSame(value, scope.get("test", new Flash() { public String value() { return "other"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request, session); } @Test public void getFromSessionNoSessionDifferentKey() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getAttribute("primeFlash")).andReturn(new HashMap<String, Object>()); EasyMock.expect(request.getSession(false)).andReturn(null); EasyMock.replay(request); FlashScope scope = new FlashScope(request); assertNull(scope.get("test", new Flash() { public String value() { return "other"; } public Class<? extends Annotation> annotationType() { return Flash.class; } })); EasyMock.verify(request); } @Test public void set() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(true)).andReturn(session); EasyMock.replay(request); FlashScope scope = new FlashScope(request); scope.set("test", value, new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } }); assertSame(value, map.get("test")); EasyMock.verify(request, session); } @Test public void setNull() { Map<String, Object> map = new HashMap<String, Object>(); map.put("test", "value"); HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(session); EasyMock.replay(request); FlashScope scope = new FlashScope(request); scope.set("test", null, new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } }); assertFalse(map.containsKey("test")); EasyMock.verify(request, session); } @Test public void setNullNoSession() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(null); EasyMock.replay(request); FlashScope scope = new FlashScope(request); scope.set("test", null, new Flash() { public String value() { return "##field-name##"; } public Class<? extends Annotation> annotationType() { return Flash.class; } }); EasyMock.verify(request); } @Test public void setDifferentkey() { Object value = new Object(); Map<String, Object> map = new HashMap<String, Object>(); HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute("primeFlash")).andReturn(map); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(true)).andReturn(session); EasyMock.replay(request); FlashScope scope = new FlashScope(request); scope.set("test", value, new Flash() { public String value() { return "other"; } public Class<? extends Annotation> annotationType() { return Flash.class; } }); assertSame(value, map.get("other")); EasyMock.verify(request, session); } }