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