📄 testdeletion.java
字号:
assertLock(cms, file, CmsLockType.UNLOCKED);
cms.deleteResource(folder, CmsResource.DELETE_PRESERVE_SIBLINGS);
}
/**
* Tests to delete a folder structure with (from other user) locked siblings inside.<p>
*
* @throws Exception if the test fails
*/
public void testDeleteFolderWithLockedSiblings() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing to delete a folder structure with (from other user) locked siblings inside");
String folder = "/mytestfolder2";
String file = "/index.html";
// create folder
cms.createResource(folder, CmsResourceTypeFolder.RESOURCE_TYPE_ID);
cms.unlockResource(folder);
// switch user
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
// copy resource
cms.copyResource(file, folder + file, CmsResource.COPY_AS_SIBLING);
cms.unlockResource(folder + file);
// lock the sibling
cms.lockResource(file);
// switch back
CmsUser user = cms.getRequestContext().currentUser();
cms = getCmsObject();
int sibCount = cms.readResource(file).getSiblingCount();
assertLock(cms, folder + file, CmsLockType.SHARED_EXCLUSIVE, user);
// delete the folder
cms.lockResource(folder);
assertLock(cms, folder + file, CmsLockType.SHARED_INHERITED, user);
cms.deleteResource(folder, CmsResource.DELETE_PRESERVE_SIBLINGS);
assertSiblingCount(cms, file, sibCount - 1);
}
/**
* Tests to delete a folder structure with invisible resources inside.<p>
*
* @throws Exception if the test fails
*/
public void testDeleteFolderWithUnvisibleResources() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing to delete a folder structure with invisible resources inside");
// Creating paths
String folder = "/mytestfolder/";
String file = "index.html";
// create structure
cms.createResource(folder, CmsResourceTypeFolder.RESOURCE_TYPE_ID);
cms.createResource(folder + file, CmsResourceTypePlain.getStaticTypeId());
// change permissions
cms.chacc(folder + file, I_CmsPrincipal.PRINCIPAL_USER, "test2", "-r+v+i");
// unlock resources
cms.unlockResource(folder);
// publish
OpenCms.getPublishManager().publishResource(cms, folder);
OpenCms.getPublishManager().waitWhileRunning();
// lock the whole folder as test2
cms.loginUser("test2", "test2");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
cms.lockResource(folder);
// delete the folder
cms.deleteResource(folder, CmsResource.DELETE_PRESERVE_SIBLINGS);
cms.loginUser("Admin", "admin");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
assertEquals(cms.readResource(folder + file, CmsResourceFilter.ALL).getState(), CmsResource.STATE_DELETED);
}
/**
* Tests user group deletion.<p>
*
* @throws Throwable if something goes wrong
*/
public void testGroupDeletion() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing user group deletion");
String groupname = "deleteGroup";
List expected = OpenCms.getOrgUnitManager().getGroups(cms, "", true);
// create group
cms.createGroup(groupname, "deleteMe", I_CmsPrincipal.FLAG_ENABLED, "Users");
// now delete the group again
cms.deleteGroup(groupname);
List actual = OpenCms.getOrgUnitManager().getGroups(cms, "", true);
assertEquals(expected, actual);
}
/**
* Tests user deletion.<p>
*
* @throws Throwable if something goes wrong
*/
public void testUserDeletion() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing user deletion");
cms.createGroup("Testgroup", "A test group", 0, null);
CmsGroup testGroup = cms.readGroup("Testgroup");
cms.createUser("testuser1", "test1", "A test user 1", null);
cms.addUserToGroup("testuser1", "Testgroup");
CmsUser testUser1 = cms.readUser("testuser1");
cms.lockResource("/");
cms.chacc("/", I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i+c");
cms.unlockResource("/");
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
cms.loginUser(testUser1.getName(), "test1");
CmsProject offline = cms.readProject("Offline");
cms.getRequestContext().setCurrentProject(offline);
String resName = "/myfile.txt";
cms.createResource(resName, CmsResourceTypePlain.getStaticTypeId(), "my content".getBytes(), null);
cms.lockResource(resName);
cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i");
cms.chacc(resName, I_CmsPrincipal.PRINCIPAL_GROUP, testGroup.getName(), "+r+v+i");
cms.unlockResource(resName);
cms.loginUser("Admin", "admin");
cms.getRequestContext().setCurrentProject(offline);
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
String resName2 = "/folder1/subfolder11/subsubfolder111/text.txt";
cms.lockResource(resName2);
cms.chacc(resName2, I_CmsPrincipal.PRINCIPAL_USER, testUser1.getName(), "+r+w+v+i");
cms.chacc(resName2, I_CmsPrincipal.PRINCIPAL_GROUP, testGroup.getName(), "+r+v+i");
cms.unlockResource(resName2);
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
cms.createUser("testuser2", "test2", "A test user 2", null);
cms.addUserToGroup("testuser2", "Testgroup");
CmsUser testUser2 = cms.readUser("testuser2");
CmsResourceState state = cms.readResource(resName).getState();
cms.deleteUser(testUser1.getId(), testUser2.getId());
// check attributes
CmsResource res = cms.readResource(resName);
assertEquals(res.getUserCreated(), testUser2.getId());
assertEquals(res.getUserLastModified(), testUser2.getId());
assertEquals(res.getState(), state);
// check ace for first resource
boolean found = false;
Iterator it = cms.getAccessControlEntries(resName, false).iterator();
while (it.hasNext()) {
CmsAccessControlEntry ace = (CmsAccessControlEntry)it.next();
if (ace.getPrincipal().equals(testUser2.getId())) {
CmsAccessControlEntry newAce = new CmsAccessControlEntry(
cms.readResource(resName).getResourceId(),
testUser2.getId(),
"+r+w+v+i");
newAce.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_USER);
assertTrue(newAce.equals(ace));
found = true;
}
}
assertTrue(found);
// check ace for second resource
found = false;
it = cms.getAccessControlEntries(resName2, false).iterator();
while (it.hasNext()) {
CmsAccessControlEntry ace = (CmsAccessControlEntry)it.next();
if (ace.getPrincipal().equals(testUser2.getId())) {
CmsAccessControlEntry newAce = new CmsAccessControlEntry(
cms.readResource(resName2).getResourceId(),
testUser2.getId(),
"+r+w+v+i");
newAce.setFlags(CmsAccessControlEntry.ACCESS_FLAGS_USER);
assertTrue(newAce.equals(ace));
found = true;
}
}
assertTrue(found);
// restore the previous state
cms.lockResource(resName);
cms.deleteResource(resName, CmsResource.DELETE_REMOVE_SIBLINGS);
cms.unlockResource(resName);
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
cms.deleteUser(testUser2.getId());
cms.deleteGroup(testGroup.getName());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -