1 package com.atlassian.seraph.auth;
2
3 import com.atlassian.seraph.config.SecurityConfig;
4 import com.atlassian.seraph.filter.MockSecurityConfig;
5 import junit.framework.TestCase;
6 import mock.MockHttpRequest;
7 import mock.MockHttpResponse;
8 import mock.MockPrincipal;
9
10 import javax.servlet.http.HttpServletRequest;
11 import java.security.Principal;
12
13
14
15 public class TestDefaultAuthenticatorSessionEstablishment extends TestCase
16 {
17
18 private MockPrincipal principalFred;
19 private MockPrincipal principalBill;
20 private MockSession httpSession;
21 private MockHttpRequest httpRequest;
22 private MockHttpResponse httpResponse;
23
24 protected void setUp() throws Exception
25 {
26 super.setUp();
27 principalFred = new MockPrincipal("fred");
28 principalBill = new MockPrincipal("bill");
29 httpSession = new MockSession(false);
30 httpRequest = new MockHttpRequest(httpSession);
31 httpResponse = new MockHttpResponse();
32 }
33
34 public void testSessionContext_NeedsTearDown_NoOneInSession()
35 {
36 StubAuthenticator authenticator = new StubAuthenticator(new StubSecurityConfig());
37 authenticator.authoriseUserAndEstablishSession(httpRequest, httpResponse, principalFred);
38
39 assertEquals(1, httpSession.getInvalidateCount());
40 }
41
42 public void testSessionContext_NeedsTearDown_DifferentPrincipalInSession()
43 {
44 httpSession.setAttribute(DefaultAuthenticator.LOGGED_IN_KEY, principalBill);
45
46 StubAuthenticator authenticator = new StubAuthenticator(new StubSecurityConfig());
47 authenticator.authoriseUserAndEstablishSession(httpRequest, httpResponse, principalFred);
48
49 assertEquals(1, httpSession.getInvalidateCount());
50 }
51
52 public void testSessionContext_DoesNotNeedTearDown_PrincipalInSession()
53 {
54 MockPrincipal principalOtherFred = new MockPrincipal("fred");
55 httpSession.setAttribute(DefaultAuthenticator.LOGGED_IN_KEY, principalOtherFred);
56
57 StubAuthenticator authenticator = new StubAuthenticator(new StubSecurityConfig());
58 authenticator.authoriseUserAndEstablishSession(httpRequest, httpResponse, principalFred);
59
60 assertEquals(0, httpSession.getInvalidateCount());
61 }
62
63 private static class StubAuthenticator extends DefaultAuthenticator
64 {
65 SecurityConfig securityConfig;
66
67 private StubAuthenticator(SecurityConfig securityConfig)
68 {
69 this.securityConfig = securityConfig;
70 }
71
72 @Override
73 protected boolean isAuthorised(HttpServletRequest httpServletRequest, Principal principal)
74 {
75 return true;
76 }
77
78 @Override
79 protected SecurityConfig getConfig()
80 {
81 return securityConfig;
82 }
83
84 @Override
85 protected Principal getUser(String username)
86 {
87 return null;
88 }
89
90 @Override
91 protected boolean authenticate(Principal user, String password) throws AuthenticatorException
92 {
93 return false;
94 }
95 }
96
97 private static class StubSecurityConfig extends MockSecurityConfig
98 {
99 @Override
100 public boolean isInvalidateSessionOnLogin()
101 {
102 return true;
103 }
104 }
105
106 }