KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > webservice > test > AccessControlServiceSystemTest


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.webservice.test;
18
19 import org.alfresco.webservice.accesscontrol.ACE;
20 import org.alfresco.webservice.accesscontrol.ACL;
21 import org.alfresco.webservice.accesscontrol.AccessControlServiceSoapBindingStub;
22 import org.alfresco.webservice.accesscontrol.AccessStatus;
23 import org.alfresco.webservice.accesscontrol.GetClassPermissionsResult;
24 import org.alfresco.webservice.accesscontrol.GetPermissionsResult;
25 import org.alfresco.webservice.accesscontrol.HasPermissionsResult;
26 import org.alfresco.webservice.accesscontrol.OwnerResult;
27 import org.alfresco.webservice.administration.NewUserDetails;
28 import org.alfresco.webservice.types.NamedValue;
29 import org.alfresco.webservice.types.Predicate;
30 import org.alfresco.webservice.types.Reference;
31 import org.alfresco.webservice.util.Constants;
32 import org.alfresco.webservice.util.WebServiceFactory;
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35
36 /**
37  * @author Roy Wetherall
38  */

39 public class AccessControlServiceSystemTest extends BaseWebServiceSystemTest
40 {
41     private static Log logger = LogFactory.getLog(AccessControlServiceSystemTest.class);
42     
43     private String JavaDoc userName1 = null;
44     private String JavaDoc userName2 = null;
45     
46     private AccessControlServiceSoapBindingStub accessControlService = WebServiceFactory.getAccessControlService();
47     
48     private void createUsers() throws Exception JavaDoc
49     {
50         this.userName1 = "user1" + System.currentTimeMillis();
51         this.userName2 = "user2" + System.currentTimeMillis();
52         
53         // Create some users we can user in the tests
54
String JavaDoc homeFolder = store.getScheme().getValue() + "://" + store.getAddress() + "/" + folderReference.getUuid();
55         NewUserDetails[] newUsers = new NewUserDetails[] {
56                 new NewUserDetails(
57                         this.userName1,
58                         "password",
59                         createPersonProperties(homeFolder, "first", "middle", "last", "email", "org")),
60                 new NewUserDetails(
61                         this.userName2,
62                         "password",
63                         createPersonProperties(homeFolder, "first", "middle", "last", "email", "org")) };
64
65         // Create the new users
66
WebServiceFactory.getAdministrationService().createUsers(newUsers);
67     }
68     
69     private NamedValue[] createPersonProperties(
70             String JavaDoc homeFolder,
71             String JavaDoc firstName,
72             String JavaDoc middleName,
73             String JavaDoc lastName,
74             String JavaDoc email,
75             String JavaDoc orgId)
76     {
77         // Create the new user objects
78
return new NamedValue[] {
79                 new NamedValue(Constants.PROP_USER_HOMEFOLDER, homeFolder),
80                 new NamedValue(Constants.PROP_USER_FIRSTNAME, firstName),
81                 new NamedValue(Constants.PROP_USER_MIDDLENAME, middleName),
82                 new NamedValue(Constants.PROP_USER_LASTNAME, lastName),
83                 new NamedValue(Constants.PROP_USER_EMAIL, email),
84                 new NamedValue(Constants.PROP_USER_ORGID, orgId) };
85     }
86     
87     private void removeUsers() throws Exception JavaDoc
88     {
89         String JavaDoc[] userNames = new String JavaDoc[]{this.userName1, this.userName2};
90         WebServiceFactory.getAdministrationService().deleteUsers(userNames);
91     }
92     
93     /**
94      * Test getting, setting and removing permissions
95      */

96     public void testGetSetRemoveACEs() throws Exception JavaDoc
97     {
98         // Resolve the predicate and create the test users
99
Predicate predicate = new Predicate(new Reference[]{BaseWebServiceSystemTest.contentReference}, null, null);
100         createUsers();
101         
102         // Get the ACL for the content node
103
ACL[] acls = this.accessControlService.getACLs(predicate, null);
104         assertNotNull(acls);
105         assertEquals(1, acls.length);
106         
107         // Check the details of the ace returned
108
ACL acl = acls[0];
109         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), acl.getReference().getUuid());
110         assertEquals(true, acl.isInheritPermissions());
111         assertNull(acl.getAces());
112         
113         // Add some acls to the content
114
ACE[] aces1 = new ACE[]
115         {
116            new ACE(this.userName1, Constants.READ, AccessStatus.acepted),
117            new ACE(this.userName2, Constants.WRITE, AccessStatus.acepted)
118         };
119         ACL[] acls1 = this.accessControlService.addACEs(predicate, aces1);
120         
121         // Check the details of the addACE result
122
assertNotNull(acls1);
123         assertEquals(1, acls1.length);
124         ACL acl1 = acls1[0];
125         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), acl1.getReference().getUuid());
126         assertEquals(true, acl1.isInheritPermissions());
127         assertNotNull(acl1.getAces());
128         assertEquals(2, acl1.getAces().length);
129         for (ACE ace1 : acl1.getAces())
130         {
131             if (ace1.getAuthority().equals(this.userName1) == true)
132             {
133                 assertEquals(Constants.READ, ace1.getPermission());
134                 assertEquals(AccessStatus.acepted, ace1.getAccessStatus());
135             }
136             else if (ace1.getAuthority().equals(this.userName2) == true)
137             {
138                 assertEquals(Constants.WRITE, ace1.getPermission());
139                 assertEquals(AccessStatus.acepted, ace1.getAccessStatus());
140             }
141             else
142             {
143                 fail("I wasn't expecting anything else here");
144             }
145         }
146         
147         // Double check the get works
148
ACL[] acls3 = this.accessControlService.getACLs(predicate, null);
149         assertNotNull(acls3);
150         assertEquals(1, acls3.length);
151         assertNotNull(acls3[0].getAces());
152         assertEquals(2, acls3[0].getAces().length);
153         
154         // Remove an ACE
155
ACE[] aces2 = new ACE[]
156           {
157              new ACE(this.userName1, Constants.READ, AccessStatus.acepted)
158           };
159         ACL[] acls4 = this.accessControlService.removeACEs(predicate, aces2);
160         assertNotNull(acls4);
161         assertEquals(1, acls4.length);
162         assertNotNull(acls4[0].getAces());
163         assertEquals(1, acls4[0].getAces().length);
164         
165         // Double check get
166
ACL[] acls5 = this.accessControlService.getACLs(predicate, null);
167         assertNotNull(acls5);
168         assertEquals(1, acls5.length);
169         assertNotNull(acls5[0].getAces());
170         assertEquals(1, acls5[0].getAces().length);
171         
172         // Remove all
173
ACL[] acls6 = this.accessControlService.removeACEs(predicate, null);
174         assertNotNull(acls6);
175         assertEquals(1, acls6.length);
176         assertNull(acls6[0].getAces());
177         
178         // Remove the users added
179
removeUsers();
180     }
181     
182     /**
183      * Test getPermissions
184      *
185      * @throws Exception
186      */

