View Javadoc
1   /*
2    * $Id$
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.tiles.servlet.context;
23  
24  import javax.servlet.ServletContext;
25  import javax.servlet.ServletRequest;
26  
27  import org.apache.tiles.TilesContainer;
28  import org.apache.tiles.access.TilesAccess;
29  import org.easymock.EasyMock;
30  
31  import junit.framework.TestCase;
32  
33  /**
34   * Tests {@link ServletUtil}.
35   *
36   * @version $Rev$ $Date$
37   */
38  public class ServletUtilTest extends TestCase {
39  
40      /**
41       * Tests {@link ServletUtil#getContainer(ServletContext)}.
42       */
43      public void testGetContainer() {
44          ServletContext context = EasyMock.createMock(ServletContext.class);
45          TilesContainer container = EasyMock.createMock(TilesContainer.class);
46          EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE)).andReturn(container);
47          EasyMock.replay(context, container);
48          assertEquals(container, ServletUtil.getContainer(context));
49          EasyMock.verify(context, container);
50      }
51  
52      /**
53       * Tests {@link ServletUtil#getContainer(ServletContext, String)}.
54       */
55      public void testGetContainerWithKey() {
56          ServletContext context = EasyMock.createMock(ServletContext.class);
57          TilesContainer container = EasyMock.createMock(TilesContainer.class);
58          EasyMock.expect(context.getAttribute("myKey")).andReturn(container);
59          EasyMock.replay(context, container);
60          assertEquals(container, ServletUtil.getContainer(context, "myKey"));
61          EasyMock.verify(context, container);
62      }
63  
64      /**
65       * Tests {@link ServletUtil#setContainer(ServletContext, TilesContainer)}.
66       */
67      public void testSetContainer() {
68          ServletContext context = EasyMock.createMock(ServletContext.class);
69          TilesContainer container = EasyMock.createMock(TilesContainer.class);
70          context.setAttribute(TilesAccess.CONTAINER_ATTRIBUTE, container);
71          EasyMock.replay(context, container);
72          ServletUtil.setContainer(context, container);
73          EasyMock.verify(context, container);
74      }
75  
76      /**
77       * Tests
78       * {@link ServletUtil#setContainer(ServletContext, TilesContainer, String)}.
79       */
80      public void testSetContainerWithKey() {
81          ServletContext context = EasyMock.createMock(ServletContext.class);
82          TilesContainer container = EasyMock.createMock(TilesContainer.class);
83          context.setAttribute("myKey", container);
84          EasyMock.replay(context, container);
85          ServletUtil.setContainer(context, container, "myKey");
86          EasyMock.verify(context, container);
87      }
88  
89      /**
90       * Tests
91       * {@link ServletUtil#setCurrentContainer(ServletRequest, ServletContext, String)}.
92       */
93      public void testSetCurrentContainer() {
94          ServletRequest request = EasyMock.createMock(ServletRequest.class);
95          ServletContext context = EasyMock.createMock(ServletContext.class);
96          TilesContainer container = EasyMock.createMock(TilesContainer.class);
97          EasyMock.expect(context.getAttribute("myKey")).andReturn(container);
98          request.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
99                  container);
100         EasyMock.expect(request.getAttribute(ServletUtil
101                 .CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
102         EasyMock.replay(request, context, container);
103         ServletUtil.setCurrentContainer(request, context, "myKey");
104         assertTrue("The containers are not the same", ServletUtil
105                 .getCurrentContainer(request, context) == container);
106     }
107 
108     /**
109      * Tests
110      * {@link ServletUtil#setCurrentContainer(ServletRequest, ServletContext, TilesContainer)}.
111      */
112     public void testSetCurrentContainerWithContainer() {
113         ServletRequest request = EasyMock.createMock(ServletRequest.class);
114         ServletContext context = EasyMock.createMock(ServletContext.class);
115         TilesContainer container = EasyMock.createMock(TilesContainer.class);
116         request.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
117                 container);
118         EasyMock.expect(request.getAttribute(ServletUtil
119                 .CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(container);
120         EasyMock.replay(request, context, container);
121         ServletUtil.setCurrentContainer(request, context, container);
122         assertTrue("The containers are not the same", ServletUtil
123                 .getCurrentContainer(request, context) == container);
124     }
125 
126     /**
127      * Tests {@link ServletUtil#getCurrentContainer(ServletRequest, ServletContext)}.
128      */
129     public void testGetCurrentContainer() {
130         ServletRequest request = EasyMock.createMock(ServletRequest.class);
131         ServletContext context = EasyMock.createMock(ServletContext.class);
132         TilesContainer defaultContainer = EasyMock.createMock(
133                 TilesContainer.class);
134         TilesContainer alternateContainer = EasyMock.createMock(
135                 TilesContainer.class);
136         EasyMock.expect(request.getAttribute(ServletUtil
137                 .CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(null);
138         EasyMock.expect(context.getAttribute(TilesAccess.CONTAINER_ATTRIBUTE))
139                 .andReturn(defaultContainer);
140         request.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
141                 defaultContainer);
142         request.setAttribute(ServletUtil.CURRENT_CONTAINER_ATTRIBUTE_NAME,
143                 alternateContainer);
144         EasyMock.expect(request.getAttribute(ServletUtil
145                 .CURRENT_CONTAINER_ATTRIBUTE_NAME)).andReturn(alternateContainer);
146         EasyMock.replay(request, context, defaultContainer, alternateContainer);
147         TilesContainer currentContainer = ServletUtil.getCurrentContainer(
148                 request, context);
149         assertTrue("The containers are not the same",
150                 currentContainer == defaultContainer);
151         ServletUtil.setCurrentContainer(request, context, alternateContainer);
152         currentContainer = ServletUtil.getCurrentContainer(request, context);
153         EasyMock.verify(request, context, defaultContainer, alternateContainer);
154         assertTrue("The containers are not the same",
155                 currentContainer == alternateContainer);
156     }
157 }