1   package com.atlassian.seraph.service.rememberme;
2   
3   import com.atlassian.seraph.config.SecurityConfig;
4   import junit.framework.TestCase;
5   import static org.mockito.Mockito.mock;
6   import static org.mockito.Mockito.when;
7   
8   import javax.servlet.http.HttpServletRequest;
9   
10  /**
11   */
12  public class TestDefaultRememberMeConfiguration extends TestCase
13  {
14      public static final int TWO_WEEKS = 2 * 7 * 24 * 60 * 60;
15      private static final String COOKIE_NAME = "atlassian.seraph.remember.me";
16  
17      private SecurityConfig securityConfig;
18      private HttpServletRequest servletRequest;
19      private DefaultRememberMeConfiguration configuration;
20  
21      @Override
22      protected void setUp() throws Exception
23      {
24          securityConfig = mock(SecurityConfig.class);
25          servletRequest = mock(HttpServletRequest.class);
26          configuration = new DefaultRememberMeConfiguration(securityConfig);
27      }
28  
29      public void testDefaults()
30      {
31          when(securityConfig.getLoginCookieKey()).thenReturn(COOKIE_NAME);
32          when(securityConfig.getLoginCookiePath()).thenReturn(null);
33          when(securityConfig.isInsecureCookie()).thenReturn(false);
34  
35          assertEquals(COOKIE_NAME, configuration.getCookieName());
36          assertEquals(false, configuration.isInsecureCookieAlwaysUsed());
37          assertEquals(null, configuration.getCookieDomain(null));
38          assertEquals(TWO_WEEKS, configuration.getCookieMaxAgeInSeconds());
39          assertEquals(false, configuration.isCookieHttpOnly());
40      }
41  
42      public void testSetPaths_NotSpecified_NoContext()
43      {
44          when(securityConfig.getLoginCookiePath()).thenReturn(null);
45          when(servletRequest.getContextPath()).thenReturn("");
46  
47          assertEquals("/", configuration.getCookiePath(servletRequest));
48      }
49  
50      public void testSetPaths_NotSpecified_RootContext()
51      {
52          when(securityConfig.getLoginCookiePath()).thenReturn(null);
53          when(servletRequest.getContextPath()).thenReturn("/");
54  
55          assertEquals("/", configuration.getCookiePath(servletRequest));
56      }
57  
58      public void testSetPaths_NotSpecified_WithContext()
59      {
60          when(securityConfig.getLoginCookiePath()).thenReturn(null);
61          when(servletRequest.getContextPath()).thenReturn("/context");
62          assertEquals("/context", configuration.getCookiePath(servletRequest));
63      }
64  
65      public void testSetPaths_Specified()
66      {
67          when(securityConfig.getLoginCookiePath()).thenReturn("/specified");
68          assertEquals("/specified", configuration.getCookiePath(servletRequest));
69      }
70  }