1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 package org.apache.myfaces.lifecycle; 20 21 import static org.easymock.EasyMock.expect; 22 23 import java.util.Collections; 24 import java.util.HashMap; 25 import java.util.Map; 26 27 import javax.faces.FacesException; 28 29 import org.apache.myfaces.Assert; 30 import org.apache.myfaces.FacesTestCase; 31 import org.apache.myfaces.TestRunner; 32 33 /** 34 * @author Mathias Broekelmann (latest modification by $Author: struberg $) 35 * @version $Revision: 1188694 $ $Date: 2011-10-25 10:07:44 -0500 (Tue, 25 Oct 2011) $ 36 */ 37 public class DefaultRestoreViewSupportTest extends FacesTestCase 38 { 39 40 private DefaultRestoreViewSupport _testimpl; 41 42 protected void setUp() throws Exception 43 { 44 super.setUp(); 45 _testimpl = new DefaultRestoreViewSupport(); 46 } 47 48 /** 49 * Test method for 50 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#processComponentBinding(javax.faces.context.FacesContext, javax.faces.component.UIComponent)}. 51 */ 52 /* 53 public void testProcessComponentBinding() 54 { 55 UIComponent root = _mocksControl.createMock(UIComponent.class); 56 UIComponent testcomponent = _mocksControl.createMock(UIComponent.class); 57 ValueExpression rootExpression = _mocksControl.createMock(ValueExpression.class); 58 ValueExpression testExpression = _mocksControl.createMock(ValueExpression.class); 59 60 _mocksControl.checkOrder(true); 61 expect(root.getValueExpression(eq("binding"))).andReturn(rootExpression); 62 expect(_facesContext.getELContext()).andReturn(_elContext); 63 rootExpression.setValue(same(_elContext), same(root)); 64 expect(root.getFacetsAndChildren()).andReturn(Arrays.asList(new UIComponent[] { testcomponent }).iterator()); 65 expect(testcomponent.getValueExpression(eq("binding"))).andReturn(testExpression); 66 expect(_facesContext.getELContext()).andReturn(_elContext); 67 testExpression.setValue(same(_elContext), same(testcomponent)); 68 69 List<UIComponent> emptyList = Collections.emptyList(); 70 expect(testcomponent.getFacetsAndChildren()).andReturn(emptyList.iterator()); 71 72 _mocksControl.replay(); 73 _testimpl.processComponentBinding(_facesContext, root); 74 _mocksControl.verify(); 75 } 76 */ 77 78 /** 79 * Test method for 80 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#calculateViewId(javax.faces.context.FacesContext)}. 81 */ 82 public void testCalculateViewIdFromRequestAttributeIncludePathInfo() 83 { 84 _mocksControl.checkOrder(true); 85 expect(_facesContext.getExternalContext()).andReturn(_externalContext); 86 Map<String, Object> map = new HashMap<String, Object>(); 87 String expectedValue = "javax.servlet.include.path_info_VIEWID"; 88 map.put("javax.servlet.include.path_info", expectedValue); 89 expect(_externalContext.getRequestMap()).andReturn(map); 90 //expect(_facesContext.getApplication()).andReturn(_application); 91 //ViewHandler viewHandler = _mocksControl.createMock(ViewHandler.class); 92 //expect(_application.getViewHandler()).andReturn(viewHandler); 93 //expect(viewHandler.deriveViewId( 94 // same(_facesContext), eq(expectedValue))).andReturn(expectedValue); 95 _mocksControl.replay(); 96 assertEquals(expectedValue, _testimpl.calculateViewId(_facesContext)); 97 _mocksControl.verify(); 98 } 99 100 /** 101 * Test method for 102 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#calculateViewId(javax.faces.context.FacesContext)}. 103 */ 104 public void testCalculateViewIdFromRequestPathInfo() 105 { 106 _mocksControl.checkOrder(true); 107 expect(_facesContext.getExternalContext()).andReturn(_externalContext); 108 109 Map<String, Object> emptyMap = Collections.emptyMap(); 110 expect(_externalContext.getRequestMap()).andReturn(emptyMap); 111 String expectedValue = "requestPathInfo_VIEWID"; 112 expect(_externalContext.getRequestPathInfo()).andReturn(expectedValue); 113 //expect(_facesContext.getApplication()).andReturn(_application); 114 //ViewHandler viewHandler = _mocksControl.createMock(ViewHandler.class); 115 //expect(_application.getViewHandler()).andReturn(viewHandler); 116 //expect(viewHandler.deriveViewId( 117 // same(_facesContext), eq(expectedValue))).andReturn(expectedValue); 118 119 _mocksControl.replay(); 120 assertEquals(expectedValue, _testimpl.calculateViewId(_facesContext)); 121 _mocksControl.verify(); 122 } 123 124 /** 125 * Test method for 126 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#calculateViewId(javax.faces.context.FacesContext)}. 127 */ 128 public void testCalculateViewIdFromRequestAttributeIncludeServletPath() 129 { 130 _mocksControl.checkOrder(true); 131 expect(_facesContext.getExternalContext()).andReturn(_externalContext); 132 Map<String, Object> map = new HashMap<String, Object>(); 133 String expectedValue = "javax.servlet.include.servlet_path_VIEWID"; 134 map.put("javax.servlet.include.servlet_path", expectedValue); 135 expect(_externalContext.getRequestMap()).andReturn(map); 136 expect(_externalContext.getRequestPathInfo()).andReturn(null); 137 //expect(_facesContext.getApplication()).andReturn(_application); 138 //ViewHandler viewHandler = _mocksControl.createMock(ViewHandler.class); 139 //expect(_application.getViewHandler()).andReturn(viewHandler); 140 //expect(viewHandler.deriveViewId( 141 // same(_facesContext), eq(expectedValue))).andReturn(expectedValue); 142 143 _mocksControl.replay(); 144 assertEquals(expectedValue, _testimpl.calculateViewId(_facesContext)); 145 _mocksControl.verify(); 146 } 147 148 /** 149 * Test method for 150 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#calculateViewId(javax.faces.context.FacesContext)}. 151 */ 152 public void testCalculateViewIdFromRequestServletPath() 153 { 154 _mocksControl.checkOrder(true); 155 expect(_facesContext.getExternalContext()).andReturn(_externalContext); 156 157 Map<String, Object> emptyMap = Collections.emptyMap(); 158 159 expect(_externalContext.getRequestMap()).andReturn(emptyMap); 160 expect(_externalContext.getRequestPathInfo()).andReturn(null); 161 String expectedValue = "RequestServletPath_VIEWID"; 162 expect(_externalContext.getRequestServletPath()).andReturn(expectedValue); 163 //expect(_facesContext.getApplication()).andReturn(_application); 164 //ViewHandler viewHandler = _mocksControl.createMock(ViewHandler.class); 165 //expect(_application.getViewHandler()).andReturn(viewHandler); 166 //expect(viewHandler.deriveViewId( 167 // same(_facesContext), eq(expectedValue))).andReturn(expectedValue); 168 169 _mocksControl.replay(); 170 assertEquals(expectedValue, _testimpl.calculateViewId(_facesContext)); 171 _mocksControl.verify(); 172 } 173 174 /** 175 * Test method for 176 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#calculateViewId(javax.faces.context.FacesContext)}. 177 */ 178 public void testCalculateViewIdFacesException() 179 { 180 _mocksControl.checkOrder(true); 181 expect(_facesContext.getExternalContext()).andReturn(_externalContext); 182 183 Map<String, Object> emptyMap = Collections.emptyMap(); 184 185 expect(_externalContext.getRequestMap()).andReturn(emptyMap); 186 expect(_externalContext.getRequestPathInfo()).andReturn(null); 187 expect(_externalContext.getRequestServletPath()).andReturn(null); 188 189 _mocksControl.replay(); 190 Assert.assertException(FacesException.class, new TestRunner() 191 { 192 public void run() throws Throwable 193 { 194 _testimpl.calculateViewId(_facesContext); 195 } 196 }); 197 _mocksControl.verify(); 198 } 199 200 /** 201 * Test method for 202 * {@link org.apache.myfaces.lifecycle.DefaultRestoreViewSupport#isPostback(javax.faces.context.FacesContext)}. 203 */ 204 public void testIsPostback() 205 { 206 // TODO: not testable unless static call to RendererUtils is removed 207 } 208 209 }