187     public void testGetPermissions() throws Exception JavaDoc
188     {
189         // Create predicate
190
Predicate predicate = new Predicate(new Reference[]{BaseWebServiceSystemTest.contentReference}, null, null);
191         
192         // Get the permissions that can be set
193
GetPermissionsResult[] results = this.accessControlService.getPermissions(predicate);
194         
195         // Check the result
196
assertNotNull(results);
197         assertEquals(1, results.length);
198         GetPermissionsResult result = results[0];
199         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), result.getReference().getUuid());
200         assertNotNull(result.getPermissions());
201                
202         if (logger.isDebugEnabled() == true)
203         {
204             System.out.println("Node permissions:");
205             for (String JavaDoc permission : result.getPermissions())
206             {
207                 System.out.println(permission);
208             }
209             System.out.println("\n");
210         }
211     }
212     
213     /**
214      * Test getClassPermissions
215      *
216      * @throws Exception
217      */

218     public void testGetClassPermissions() throws Exception JavaDoc
219     {
220         // Get the permissions that can be set
221
GetClassPermissionsResult[] results = this.accessControlService.getClassPermissions(new String JavaDoc[]{Constants.TYPE_FOLDER});
222         
223         // Check the result
224
assertNotNull(results);
225         assertEquals(1, results.length);
226         GetClassPermissionsResult result = results[0];
227         assertEquals(Constants.TYPE_FOLDER, result.getClassName());
228         assertNotNull(result.getPermissions());
229                
230         if (logger.isDebugEnabled() == true)
231         {
232             System.out.println("Class permissions:");
233             for (String JavaDoc permission : result.getPermissions())
234             {
235                 System.out.println(permission);
236             }
237             System.out.println("\n");
238         }
239         
240     }
241     
242     /**
243      * Test hasPermissions
244      *
245      * @throws Exception
246      */

247     public void testHasPermissions() throws Exception JavaDoc
248     {
249         Predicate predicate = convertToPredicate(BaseWebServiceSystemTest.contentReference);
250         
251         HasPermissionsResult[] results = this.accessControlService.hasPermissions(predicate, new String JavaDoc[]{Constants.WRITE});
252         assertNotNull(results);
253         assertEquals(1, results.length);
254         
255         HasPermissionsResult result = results[0];
256         assertEquals(Constants.WRITE, result.getPermission());
257         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), result.getReference().getUuid());
258         assertEquals(AccessStatus.acepted, result.getAccessStatus());
259     }
260     
261     /**
262      * Test setInheritPermissions
263      *
264      * @throws Exception
265      */

266     public void testSetInheritPermissions() throws Exception JavaDoc
267     {
268         ACL[] acls = this.accessControlService.setInheritPermission(convertToPredicate(BaseWebServiceSystemTest.contentReference), false);
269         assertNotNull(acls);
270         assertEquals(1, acls.length);
271         ACL acl = acls[0];
272         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), acl.getReference().getUuid());
273         assertFalse(acl.isInheritPermissions());
274     }
275     
276     /**
277      * Test setOwnable and getOwnable
278      * @throws Exception
279      */

280     public void testSetGetOwnable() throws Exception JavaDoc
281     {
282         // Create a couple of users
283
createUsers();
284         
285         // Check the current owner
286
OwnerResult[] results = this.accessControlService.getOwners(convertToPredicate(BaseWebServiceSystemTest.contentReference));
287         assertNotNull(results);
288         assertEquals(1, results.length);
289         OwnerResult result = results[0];
290         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), result.getReference().getUuid());
291         assertEquals("admin", result.getOwner());
292         
293         // Reset the owner
294
OwnerResult[] results2 = this.accessControlService.setOwners(convertToPredicate(BaseWebServiceSystemTest.contentReference), this.userName1);
295         assertNotNull(results2);
296         assertEquals(1, results2.length);
297         OwnerResult result2 = results2[0];
298         assertEquals(BaseWebServiceSystemTest.contentReference.getUuid(), result2.getReference().getUuid());
299         assertEquals(this.userName1, result2.getOwner());
300         
301         // Remove the created users
302
removeUsers();
303     }
304 }
305
Popular Tags