1   package com.atlassian.seraph.auth;
2   
3   import com.atlassian.seraph.elevatedsecurity.ElevatedSecurityGuard;
4   import com.atlassian.seraph.service.rememberme.RememberMeService;
5   
6   import java.security.Principal;
7   import java.util.HashMap;
8   import java.util.Map;
9   
10  import javax.servlet.http.HttpServletRequest;
11  import javax.servlet.http.HttpServletResponse;
12  
13  /**
14   * Sub-class of the DefaultAuthenticator that overrides some
15   * hard-coded OSUser references for testing.
16   *
17   * It now has some back doors to allow for better testing.
18   */
19  public class StubAuthenticator extends DefaultAuthenticator
20  {
21      private final Map<String, Principal> users = new HashMap<String, Principal>();
22      private ElevatedSecurityGuard elevatedSecurityGuard;
23      private RememberMeService rememberMeService;
24      private boolean desiredLoginAnswer = true;
25  
26      @Override
27      public boolean login(final HttpServletRequest request, final HttpServletResponse response, final String username, final String password, final boolean cookie)
28      {
29          return desiredLoginAnswer;
30      }
31  
32      @Override
33      protected boolean authoriseUserAndEstablishSession(final HttpServletRequest request, final HttpServletResponse response, final Principal principal)
34      {
35          return desiredLoginAnswer;
36      }
37  
38      @Override
39      protected Principal getUser(final String username)
40      {
41          return users.get(username);
42      }
43  
44      void addUser(final String username, final Principal user)
45      {
46          users.put(username, user);
47      }
48  
49      @Override
50      protected ElevatedSecurityGuard getElevatedSecurityGuard()
51      {
52          if (elevatedSecurityGuard == null)
53          {
54              return super.getElevatedSecurityGuard();
55          }
56          return elevatedSecurityGuard;
57      }
58  
59      @Override
60      protected RememberMeService getRememberMeService()
61      {
62          if (rememberMeService == null)
63          {
64              return super.getRememberMeService();
65          }
66          return rememberMeService;
67      }
68  
69      protected void setElevatedSecurityGuard(ElevatedSecurityGuard elevatedSecurityGuard)
70      {
71          this.elevatedSecurityGuard = elevatedSecurityGuard;
72      }
73  
74      protected void setRememberMeService(RememberMeService rememberMeService)
75      {
76          this.rememberMeService = rememberMeService;
77      }
78  
79      void setDesiredLoginAnswer(boolean desiredLoginAnswer)
80      {
81          this.desiredLoginAnswer = desiredLoginAnswer;
82      }
83  }