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  package org.apache.shiro.web.servlet;
20  
21  import static org.easymock.EasyMock.*;
22  
23  import javax.servlet.ServletContext;
24  import javax.servlet.http.HttpServletRequest;
25  
26  import org.apache.shiro.session.Session;
27  import org.apache.shiro.subject.Subject;
28  import org.apache.shiro.util.ThreadContext;
29  import org.junit.Before;
30  import org.junit.Test;
31  
32  import junit.framework.TestCase;
33  
34  public class ShiroHttpServletRequestTest extends TestCase {
35  
36  	private ShiroHttpServletRequest request;
37  	
38  	private HttpServletRequest mockRequest;
39      private ServletContext mockContext;
40      private Subject mockSubject;
41  	
42      @Before
43      public void setUp() throws Exception {
44      	this.mockRequest = createMock(HttpServletRequest.class);
45      	this.mockContext = createMock(ServletContext.class);
46      	this.mockSubject = createMock(Subject.class);
47      	
48      	ThreadContext.bind(this.mockSubject);
49      	this.request = new ShiroHttpServletRequest(mockRequest, mockContext, false);
50      }
51      
52      /**
53       * Test asserting <a href="https://issues.apache.org/jira/browse/SHIRO-637">SHIRO-637<a/>.
54       */
55      @Test
56      public void testRegetSession() throws Exception {
57          Session session1 = createMock(Session.class);
58          Session session2 = createMock(Session.class);
59      	
60          mockSubject.logout();
61          expect(mockSubject.getSession(true))
62             .andReturn(session1).times(1)
63             .andReturn(session2).times(1);
64          expect(mockSubject.getSession(false))
65              .andReturn(session1).times(2)
66              .andReturn(null).times(3);
67          replay(mockSubject);
68          
69          assertNotNull(request.getSession(true));
70          assertNotNull(request.getSession(false));
71          
72          mockSubject.logout();
73          
74          assertNull(request.getSession(false));
75          assertNotNull(request.getSession(true));
76          verify(mockSubject);
77      }
78  }