You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2018/05/08 12:48:21 UTC
[myfaces] 18/28: copy to move history
This is an automated email from the ASF dual-hosted git repository.
deki pushed a commit to branch 2.1.x-client-window
in repository https://gitbox.apache.org/repos/asf/myfaces.git
commit 0479b3d0f537e8000cf880b5ebbdb6525794f7fa
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Fri Nov 16 03:17:45 2012 +0000
copy to move history
---
.../viewstate/ServerSideStateCacheTest.java | 269 +++++++++++++++++++++
1 file changed, 269 insertions(+)
diff --git a/impl/src/test/java/org/apache/myfaces/application/viewstate/ServerSideStateCacheTest.java b/impl/src/test/java/org/apache/myfaces/application/viewstate/ServerSideStateCacheTest.java
new file mode 100644
index 0000000..cf680c0
--- /dev/null
+++ b/impl/src/test/java/org/apache/myfaces/application/viewstate/ServerSideStateCacheTest.java
@@ -0,0 +1,269 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.myfaces.renderkit;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Map;
+import javax.faces.application.ProjectStage;
+import javax.faces.application.StateManager;
+
+import org.apache.myfaces.application.StateCache;
+import org.apache.myfaces.test.base.junit4.AbstractJsfConfigurableMultipleRequestsTestCase;
+import org.junit.Test;
+import org.testng.Assert;
+
+public class ServerSideStateCacheTest extends AbstractJsfConfigurableMultipleRequestsTestCase
+{
+
+ @Test
+ public void testNumberOfSequentialViewsInSession() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION", "5");
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION", "2");
+
+ // Initialization
+ setupRequest();
+ StateCache stateCache = new ServerSideStateCacheImpl();
+ tearDownRequest();
+
+ Object savedToken;
+ Object firstSavedToken;
+
+ try
+ {
+ setupRequest();
+
+ facesContext.getViewRoot().setViewId("view1.xhtml");
+ savedToken = stateCache.saveSerializedView(facesContext, 1);
+ firstSavedToken = savedToken;
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ try
+ {
+ setupRequest();
+
+ Object value = stateCache.restoreSerializedView(facesContext, "view1.xhtml", savedToken);
+
+ Assert.assertEquals(1, value);
+
+ facesContext.getViewRoot().setViewId("view2.xhtml");
+ savedToken = stateCache.saveSerializedView(facesContext, 2);
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ try
+ {
+ setupRequest();
+
+ Object value = stateCache.restoreSerializedView(facesContext, "view2.xhtml", savedToken);
+
+ Assert.assertEquals(2, value);
+
+ facesContext.getViewRoot().setViewId("view2.xhtml");
+ savedToken = stateCache.saveSerializedView(facesContext, 3);
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ try
+ {
+ setupRequest();
+
+ Object value = stateCache.restoreSerializedView(facesContext, "view1.xhtml", firstSavedToken);
+
+ // Since org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION is 2, the first one was already discarded
+ Assert.assertNull(value);
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+ }
+
+ @Test
+ public void testSaveRestoreStateWrongViewId() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+
+ // Initialization
+ setupRequest();
+ StateCache stateCache = new ClientSideStateCacheImpl();
+ tearDownRequest();
+
+ Object savedToken;
+ Object firstSavedToken;
+
+ try
+ {
+ setupRequest();
+
+ facesContext.getViewRoot().setViewId("/view1.xhtml");
+ savedToken = stateCache.saveSerializedView(facesContext, 1);
+ firstSavedToken = savedToken;
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ try
+ {
+ setupRequest();
+
+ // Note we are trying to restore restoring another different view with a token from the previous view.
+ // It should return null and later throw ViewExpiredException
+ // In server side state saving, the hashCode of the viewId should be part of the key used to restore
+ // the state, along with a counter.
+ Object value = stateCache.restoreSerializedView(facesContext, "/view2.xhtml", firstSavedToken);
+
+ Assert.assertNull(value);
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ try
+ {
+ setupRequest();
+
+ // It should restore this:
+ Object value = stateCache.restoreSerializedView(facesContext, "/view1.xhtml", firstSavedToken);
+
+ Assert.assertEquals(1, value);
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ }
+
+ @Test
+ public void testNonExistingViewId() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION", "5");
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION", "2");
+
+ // this issue only happens in projectstage Production
+ servletContext.addInitParameter("faces.PROJECT_STAGE", "Production");
+
+ try
+ {
+ // Initialization
+ setupRequest();
+
+ // we need to take a viewId which is null -> not existing.
+ facesContext.getViewRoot().setViewId(null);
+
+ StateCache stateCache = new ServerSideStateCacheImpl();
+ Object savedToken = stateCache.saveSerializedView(facesContext, 1);
+
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+
+ }
+
+ public void tryStateKeySerialization() throws Exception
+ {
+ // Initialization
+ setupRequest();
+ StateCache stateCache = new ServerSideStateCacheImpl();
+ tearDownRequest();
+
+ Object savedToken;
+ Object firstSavedToken;
+
+ try
+ {
+ setupRequest();
+ facesContext.getViewRoot().setViewId("view1.xhtml");
+ savedToken = stateCache.saveSerializedView(facesContext, 1);
+ firstSavedToken = savedToken;
+
+ for (Map.Entry<String, Object> entry : facesContext.getExternalContext().getSessionMap().entrySet())
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(128);
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(entry.getValue());
+ oos.flush();
+ baos.flush();
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ Object blorg = ois.readObject();
+ }
+ }
+ finally
+ {
+ tearDownRequest();
+ }
+ }
+
+ @Test
+ public void testStateKeySerialization1() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION", "5");
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION", "2");
+ servletContext.addInitParameter(ProjectStage.PROJECT_STAGE_PARAM_NAME, ProjectStage.Production.toString());
+
+ tryStateKeySerialization();
+ }
+
+ @Test
+ public void testStateKeySerialization2() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION", "5");
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION", "2");
+ servletContext.addInitParameter(ProjectStage.PROJECT_STAGE_PARAM_NAME, ProjectStage.Production.toString());
+ servletContext.addInitParameter("org.apache.myfaces.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN", "random");
+
+ tryStateKeySerialization();
+ }
+
+ @Test
+ public void testStateKeySerialization3() throws Exception
+ {
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_SERVER);
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION", "5");
+ servletContext.addInitParameter("org.apache.myfaces.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION", "2");
+ servletContext.addInitParameter(ProjectStage.PROJECT_STAGE_PARAM_NAME, ProjectStage.Development.toString());
+
+ tryStateKeySerialization();
+ }
+
+}
--
To stop receiving notification emails like this one, please contact
deki@apache.org.