1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
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 }