1   package com.atlassian.seraph.config;
2   
3   import com.atlassian.seraph.auth.MockAuthenticator;
4   import com.atlassian.seraph.auth.MockRoleMapper;
5   import com.atlassian.seraph.auth.StubAuthenticator;
6   import com.atlassian.seraph.controller.NullSecurityController;
7   import com.atlassian.seraph.interceptor.LoginInterceptor;
8   import com.atlassian.seraph.interceptor.LogoutInterceptor;
9   import com.atlassian.seraph.service.PathService;
10  import junit.framework.TestCase;
11  import mock.MockLoginInterceptor;
12  
13  // DISABLED temporarily, since this test fails depending on which order the
14  // test is run in:
15  
16  // [junit] Will fork only once
17  //     [junit] Running mutiple tests
18  //    [junit] Running com.atlassian.seraph.logout.TestLogoutServlet
19  //    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.009 sec
20  //    [junit] Running com.atlassian.seraph.util.TestRedirectUtils
21  //    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.037 sec
22  //    [junit] Running com.atlassian.seraph.util.TestCookieUtils
23  //    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.108 sec
24  //    [junit] Running com.atlassian.seraph.auth.TestDefaultAuthenticator
25  //    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.324 sec
26  //    [junit] Running com.atlassian.seraph.controller.TestNullSecurityController
27  //    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.013 sec
28  //    [junit] Running com.atlassian.seraph.config.TestSecurityConfig
29  //    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.079 sec
30  //    [junit] TEST com.atlassian.seraph.config.TestSecurityConfig FAILED
31  
32  public class _TestSecurityConfig extends TestCase
33  {
34      public void testSecurityConfig() throws ConfigurationException
35      {
36          SecurityConfigFactory.setSecurityConfig(null);
37          SecurityConfig config = SecurityConfigFactory.getInstance("test-seraph-config.xml");
38          assertEquals(StubAuthenticator.class, config.getAuthenticator().getClass());
39          assertEquals(MockRoleMapper.class, config.getRoleMapper().getClass());
40          assertTrue(config.getController() instanceof NullSecurityController);
41          assertEquals(1, config.getServices().size());
42          assertTrue(config.getServices().get(0) instanceof PathService);
43  
44          assertEquals("xYz", config.getCookieEncoding());
45          assertEquals("/login.action", config.getLoginURL());
46          assertEquals(100, config.getAutoLoginCookieAge());
47          assertFalse(config.isInsecureCookie());
48          assertEquals("test_security_originalurl", config.getOriginalURLKey());
49          assertEquals(0, config.getInterceptors(LogoutInterceptor.class).size());
50          assertEquals(1, config.getInterceptors(LoginInterceptor.class).size());
51          assertTrue(config.getInterceptors(LoginInterceptor.class).get(0) instanceof MockLoginInterceptor);
52      }
53  
54      public void testSecurityConfigWithoutInsecureFlag() throws ConfigurationException
55      {
56          SecurityConfigFactory.setSecurityConfig(null);
57          SecurityConfig config = SecurityConfigFactory.getInstance("test-seraph-config-without-insecure-flag.xml");
58          assertEquals(MockAuthenticator.class, config.getAuthenticator().getClass());
59          assertEquals(MockRoleMapper.class, config.getRoleMapper().getClass());
60          assertTrue(config.getController() instanceof NullSecurityController);
61          assertEquals(1, config.getServices().size());
62          assertTrue(config.getServices().get(0) instanceof PathService);
63  
64          assertEquals("xYz", config.getCookieEncoding());
65          assertEquals("/login.action", config.getLoginURL());
66          assertEquals(100, config.getAutoLoginCookieAge());
67          assertFalse(config.isInsecureCookie());
68          assertEquals("test_security_originalurl", config.getOriginalURLKey());
69          assertEquals(0, config.getInterceptors(LogoutInterceptor.class).size());
70          assertEquals(1, config.getInterceptors(LoginInterceptor.class).size());
71          assertTrue(config.getInterceptors(LoginInterceptor.class).get(0) instanceof MockLoginInterceptor);
72      }
73  
74      public void testSecurityConfigWithInsecureFlag() throws ConfigurationException
75      {
76          SecurityConfigFactory.setSecurityConfig(null);
77          SecurityConfig config = SecurityConfigFactory.getInstance("test-seraph-config-with-insecure-flag.xml");
78          assertEquals(MockAuthenticator.class, config.getAuthenticator().getClass());
79          assertEquals(MockRoleMapper.class, config.getRoleMapper().getClass());
80          assertTrue(config.getController() instanceof NullSecurityController);
81          assertEquals(1, config.getServices().size());
82          assertTrue(config.getServices().get(0) instanceof PathService);
83  
84          assertEquals("xYz", config.getCookieEncoding());
85          assertEquals("/login.action", config.getLoginURL());
86          assertEquals(100, config.getAutoLoginCookieAge());
87          assertTrue(config.isInsecureCookie());
88          assertEquals("test_security_originalurl", config.getOriginalURLKey());
89          assertEquals(0, config.getInterceptors(LogoutInterceptor.class).size());
90          assertEquals(1, config.getInterceptors(LoginInterceptor.class).size());
91          assertTrue(config.getInterceptors(LoginInterceptor.class).get(0) instanceof MockLoginInterceptor);
92      }
93  
94      public void testPluggableLoginUrlStrategy() throws ConfigurationException
95      {
96          SecurityConfigFactory.setSecurityConfig(null);
97          SecurityConfig config = SecurityConfigFactory.getInstance("test-seraph-config-with-login-strategy.xml");
98  
99          assertEquals("/inserted/login.action", config.getLoginURL());
100         assertEquals("/inserted/linklogin.action", config.getLinkLoginURL());
101         assertEquals("/inserted/logout.action", config.getLogoutURL());
102     }
103 
104     public void testCustomCookiePath() throws ConfigurationException
105     {
106         SecurityConfigFactory.setSecurityConfig(null);
107         SecurityConfig config = SecurityConfigFactory.getInstance("test-seraph-config-with-custom-cookie-path.xml");
108 
109         assertEquals("/foo", config.getLoginCookiePath());
110         assertEquals("some-key", config.getLoginCookieKey());
111     }
112 }