View Javadoc

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  
20  package javax.faces.application;
21  
22  import javax.faces.context.ExternalContext;
23  import javax.faces.context.FacesContext;
24  
25  import junit.framework.TestCase;
26  
27  import org.apache.shale.test.mock.MockStateManager;
28  import org.easymock.MockControl;
29  import org.easymock.classextension.MockClassControl;
30  
31  public class StateManagerTest extends TestCase {
32  
33      public static void main(String[] args) {
34          junit.textui.TestRunner.run(StateManagerTest.class);
35      }
36  
37      public StateManagerTest(String name) {
38          super(name);
39      }
40  
41      protected void setUp() throws Exception {
42          super.setUp();
43      }
44  
45      protected void tearDown() throws Exception {
46          super.tearDown();
47      }
48  
49      /*
50        * Test method for 'javax.faces.application.StateManager.isSavingStateInClient(FacesContext)'
51        */
52      public void testNullThrowsIsSavingStateInClient() {
53          MockStateManager subject = new MockStateManager();
54          try {
55              subject.isSavingStateInClient(null);
56              fail("should have thrown an exception");
57          } catch (RuntimeException e) {
58          }
59      }
60  
61      /*
62        * Test method for 'javax.faces.application.StateManager.isSavingStateInClient(FacesContext)'
63        */
64      public void testIsSavingStateInClientTrue() {
65          MockControl contextControl = MockClassControl.createControl(FacesContext.class);
66          MockControl externalControl = MockClassControl.createControl(ExternalContext.class);
67          FacesContext context = (FacesContext)contextControl.getMock();
68          ExternalContext external = (ExternalContext)externalControl.getMock();
69          context.getExternalContext();
70          contextControl.setReturnValue(external);
71          contextControl.replay();
72          external.getInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME);
73          externalControl.setReturnValue("client");
74          externalControl.replay();
75  
76          MockStateManager subject = new MockStateManager();
77          assertEquals(true, subject.isSavingStateInClient(context));
78      }
79  
80      /*
81        * Test method for 'javax.faces.application.StateManager.isSavingStateInClient(FacesContext)'
82        */
83      public void testIsSavingStateInClientFalse() {
84          MockControl contextControl = MockClassControl.createControl(FacesContext.class);
85          MockControl externalControl = MockClassControl.createControl(ExternalContext.class);
86          FacesContext context = (FacesContext)contextControl.getMock();
87          ExternalContext external = (ExternalContext)externalControl.getMock();
88          context.getExternalContext();
89          contextControl.setReturnValue(external);
90          contextControl.replay();
91          external.getInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME);
92          externalControl.setReturnValue("server");
93          externalControl.replay();
94  
95          MockStateManager subject = new MockStateManager();
96          assertEquals(false, subject.isSavingStateInClient(context));
97          // calling a second time asserts that the code is caching the value correctly
98          assertEquals(false, subject.isSavingStateInClient(context));
99      }
100 
101     /*
102       * Test method for 'javax.faces.application.StateManager.isSavingStateInClient(FacesContext)'
103       */
104     public void testIsSavingStateInClientBogus() {
105         MockControl contextControl = MockClassControl.createControl(FacesContext.class);
106         MockControl externalControl = MockClassControl.createControl(ExternalContext.class);
107         FacesContext context = (FacesContext)contextControl.getMock();
108         ExternalContext external = (ExternalContext)externalControl.getMock();
109         context.getExternalContext();
110         contextControl.setReturnValue(external);
111         context.getExternalContext();
112         contextControl.setReturnValue(external);
113         contextControl.replay();
114         external.getInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME);
115         externalControl.setReturnValue("blorf");
116         external.log("Illegal state saving method 'blorf', default server state saving will be used");
117         externalControl.setVoidCallable();
118         externalControl.replay();
119 
120         MockStateManager subject = new MockStateManager();
121         assertEquals(false, subject.isSavingStateInClient(context));
122     }
123 
124     /*
125       * Test method for 'javax.faces.application.StateManager.isSavingStateInClient(FacesContext)'
126       */
127     public void testIsSavingStateInClientNull() {
128         MockControl contextControl = MockClassControl.createControl(FacesContext.class);
129         MockControl externalControl = MockClassControl.createControl(ExternalContext.class);
130         FacesContext context = (FacesContext)contextControl.getMock();
131         ExternalContext external = (ExternalContext)externalControl.getMock();
132         context.getExternalContext();
133         contextControl.setReturnValue(external);
134         context.getExternalContext();
135         contextControl.setReturnValue(external);
136         contextControl.replay();
137         external.getInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME);
138         externalControl.setReturnValue(null);
139         external.log("No state saving method defined, assuming default server state saving");
140         externalControl.setVoidCallable();
141         externalControl.replay();
142 
143         MockStateManager subject = new MockStateManager();
144         assertEquals(false, subject.isSavingStateInClient(context));
145     }
146 
147 }