KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > roller > business > PermissionTest


1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. The ASF licenses this file to You
4 * under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License. For additional information regarding
15 * copyright in this work, please see the NOTICE file in the top level
16 * directory of this distribution.
17 */

18 package org.apache.roller.business;
19
20 import java.util.ArrayList JavaDoc;
21 import java.util.Collection JavaDoc;
22 import java.util.List JavaDoc;
23 import junit.framework.Test;
24 import junit.framework.TestCase;
25 import junit.framework.TestSuite;
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28 import org.apache.roller.TestUtils;
29 import org.apache.roller.model.RollerFactory;
30 import org.apache.roller.model.UserManager;
31 import org.apache.roller.pojos.PermissionsData;
32 import org.apache.roller.pojos.UserData;
33 import org.apache.roller.pojos.WebsiteData;
34
35
36 /**
37  * Test User/Weblog Permissions related business operations.
38  */

39 public class PermissionTest extends TestCase {
40     
41     public static Log log = LogFactory.getLog(PermissionTest.class);
42     
43     UserData testUser = null;
44     WebsiteData testWeblog = null;
45     
46     
47     public PermissionTest(String JavaDoc name) {
48         super(name);
49     }
50     
51     
52     public static Test suite() {
53         return new TestSuite(PermissionTest.class);
54     }
55     
56     
57     /**
58      * All tests in this suite require a user and a weblog.
59      */

60     public void setUp() throws Exception JavaDoc {
61         try {
62             testUser = TestUtils.setupUser("permsTestUser");
63             testWeblog = TestUtils.setupWeblog("permsTestWeblog", testUser);
64             TestUtils.endSession(true);
65         } catch (Exception JavaDoc ex) {
66             log.error(ex);
67             throw new Exception JavaDoc("Test setup failed", ex);
68         }
69     }
70     
71     public void tearDown() throws Exception JavaDoc {
72         try {
73             TestUtils.teardownWeblog(testWeblog.getId());
74             TestUtils.teardownUser(testUser.getId());
75             TestUtils.endSession(true);
76         } catch (Exception JavaDoc ex) {
77             log.error(ex);
78             throw new Exception JavaDoc("Test teardown failed", ex);
79         }
80     }
81     
82     
83     /**
84      * Test basic persistence operations ... Create, Update, Delete.
85      */

86     public void testPermissionsCRUD() throws Exception JavaDoc {
87         
88         UserManager mgr = RollerFactory.getRoller().getUserManager();
89         PermissionsData perm = null;
90         
91         // delete permissions
92
perm = mgr.getPermissions(testWeblog, testUser);
93         assertNotNull(perm);
94         mgr.removePermissions(perm);
95         TestUtils.endSession(true);
96         
97         // check that delete was successful
98
perm = null;
99         perm = mgr.getPermissions(testWeblog, testUser);
100         assertNull(perm);
101         
102         // create permissions
103
perm = new PermissionsData();
104         perm.setUser(testUser);
105         perm.setWebsite(testWeblog);
106         perm.setPending(false);
107         perm.setPermissionMask(PermissionsData.ADMIN);
108         mgr.savePermissions(perm);
109         TestUtils.endSession(true);
110         
111         // check that create was successful
112
perm = null;
113         perm = mgr.getPermissions(testWeblog, testUser);
114         assertNotNull(perm);
115         assertEquals(PermissionsData.ADMIN, perm.getPermissionMask());
116         
117         // update permissions
118
perm.setPermissionMask(PermissionsData.LIMITED);
119         mgr.savePermissions(perm);
120         TestUtils.endSession(true);
121         
122         // check that update was successful
123
perm = null;
124         perm = mgr.getPermissions(testWeblog, testUser);
125         assertNotNull(perm);
126         assertEquals(PermissionsData.LIMITED, perm.getPermissionMask());
127     }
128     
129     
130     /**
131      * Test lookup mechanisms.
132      */

133     public void testPermissionsLookups() throws Exception JavaDoc {
134         
135         // we need a second user for this test
136
UserData user = TestUtils.setupUser("foofoo");
137         TestUtils.endSession(true);
138         
139         UserManager mgr = RollerFactory.getRoller().getUserManager();
140         PermissionsData perm = null;
141         List JavaDoc perms = null;
142         
143         // get all permissions for a user
144
perms = mgr.getAllPermissions(user);
145         assertEquals(0, perms.size());
146         perms = mgr.getAllPermissions(testUser);
147         assertEquals(1, perms.size());
148         
149         // get all permissions for a weblog
150
perms = mgr.getAllPermissions(testWeblog);
151         assertEquals(1, perms.size());
152         
153         perm = new PermissionsData();
154         perm.setUser(user);
155         perm.setWebsite(testWeblog);
156         perm.setPending(true);
157         perm.setPermissionMask(PermissionsData.AUTHOR);
158         mgr.savePermissions(perm);
159         
160         // get pending permissions for a user
161
perms = mgr.getPendingPermissions(testUser);
162         assertEquals(0, perms.size());
163         perms = mgr.getPendingPermissions(user);
164         assertEquals(1, perms.size());
165         
166         // get pending permissions for a weblog
167
perms = mgr.getPendingPermissions(testWeblog);
168         assertEquals(1, perms.size());
169         
170         // get permissions by id
171
String JavaDoc id = perm.getId();
172         perm = null;
173         perm = mgr.getPermissions(id);
174         assertNotNull(perm);
175         assertEquals(id, perm.getId());
176         
177         // get permissions for a specific user/weblog
178
perm = null;
179         perm = mgr.getPermissions(testWeblog, testUser);
180         assertNotNull(perm);
181         assertEquals(PermissionsData.ADMIN, perm.getPermissionMask());
182         perm = null;
183         perm = mgr.getPermissions(testWeblog, user);
184         assertNotNull(perm);
185         assertEquals(PermissionsData.AUTHOR, perm.getPermissionMask());
186         assertEquals(true, perm.isPending());
187         
188         // cleanup the extra test user
189
TestUtils.teardownUser(user.getId());
190         TestUtils.endSession(true);
191     }
192     
193     
194     /**
195      * Tests weblog invitation process.
196      */

197     public void testInvitations() throws Exception JavaDoc {
198         
199         // we need a second user for this test
200
UserData user = TestUtils.setupUser("foobee");
201         TestUtils.endSession(true);
202         
203         UserManager mgr = RollerFactory.getRoller().getUserManager();
204         PermissionsData perm = null;
205         List JavaDoc perms = null;
206         
207         // invite user to weblog
208
perm = mgr.inviteUser(testWeblog, user, PermissionsData.LIMITED);
209         String JavaDoc id = perm.getId();
210         TestUtils.endSession(true);
211         
212         // accept invitation
213
perm = mgr.getPermissions(testWeblog, user);
214         perm.setPending(false);
215         mgr.savePermissions(perm);
216         TestUtils.endSession(true);
217         
218         // re-query now that we have changed things
219
user = mgr.getUserByUserName(user.getUserName());
220         testWeblog = mgr.getWebsiteByHandle(testWeblog.getHandle());
221         
222         // assert that invitation list is empty
223
assertTrue(mgr.getPendingPermissions(user).isEmpty());
224         assertTrue(mgr.getPendingPermissions(testWeblog).isEmpty());
225         
226         // assert that user is member of weblog
227
assertFalse(mgr.getPermissions(testWeblog, user).isPending());
228         List JavaDoc weblogs = mgr.getWebsites(user, null, null, null, null, 0, -1);
229         assertEquals(1, weblogs.size());
230         assertEquals(testWeblog.getId(), ((WebsiteData)weblogs.get(0)).getId());
231         
232         // assert that website has user
233
List JavaDoc users = mgr.getUsers(testWeblog, null, 0, -1);
234         assertEquals(2, users.size());
235         
236         // test user can be retired from website
237
mgr.retireUser(testWeblog, user);
238         TestUtils.endSession(true);
239         
240         user = mgr.getUser(user.getId());
241         weblogs = mgr.getWebsites(user, null, null, null, null, 0, -1);
242         assertEquals(0, weblogs.size());
243         
244         // cleanup the extra test user
245
TestUtils.teardownUser(user.getId());
246         TestUtils.endSession(true);
247     }
248     
249 }
250
251
Popular Tags