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
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 }