1 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 ; 42 import java.util.List ; 43 44 import junit.extensions.TestSetup; 45 import junit.framework.Test; 46 import junit.framework.TestSuite; 47 48 56 public class TestDeletion extends OpenCmsTestCase { 57 58 63 public TestDeletion(String arg0) { 64 65 super(arg0); 66 } 67 68 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 105 public void testGroupDeletion() throws Throwable { 106 107 CmsObject cms = getCmsObject(); 108 echo("Testing user group deletion"); 109 110 String groupname = "deleteGroup"; 111 112 List expected = cms.getGroups(); 113 114 cms.createGroup(groupname, "deleteMe", I_CmsPrincipal.FLAG_ENABLED, "Users"); 116 117 cms.deleteGroup(groupname); 119 120 List actual = cms.getGroups(); 121 122 assertEquals(expected, actual); 123 } 124 125 130 public void testAdvancedGroupDeletion() throws Throwable { 131 132 CmsObject cms = getCmsObject(); 133 echo("Testing advanced group deletion"); 134 135 cms.createGroup("Testgroup", "A test group", 0, null); 137 CmsGroup testGroup = cms.readGroup("Testgroup"); 138 cms.setParentGroup(OpenCms.getDefaultUsers().getGroupUsers(), testGroup.getName()); 140 cms.createUser("testuser1", "test1", "A test user 1", null); 142 cms.addUserToGroup("testuser1", "Testgroup"); 143 CmsUser testUser1 = cms.readUser("testuser1"); 144 145 CmsProject offline = cms.readProject("Offline"); 147 cms.loginUser("Admin", "admin"); 148 cms.getRequestContext().setCurrentProject(offline); 149 150 String 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 cms.createGroup("testgroup2", "A test group 2", 0, null); 160 CmsGroup testGroup2 = cms.readGroup("testgroup2"); 161 162 List childs = cms.getChild(testGroup.getName()); 164 List users = cms.getUsersOfGroup(testGroup.getName()); 165 166 cms.deleteGroup(testGroup.getId(), testGroup2.getId()); 168 169 boolean found = false; 171 Iterator 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 assertEquals(childs, cms.getChild(testGroup2.getName())); 188 assertEquals(users, cms.getUsersOfGroup(testGroup2.getName())); 189 190 cms.deleteUser(testUser1.getId()); 192 cms.setParentGroup(OpenCms.getDefaultUsers().getGroupUsers(), null); 193 cms.deleteGroup(testGroup2.getName()); 194 } 195 196 201 public void testUserDeletion() throws Throwable { 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 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 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 CmsResource res = cms.readResource(resName); 248 assertEquals(res.getUserCreated(), testUser2.getId()); 249 assertEquals(res.getUserLastModified(), testUser2.getId()); 250 assertEquals(res.getState(), state); 251 252 boolean found = false; 254 Iterator 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 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 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 |