1 package org.marketchangers.prayer.portlet;
2
3 import java.io.IOException;
4 import java.util.Hashtable;
5 import java.util.Map;
6
7 import javax.portlet.ActionRequest;
8 import javax.portlet.ActionResponse;
9 import javax.portlet.Portlet;
10 import javax.portlet.PortletConfig;
11 import javax.portlet.PortletContext;
12 import javax.portlet.PortletException;
13 import javax.portlet.PortletPreferences;
14 import javax.portlet.PortletRequestDispatcher;
15 import javax.portlet.RenderRequest;
16 import javax.portlet.RenderResponse;
17
18 import junit.framework.TestCase;
19
20 import org.marketchangers.PortalUserManager;
21 import org.marketchangers.ServiceLocator;
22
23 import com.mockobjects.dynamic.C;
24 import com.mockobjects.dynamic.Mock;
25
26 /***
27 * @author <a href="mailto:mtodd@wc-group.com">Matthew Todd</a>
28 */
29 public class RoleSelectionPortletTest extends TestCase {
30 private Portlet portlet;
31
32 private Mock actionRequest;
33 private Mock actionResponse;
34 private Mock config;
35 private Mock context;
36 private Mock dispatcher;
37 private Mock preferences;
38 private Mock renderRequest;
39 private Mock renderResponse;
40 private Mock serviceLocator;
41 private Mock userManager;
42
43
44 public void setUp() {
45 portlet = new RoleSelectionPortlet();
46
47 actionRequest = new Mock(ActionRequest.class);
48 actionResponse = new Mock(ActionResponse.class);
49 config = new Mock(PortletConfig.class);
50 context = new Mock(PortletContext.class);
51 dispatcher = new Mock(PortletRequestDispatcher.class);
52 preferences = new Mock(PortletPreferences.class);
53 renderRequest = new Mock(RenderRequest.class);
54 renderResponse = new Mock(RenderResponse.class);
55 serviceLocator = new Mock(ServiceLocator.class);
56 userManager = new Mock(PortalUserManager.class);
57 }
58
59 public void tearDown() {
60 actionRequest.verify();
61 actionResponse.verify();
62 config.verify();
63 context.verify();
64 dispatcher.verify();
65 preferences.verify();
66 renderRequest.verify();
67 renderResponse.verify();
68 serviceLocator.verify();
69 userManager.verify();
70 }
71
72
73 public void testDisplaysRolesFromPreferences()
74 throws PortletException, IOException {
75
76 renderRequest.expectAndReturn(
77 "getPreferences",
78 (PortletPreferences) preferences.proxy());
79
80 preferences.expectAndReturn(
81 "getValues",
82 C.args(C.eq("roles"), C.IS_NULL),
83 new String[] { "foo", "bar" });
84
85 renderRequest.expectAndReturn("getRemoteUser", "JOE BOB");
86
87 serviceLocator.expectAndReturn(
88 "get",
89 PortalUserManager.class,
90 (PortalUserManager) userManager.proxy());
91
92 userManager.expectAndReturn(
93 "isUserInRole",
94 C.args(C.eq("JOE BOB"), C.eq("foo")),
95 true);
96
97 userManager.expectAndReturn(
98 "isUserInRole",
99 C.args(C.eq("JOE BOB"), C.eq("bar")),
100 false);
101
102 Map roles = new Hashtable();
103 roles.put("foo", "Remove");
104 roles.put("bar", "Add");
105
106 renderRequest.expect(
107 "setAttribute",
108 C.args(C.eq("roleActions"), C.eq(roles)));
109
110 config.expectAndReturn(
111 "getPortletContext",
112 (PortletContext) context.proxy());
113
114 context.expectAndReturn(
115 "getAttribute",
116 ServiceLocator.KEY,
117 (ServiceLocator) serviceLocator.proxy());
118
119 context.expectAndReturn(
120 "getRequestDispatcher",
121 "/roleSelection.jsp",
122 (PortletRequestDispatcher) dispatcher.proxy());
123
124 dispatcher.expect(
125 "include",
126 C.args(
127 C.eq((RenderRequest) renderRequest.proxy()),
128 C.eq((RenderResponse) renderResponse.proxy())));
129
130 portlet.init((PortletConfig) config.proxy());
131
132 portlet.render(
133 (RenderRequest) renderRequest.proxy(),
134 (RenderResponse) renderResponse.proxy());
135 }
136
137 public void testAddsRequestRoles() throws PortletException, IOException {
138
139 actionRequest.expectAndReturn(
140 "getPreferences",
141 (PortletPreferences) preferences.proxy());
142
143 preferences.expectAndReturn(
144 "getValues",
145 C.args(C.eq("roles"), C.IS_NULL),
146 new String[] { "foo", "bar", "baz" });
147
148 actionRequest.expectAndReturn("getParameter", "foo", "Add");
149 actionRequest.expectAndReturn("getParameter", "bar", "Remove");
150 actionRequest.expectAndReturn("getParameter", "baz", null);
151
152 config.expectAndReturn(
153 "getPortletContext",
154 (PortletContext) context.proxy());
155
156 context.expectAndReturn(
157 "getAttribute",
158 ServiceLocator.KEY,
159 (ServiceLocator) serviceLocator.proxy());
160
161 serviceLocator.expectAndReturn(
162 "get",
163 PortalUserManager.class,
164 (PortalUserManager) userManager.proxy());
165
166 actionRequest.expectAndReturn("getRemoteUser", "JOE BOB");
167
168 userManager.expectAndReturn(
169 "addRole",
170 C.args(C.eq("JOE BOB"), C.eq("foo")),
171 true);
172
173 userManager.expectAndReturn(
174 "removeRole",
175 C.args(C.eq("JOE BOB"), C.eq("bar")),
176 true);
177
178 portlet.init((PortletConfig) config.proxy());
179
180 portlet.processAction(
181 (ActionRequest) actionRequest.proxy(),
182 (ActionResponse) actionResponse.proxy());
183 }
184 }