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