⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpermissions.java

📁 cms是开源的框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        cms.deleteUser(username);
        
        // get all ace of this resource
        List aces = cms.getAccessControlEntries(resourcename);
        
        Iterator i = aces.iterator();
        // loop through all ace and check if the users/groups belonging to this entry still exist
        while (i.hasNext()) {
            CmsAccessControlEntry ace = (CmsAccessControlEntry)i.next();

            CmsUUID principal = ace.getPrincipal();
            // the principal is missing, so the test must fail
            if (cms.lookupPrincipal(principal) == null) {
                fail("Principal " + principal.toString() + " is missing");
            }
        }   
      }
    
    
    /**
     * 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());
    }
    
    /**
     * 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());
    }
        
    /**
     * 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");
        }
    }  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -