1   /**
2    *
3    */
4   package org.melati.login.test;
5   
6   
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   import javax.servlet.http.HttpSession;
10  
11  import org.melati.login.HttpBasicAuthenticationAccessHandler;
12  import org.melati.poem.util.EmptyEnumeration;
13  import org.melati.util.HttpServletRequestParameters;
14  
15  import com.mockobjects.constraint.Constraint;
16  import com.mockobjects.constraint.IsAnything;
17  import com.mockobjects.constraint.IsEqual;
18  import com.mockobjects.constraint.IsInstanceOf;
19  import com.mockobjects.dynamic.Mock;
20  import com.mockobjects.dynamic.OrderedMock;
21  
22  /**
23   * @author timp
24   *
25   */
26  public class HttpBasicAuthenticationAccessHandlerTest extends AccessHandlerTestAbstract {
27  
28    /**
29     * @param name
30     */
31    public HttpBasicAuthenticationAccessHandlerTest(String name) {
32      super(name);
33    }
34  
35    public void setUp() throws Exception {
36      super.setUp();
37      Mock mockSession = new Mock(HttpSession.class);
38      mockSession.expectAndReturn("getId", null);
39      mockSession.expectAndReturn("getId", null);
40      mockSession.expectAndReturn("getId", null);
41      Mock mockHttpServletRequest = new Mock(HttpServletRequest.class);
42      mockHttpServletRequest.expectAndReturn( "getParameterNames", new EmptyEnumeration());
43      mockHttpServletRequest.expectAndReturn("getContextPath", null);
44      mockHttpServletRequest.expectAndReturn("getServletPath", null);
45      mockHttpServletRequest.expectAndReturn("getPathInfo", null);
46      mockHttpServletRequest.expectAndReturn("getQueryString", null);
47      mockHttpServletRequest.expectAndReturn("getMethod", null);
48      mockHttpServletRequest.expectAndReturn("getSession", Boolean.TRUE, mockSession.proxy());
49      mockHttpServletRequest.expectAndReturn("getParameterNames", new EmptyEnumeration());
50      mockHttpServletRequest.expectAndReturn("getContextPath", null);
51      mockHttpServletRequest.expectAndReturn("getServletPath", null);
52      mockHttpServletRequest.expectAndReturn("getPathInfo", null);
53      mockHttpServletRequest.expectAndReturn("getQueryString", null);
54      mockHttpServletRequest.expectAndReturn("getMethod", null);
55      mockHttpServletRequest.expectAndReturn("getSession", Boolean.TRUE, mockSession.proxy());
56      mockHttpServletRequest.expectAndReturn("getSession", Boolean.TRUE, mockSession.proxy());
57      mockHttpServletRequest.expectAndReturn("getParameterNames", new EmptyEnumeration());
58      mockHttpServletRequest.expectAndReturn("getContextPath", null);
59      mockHttpServletRequest.expectAndReturn("getServletPath", null);
60      mockHttpServletRequest.expectAndReturn("getPathInfo", null);
61      mockHttpServletRequest.expectAndReturn("getQueryString", null);
62      mockHttpServletRequest.expectAndReturn("getMethod", null);
63      mockHttpServletRequest.expectAndReturn("getSession", Boolean.TRUE, mockSession.proxy());
64      mockHttpServletRequest.expectAndReturn("getParameterNames", new EmptyEnumeration());
65      mockHttpServletRequest.expectAndReturn("getContextPath", null);
66      mockHttpServletRequest.expectAndReturn("getServletPath", null);
67      mockHttpServletRequest.expectAndReturn("getPathInfo", null);
68      mockHttpServletRequest.expectAndReturn("getQueryString", null);
69      mockHttpServletRequest.expectAndReturn("getMethod", null);
70      mockHttpServletRequest.expectAndReturn("getParameterNames", new EmptyEnumeration());
71      mockHttpServletRequest.expectAndReturn("getParameterNames", new EmptyEnumeration());
72      mockHttpServletRequest.expectAndReturn("getHeader", "Authorization", null);
73      mockSession.expect("setAttribute", new Constraint []  {new IsEqual("org.melati.login.Login.triggeringRequestParameters"),
74          new IsInstanceOf(HttpServletRequestParameters.class)});
75      mockSession.expect("setAttribute", new Constraint []  {new IsEqual("org.melati.login.Login.triggeringException"),
76          new IsInstanceOf(org.melati.poem.AccessPoemException.class)});
77      mockSession.expect("getAttribute", "org.melati.login.HttpSessionAccessHandler.overlayParameters");
78      mockSession.expect("getAttribute", "org.melati.login.HttpSessionAccessHandler.user");
79  
80      mockHttpServletRequest.expectAndReturn("getSession", Boolean.TRUE, mockSession.proxy());
81      mockHttpServletRequest.expectAndReturn("getCookies", null);
82      Mock mockHttpServletResponse = new OrderedMock(HttpServletResponse.class, "Response with non-default name");
83      //mockHttpServletResponse.expect("sendRedirect",new IsInstanceOf(String.class));
84      //mockSession.expectAndReturn("getAttribute", "org.melati.login.HttpSessionAccessHandler.overlayParameters",
85      //    new HttpServletRequestParameters((HttpServletRequest)mockHttpServletRequest.proxy()));
86  
87      mockSession.expectAndReturn("setAttribute", "org.melati.login.Login.triggeringRequestParameters",
88          new HttpServletRequestParameters((HttpServletRequest)mockHttpServletRequest.proxy()));
89      mockHttpServletResponse.expect("setHeader", new Constraint[] {new IsEqual("WWW-Authenticate"), new IsEqual("Basic realm=\"melati\"")});
90      mockHttpServletResponse.expect("sendError", new Constraint[] {new IsAnything(), 
91                         new IsEqual("You need the capability Cool but your access token _guest_ doesn't confer it")});
92      m.setRequest((HttpServletRequest)mockHttpServletRequest.proxy());
93      m.setResponse((HttpServletResponse)mockHttpServletResponse.proxy());
94    }
95  
96    /**
97     * Create the AccessHandler and set its input stream.
98     *
99     * @see org.melati.login.test.AccessHandlerTestAbstract#setAccessHandler()
100    */
101   public void setAccessHandler() {
102     HttpBasicAuthenticationAccessHandler ah = new HttpBasicAuthenticationAccessHandler();
103     it = ah;
104   }
105 
106 }