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
84
85
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 }