📄 testpermissions.java
字号:
/**
* Tests the overwriting of permissions.<p>
*
* @throws Throwable if something goes wrong
*/
public void testPermissionOverwrite() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing permission overwrite");
String foldername = "testPermissionOverwrite";
cms.createResource(foldername, CmsResourceTypeFolder.getStaticTypeId());
assertEquals("+r+w+v", cms.getPermissions(foldername, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "Users", "+o");
assertEquals("", cms.getPermissions(foldername, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "Users", "-r");
assertEquals("-r+w+v", cms.getPermissions(foldername, "testUser").getPermissionString());
}
/**
* Tests the inheritance of permissions.<p>
*
* @throws Throwable if something goes wrong
*/
public void testPermissionInheritance() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing inheritance of permissions");
String foldername = "testPermissionInheritance";
String subfoldername = foldername + "/" + "subfolder";
String resourcename = foldername + "/test.txt";
String subresourcename = subfoldername + "/subtest.txt";
cms.createResource(foldername, CmsResourceTypeFolder.getStaticTypeId());
cms.createResource(subfoldername, CmsResourceTypeFolder.getStaticTypeId());
cms.createResource(resourcename, CmsResourceTypePlain.getStaticTypeId());
cms.createResource(subresourcename, CmsResourceTypePlain.getStaticTypeId());
assertEquals("+r+w+v", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w+v", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w+v", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "Users", "+o");
assertEquals("", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w+v", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w+v", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "Users", "+o+i");
assertEquals("", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.createGroup("GroupA", "", 0, "");
cms.createGroup("GroupB", "", 0, "");
cms.createGroup("GroupC", "", 0, "");
cms.createGroup("GroupD", "", 0, "");
cms.addUserToGroup("testUser", "GroupA");
cms.addUserToGroup("testUser", "GroupB");
cms.addUserToGroup("testUser", "GroupC");
cms.addUserToGroup("testUser", "GroupD");
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupA", "+r");
assertEquals("+r", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupA", "+r+i");
assertEquals("+r", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupB", "+w");
assertEquals("+r+w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupB", "+w+i");
assertEquals("+r+w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupC", "-r");
assertEquals("-r+w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupC", "-r+i");
assertEquals("-r+w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("-r+w", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("-r+w", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupD", "-w");
assertEquals("-r-w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("-r+w", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("-r+w", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "GroupD", "-w+i");
assertEquals("-r-w", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("-r-w", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("-r-w", cms.getPermissions(subresourcename, "testUser").getPermissionString());
}
/**
* Test the resource filter files in a folder.<p>
*
* @throws Throwable if something goes wrong
*/
public void testFilterForFolder() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing resource filer for the files in a folder");
String folder = "/types";
// read only "image" resources
List resultList;
// resources in folder only method
resultList = cms.getResourcesInFolder(
folder,
CmsResourceFilter.requireType(CmsResourceTypeImage.getStaticTypeId()));
if (resultList.size() != 1) {
fail("There is only 1 image resource in the folder, not " + resultList.size());
}
// files in folder only method
resultList = cms.getFilesInFolder(folder, CmsResourceFilter.requireType(CmsResourceTypeImage.getStaticTypeId()));
if (resultList.size() != 1) {
fail("There is only 1 image resource in the folder, not " + resultList.size());
}
// subtree method
resultList = cms.readResources(folder, CmsResourceFilter.requireType(CmsResourceTypeImage.getStaticTypeId()));
if (resultList.size() != 1) {
fail("There is only 1 image resource in the folder, not " + resultList.size());
}
}
/**
* Test the visible permisssions on a list of files in a folder.<p>
*
* @throws Throwable if something goes wrong
*/
public void testVisiblePermissionForFolder() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing visible permissions on a list of files in a folder");
String folder = "/types";
// apply permissions to folder
cms.lockResource(folder);
// modify the resource permissions for the tests
// remove all "Users" group permissions
cms.chacc(
folder,
I_CmsPrincipal.PRINCIPAL_GROUP,
OpenCms.getDefaultUsers().getGroupUsers(),
0,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE + CmsAccessControlEntry.ACCESS_FLAGS_INHERIT);
// also for "Project managers" to avoid conflicts with other tests in this suite
cms.chacc(
folder,
I_CmsPrincipal.PRINCIPAL_GROUP,
OpenCms.getDefaultUsers().getGroupProjectmanagers(),
0,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE + CmsAccessControlEntry.ACCESS_FLAGS_INHERIT);
// allow only read for user "test1"
cms.chacc(
folder,
I_CmsPrincipal.PRINCIPAL_USER,
"test1",
CmsPermissionSet.PERMISSION_READ,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE + CmsAccessControlEntry.ACCESS_FLAGS_INHERIT);
// allow read and visible for user "test2"
cms.chacc(folder, I_CmsPrincipal.PRINCIPAL_USER, "test2", CmsPermissionSet.PERMISSION_READ
+ CmsPermissionSet.PERMISSION_VIEW, 0, CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE
+ CmsAccessControlEntry.ACCESS_FLAGS_INHERIT);
cms.unlockResource(folder);
List resultList;
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
// read excluding invisible resources
resultList = cms.readResources(folder, CmsResourceFilter.ONLY_VISIBLE);
if (resultList.size() > 0) {
fail("Was able to read "
+ resultList.size()
+ " invisible resources in a folder with filter excluding invisible resources");
}
// read again now inclusing invisible resources
resultList = cms.readResources(folder, CmsResourceFilter.ALL);
if (resultList.size() != 6) {
fail("There should be 6 visible resource in the folder, not " + resultList.size());
}
cms.loginUser("test2", "test2");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
resultList = cms.readResources(folder, CmsResourceFilter.ONLY_VISIBLE);
if (resultList.size() != 6) {
fail("There should be 6 visible resource in the folder, not " + resultList.size());
}
}
/**
* Test the visible permisssions.<p>
*
* @throws Throwable if something goes wrong
*/
public void testVisiblePermission() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing visible permissions on a file");
String resource = "index.html";
CmsResource res = cms.readResource(resource);
cms.lockResource(resource);
// modify the resource permissions for the tests
// remove all "Users" group permissions
cms.chacc(
resource,
I_CmsPrincipal.PRINCIPAL_GROUP,
OpenCms.getDefaultUsers().getGroupUsers(),
0,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE);
// also for "Project managers" to avoid conflicts with other tests in this suite
cms.chacc(
resource,
I_CmsPrincipal.PRINCIPAL_GROUP,
OpenCms.getDefaultUsers().getGroupProjectmanagers(),
0,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE);
// allow only read for user "test1"
cms.chacc(
resource,
I_CmsPrincipal.PRINCIPAL_USER,
"test1",
CmsPermissionSet.PERMISSION_READ,
0,
CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE);
// allow read and visible for user "test2"
cms.chacc(resource, I_CmsPrincipal.PRINCIPAL_USER, "test2", CmsPermissionSet.PERMISSION_READ
+ CmsPermissionSet.PERMISSION_VIEW, 0, CmsAccessControlEntry.ACCESS_FLAGS_OVERWRITE);
cms.unlockResource(resource);
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
if (!cms.hasPermissions(
res,
new CmsPermissionSet(CmsPermissionSet.PERMISSION_VIEW, 0),
true,
CmsResourceFilter.ALL)) {
fail("Visible permission checked but should have been ignored");
}
if (cms.hasPermissions(
res,
new CmsPermissionSet(CmsPermissionSet.PERMISSION_VIEW, 0),
true,
CmsResourceFilter.ONLY_VISIBLE)) {
fail("Visible permission not checked");
}
cms.loginUser("test2", "test2");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
if (!cms.hasPermissions(
res,
new CmsPermissionSet(CmsPermissionSet.PERMISSION_VIEW, 0),
true,
CmsResourceFilter.ALL)) {
fail("Visible permission checked but should be ignored");
}
if (!cms.hasPermissions(
res,
new CmsPermissionSet(CmsPermissionSet.PERMISSION_VIEW, 0),
true,
CmsResourceFilter.ONLY_VISIBLE)) {
fail("Visible permission not detected");
}
}
/**
* Test the lock status permisssions.<p>
*
* @throws Throwable if something goes wrong
*/
public void testLockStatusPermission() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing lock status permissions on a file");
String resource = "/folder1/page1.html";
CmsResource res = cms.readResource(resource);
// first lock resource as user "test1"
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
cms.lockResource(resource);
assertTrue(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, true, CmsResourceFilter.ALL));
// now check resource as user "test2"
cms.loginUser("test2", "test2");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
assertTrue(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, false, CmsResourceFilter.ALL));
assertFalse(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, true, CmsResourceFilter.ALL));
// switch the lock to user "test2"
cms.changeLock(resource);
assertTrue(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, true, CmsResourceFilter.ALL));
// back to user "test1"
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
assertTrue(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, false, CmsResourceFilter.ALL));
assertFalse(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, true, CmsResourceFilter.ALL));
// switch the lock to user "test1"
cms.changeLock(resource);
assertTrue(cms.hasPermissions(res, CmsPermissionSet.ACCESS_WRITE, true, CmsResourceFilter.ALL));
cms.unlockResource(resource);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -