📄 testpermissions.java
字号:
/*
* File : $Source: /usr/local/cvs/opencms/test/org/opencms/file/TestPermissions.java,v $
* Date : $Date: 2006/10/27 13:39:29 $
* Version: $Revision: 1.23 $
*
* This library is part of OpenCms -
* the Open Source Content Mananagement System
*
* Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.file;
import org.opencms.file.types.CmsResourceTypeFolder;
import org.opencms.file.types.CmsResourceTypeImage;
import org.opencms.file.types.CmsResourceTypePlain;
import org.opencms.main.OpenCms;
import org.opencms.security.CmsAccessControlEntry;
import org.opencms.security.CmsPermissionSet;
import org.opencms.security.I_CmsPrincipal;
import org.opencms.test.OpenCmsTestCase;
import org.opencms.test.OpenCmsTestProperties;
import org.opencms.util.CmsUUID;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestSuite;
/**
* Unit tests for VFS permissions.<p>
*
* @author Alexander Kandzior
*
* @version $Revision: 1.23 $
*/
/**
* Comment for <code>TestPermissions</code>.<p>
*/
public class TestPermissions extends OpenCmsTestCase {
/**
* Default JUnit constructor.<p>
*
* @param arg0 JUnit parameters
*/
public TestPermissions(String arg0) {
super(arg0);
}
/**
* Test suite for this test class.<p>
*
* @return the test suite
*/
public static Test suite() {
OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH);
TestSuite suite = new TestSuite();
suite.setName(TestPermissions.class.getName());
suite.addTest(new TestPermissions("testLockStatusPermission"));
suite.addTest(new TestPermissions("testPublishPermissions"));
suite.addTest(new TestPermissions("testVisiblePermission"));
suite.addTest(new TestPermissions("testVisiblePermissionForFolder"));
suite.addTest(new TestPermissions("testFilterForFolder"));
suite.addTest(new TestPermissions("testDefaultPermissions"));
suite.addTest(new TestPermissions("testPermissionOverwrite"));
suite.addTest(new TestPermissions("testPermissionInheritance"));
suite.addTest(new TestPermissions("testUserDeletion"));
TestSetup wrapper = new TestSetup(suite) {
protected void setUp() {
setupOpenCms("simpletest", "/sites/default/");
}
protected void tearDown() {
removeOpenCms();
}
};
return wrapper;
}
/**
* @throws Throwable if something goes wrong
*/
public void testDefaultPermissions() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing default permissions");
String resourcename = "testDefaultPermissions.txt";
cms.createResource(resourcename, CmsResourceTypePlain.getStaticTypeId());
cms.createUser("testAdmin", "secret", "", null);
cms.addUserToGroup("testAdmin", OpenCms.getDefaultUsers().getGroupAdministrators());
cms.createUser("testProjectmanager", "secret", "", null);
cms.addUserToGroup("testProjectmanager", OpenCms.getDefaultUsers().getGroupProjectmanagers());
cms.createUser("testUser", "secret", "", null);
cms.addUserToGroup("testUser", OpenCms.getDefaultUsers().getGroupUsers());
cms.createUser("testGuest", "secret", "", null);
cms.addUserToGroup("testGuest", OpenCms.getDefaultUsers().getGroupGuests());
assertEquals("+r+w+v+c+d", cms.getPermissions(resourcename, "testAdmin").getPermissionString());
assertEquals("+r+w+v+c+d", cms.getPermissions(resourcename, "testProjectmanager").getPermissionString());
assertEquals("+r+w+v+c", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+v", cms.getPermissions(resourcename, "testGuest").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 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);
}
/**
* 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+c", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w+v+c", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w+v+c", cms.getPermissions(subresourcename, "testUser").getPermissionString());
cms.chacc(foldername, I_CmsPrincipal.PRINCIPAL_GROUP, "Users", "+o");
assertEquals("", cms.getPermissions(resourcename, "testUser").getPermissionString());
assertEquals("+r+w+v+c", cms.getPermissions(subfoldername, "testUser").getPermissionString());
assertEquals("+r+w+v+c", 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());
}
/**
* 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+c", 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+c", cms.getPermissions(foldername, "testUser").getPermissionString());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -