KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opencms > file > TestDeletion


1 /*
2  * File : $Source: /usr/local/cvs/opencms/test/org/opencms/file/TestDeletion.java,v $
3  * Date : $Date: 2006/03/27 14:52:46 $
4  * Version: $Revision: 1.8 $
5  *
6  * This library is part of OpenCms -
7  * the Open Source Content Mananagement System
8  *
9  * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * For further information about Alkacon Software GmbH, please see the
22  * company website: http://www.alkacon.com
23  *
24  * For further information about OpenCms, please see the
25  * project website: http://www.opencms.org
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */

31
32 package org.opencms.file;
33
34 import org.opencms.file.types.CmsResourceTypePlain;
35 import org.opencms.main.OpenCms;
36 import org.opencms.security.CmsAccessControlEntry;
37 import org.opencms.security.I_CmsPrincipal;
38 import org.opencms.test.OpenCmsTestCase;
39 import org.opencms.test.OpenCmsTestProperties;
40
41 import java.util.Iterator JavaDoc;
42 import java.util.List JavaDoc;
43
44 import junit.extensions.TestSetup;
45 import junit.framework.Test;
46 import junit.framework.TestSuite;
47
48 /**
49  * Unit tests for VFS permissions.<p>
50  *
51  * @author Alexander Kandzior
52  * @author Michael Moossen
53  *
54  * @version $Revision: 1.8 $
55  */

56 public class TestDeletion extends OpenCmsTestCase {
57
58     /**
59      * Default JUnit constructor.<p>
60      *
61      * @param arg0 JUnit parameters
62      */

63     public TestDeletion(String JavaDoc arg0) {
64
65         super(arg0);
66     }
67
68     /**
69      * Test suite for this test class.<p>
70      *
71      * @return the test suite
72      */

73     public static Test suite() {
74
75         OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH);
76
77         TestSuite suite = new TestSuite();
78         suite.setName(TestDeletion.class.getName());
79
80         suite.addTest(new TestDeletion("testGroupDeletion"));
81         suite.addTest(new TestDeletion("testAdvancedGroupDeletion"));
82         suite.addTest(new TestDeletion("testUserDeletion"));
83
84         TestSetup wrapper = new TestSetup(suite) {
85
86             protected void setUp() {
87
88                 setupOpenCms("simpletest", "/sites/default/");
89             }
90
91             protected void tearDown() {
92
93                 removeOpenCms();
94             }
95         };
96
97         return wrapper;
98     }
99
100     /**
101      * Tests user group deletion.<p>
102      *
103      * @throws Throwable if something goes wrong
104      */

105     public void testGroupDeletion() throws Throwable JavaDoc {
106
107         CmsObject cms = getCmsObject();
108         echo("Testing user group deletion");
109
110         String JavaDoc groupname = "deleteGroup";
111
112         List JavaDoc expected = cms.getGroups();
113
114         // create group
115
cms.createGroup(groupname, "deleteMe", I_CmsPrincipal.FLAG_ENABLED, "Users");
116
117         // now delete the group again
118
cms.deleteGroup(groupname);
119
120         List JavaDoc actual = cms.getGroups();
121
122         assertEquals(expected, actual);
123     }
124
125     /**
126      * Tests an advanced group deletion.<p>
127      *
128      * @throws Throwable if something goes wrong
129      */

130     public void testAdvancedGroupDeletion() throws Throwable JavaDoc {
131
132         CmsObject cms = getCmsObject();
133         echo("Testing advanced group deletion");
134
135         // create test group
136
cms.createGroup("Testgroup", "A test group", 0, null);
137         CmsGroup testGroup = cms.readGroup("Testgroup");
138         // set a child
139
cms.setParentGroup(OpenCms.getDefaultUsers().getGroupUsers(), testGroup.getName());
140         // create test user
141
cms.createUser("testuser1", "test1", "A test user 1", null);
142         cms.addUserToGroup("testuser1", "Testgroup");
143         CmsUser testUser1 = cms.readUser("testuser1");
144
145         // login in offline project
146
CmsProject offline = cms.readProject("Offline");
147         cms.loginUser("Admin", "admin");
148         cms.getRequestContext().setCurrentProject(offline);
149
150         // change permission of a resource
151
String JavaDoc resName = "/folder1/subfolder11/subsubfolder111/text.txt";
152         cms.lockResource(resName);
153         cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i");
154         cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_GROUP, testGroup.getName(), "+r+v+i");
155         cms.unlockResource(resName);
156         cms.publishProject();
157
158         // create a 2nd test group
159
cms.createGroup("testgroup2", "A test group 2", 0, null);
160         CmsGroup testGroup2 = cms.readGroup("testgroup2");
161
162         // remember group data
163
List JavaDoc childs = cms.getChild(testGroup.getName());
164         List JavaDoc users = cms.getUsersOfGroup(testGroup.getName());
165         
166         // delete the test group
167
cms.deleteGroup(testGroup.getId(), testGroup2.getId());
168         
169         // check ace for the resource
170
boolean found = false;
171         Iterator JavaDoc it = cms.getAccessControlEntries(resName, false).iterator();
172         while (it.hasNext()) {
173             CmsAccessControlEntry ace = (CmsAccessControlEntry)it.next();
174             if (ace.getPrincipal().equals(testGroup2.getId())) {
175                 CmsAccessControlEntry newAce = new CmsAccessControlEntry(
176                     cms.readResource(resName).getResourceId(),
177                     testGroup2.getId(),
178                     "+r+v+i");
179                 newAce.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_GROUP);
180                 assertTrue(newAce.equals(ace));
181                 found = true;
182             }
183         }
184         assertTrue(found);
185         
186         // check group data
187
assertEquals(childs, cms.getChild(testGroup2.getName()));
188         assertEquals(users, cms.getUsersOfGroup(testGroup2.getName()));
189
190         // restore the previous state
191
cms.deleteUser(testUser1.getId());
192         cms.setParentGroup(OpenCms.getDefaultUsers().getGroupUsers(), null);
193         cms.deleteGroup(testGroup2.getName());
194     }
195     
196     /**
197      * Tests user deletion.<p>
198      *
199      * @throws Throwable if something goes wrong
200      */

201     public void testUserDeletion() throws Throwable JavaDoc {
202
203         CmsObject cms = getCmsObject();
204         echo("Testing user deletion");
205
206         cms.createGroup("Testgroup", "A test group", 0, null);
207         CmsGroup testGroup = cms.readGroup("Testgroup");
208         cms.createUser("testuser1", "test1", "A test user 1", null);
209         cms.addUserToGroup("testuser1", "Testgroup");
210         CmsUser testUser1 = cms.readUser("testuser1");
211
212         cms.lockResource("/");
213         cms.chacc("/", I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i+c");
214         cms.unlockResource("/");
215         cms.publishProject();
216         
217         cms.loginUser(testUser1.getName(), "test1");
218         CmsProject offline = cms.readProject("Offline");
219         cms.getRequestContext().setCurrentProject(offline);
220
221         String JavaDoc resName = "/myfile.txt";
222         cms.createResource(resName, CmsResourceTypePlain.getStaticTypeId(), "my content".getBytes(), null);
223         cms.lockResource(resName);
224         cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i");
225         cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_GROUP, testGroup.getName(), "+r+v+i");
226         cms.unlockResource(resName);
227
228         cms.loginUser("Admin", "admin");
229         cms.getRequestContext().setCurrentProject(offline);
230         cms.publishProject();
231
232         String JavaDoc resName2 = "/folder1/subfolder11/subsubfolder111/text.txt";
233         cms.lockResource(resName2);
234         cms.chacc(resName2, I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i");
235         cms.chacc(resName2, I_CmsPrincipal.PRINCIPAL_GROUP, testGroup.getName(), "+r+v+i");
236         cms.unlockResource(resName2);
237         cms.publishProject();
238
239         cms.createUser("testuser2", "test2", "A test user 2", null);
240         cms.addUserToGroup("testuser2", "Testgroup");
241         CmsUser testUser2 = cms.readUser("testuser2");
242
243         int state = cms.readResource(resName).getState();
244         cms.deleteUser(testUser1.getId(), testUser2.getId());
245
246         // check attributes
247
CmsResource res = cms.readResource(resName);
248         assertEquals(res.getUserCreated(), testUser2.getId());
249         assertEquals(res.getUserLastModified(), testUser2.getId());
250         assertEquals(res.getState(), state);
251
252         // check ace for first resource
253
boolean found = false;
254         Iterator JavaDoc it = cms.getAccessControlEntries(resName, false).iterator();
255         while (it.hasNext()) {
256             CmsAccessControlEntry ace = (CmsAccessControlEntry)it.next();
257             if (ace.getPrincipal().equals(testUser2.getId())) {
258                 CmsAccessControlEntry newAce = new CmsAccessControlEntry(
259                     cms.readResource(resName).getResourceId(),
260                     testUser2.getId(),
261                     "+r+w+v+i");
262                 newAce.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_USER);
263                 assertTrue(newAce.equals(ace));
264                 found = true;
265             }
266         }
267         assertTrue(found);
268
269         // check ace for second resource
270
found = false;
271         it = cms.getAccessControlEntries(resName2, false).iterator();
272         while (it.hasNext()) {
273             CmsAccessControlEntry ace = (CmsAccessControlEntry)it.next();
274             if (ace.getPrincipal().equals(testUser2.getId())) {
275                 CmsAccessControlEntry newAce = new CmsAccessControlEntry(
276                     cms.readResource(resName2).getResourceId(),
277                     testUser2.getId(),
278                     "+r+w+v+i");
279                 newAce.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_USER);
280                 assertTrue(newAce.equals(ace));
281                 found = true;
282             }
283         }
284         assertTrue(found);
285
286         // restore the previous state
287
cms.lockResource(resName);
288         cms.deleteResource(resName, CmsResource.DELETE_REMOVE_SIBLINGS);
289         cms.unlockResource(resName);
290         cms.publishProject();
291         cms.deleteUser(testUser2.getId());
292         cms.deleteGroup(testGroup.getName());
293     }
294 }
295
Popular Tags