1   package com.atlassian.seraph.auth;
2   
3   import junit.framework.TestCase;
4   import org.mockito.Mockito;
5   
6   import java.util.Arrays;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpSession;
9   
10  import static org.mockito.Mockito.mock;
11  import static org.mockito.Mockito.never;
12  import static org.mockito.Mockito.verify;
13  import static org.mockito.Mockito.when;
14  
15  /**
16   * Unit test for {@link com.atlassian.seraph.auth.SessionInvalidator}.
17   */
18  public class TestSessionInvalidator extends TestCase
19  {
20      public void testInvalidateSessionNullArg()
21      {
22          try
23          {
24              SessionInvalidator si = new SessionInvalidator(null);
25              fail("expected exception");
26          }
27          catch (RuntimeException expected)
28          {
29  
30          }
31      }
32  
33      public void testInvalidateSession()
34      {
35          SessionInvalidator si = new SessionInvalidator(Arrays.asList("monkey", "foobar"));
36          HttpServletRequest mockRequest = mock(HttpServletRequest.class);
37  
38          final MockSession session = new MockSession(false);
39          session.setAttribute("monkey", "chimp");
40          session.setAttribute("foobar", "baz");
41          session.setAttribute("legit", "shiznit");
42          session.setAttribute("groovy", "baby");
43  
44          when(mockRequest.getSession(false)).thenReturn(session);
45          when(mockRequest.getMethod()).thenReturn("POST");
46  
47          final HttpSession newSession = mock(HttpSession.class, "new session");
48          when(mockRequest.getSession(true)).thenReturn(newSession);
49  
50          si.invalidateSession(mockRequest);
51  
52          verify(newSession).setAttribute("legit", "shiznit");
53          verify(newSession).setAttribute("groovy", "baby");
54          verify(newSession, never()).setAttribute("monkey", "chimp");
55          verify(newSession, never()).setAttribute("foobar", "baz");
56  
57      }
58  
59      public void testInvalidateSessionNone()
60      {
61          SessionInvalidator si = new SessionInvalidator(Arrays.asList("monkey", "foobar"));
62          HttpServletRequest mockRequest = mock(HttpServletRequest.class);
63  
64          final MockSession session = new MockSession(true);
65          session.setAttribute("monkey", "chimp");
66          session.setAttribute("foobar", "baz");
67          session.setAttribute("legit", "shiznit");
68          session.setAttribute("groovy", "baby");
69  
70          when(mockRequest.getSession(true)).thenReturn(session);
71          when(mockRequest.getMethod()).thenReturn("POST");
72  
73          final HttpSession newSession = mock(HttpSession.class, "new session");
74          when(mockRequest.getSession(true)).thenReturn(newSession);
75  
76          si.invalidateSession(mockRequest);
77  
78          verify(newSession, never()).setAttribute(Mockito.anyString(), Mockito.<Object>any());
79  
80      }
81  }