impersonatetest.java
来自「jsr170接口的java实现。是个apache的开源项目。」· Java 代码 · 共 94 行
JAVA
94 行
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.jackrabbit.test.api;import org.apache.jackrabbit.test.AbstractJCRTest;import org.apache.jackrabbit.test.NotExecutableException;import javax.jcr.Session;import javax.jcr.Credentials;import javax.jcr.NodeIterator;import javax.jcr.Node;import javax.jcr.RepositoryException;import javax.jcr.LoginException;import java.security.AccessControlException;/** * Tests if {@link Session#impersonate(Credentials)} to a read-only session * respects access controls. * * @test * @sources ImpersonateTest.java * @executeClass org.apache.jackrabbit.test.api.ImpersonateTest * @keywords level2 */public class ImpersonateTest extends AbstractJCRTest { /** * Tests if <code>Session.impersonate(Credentials)</code> works properly */ public void testImpersonate() throws RepositoryException, NotExecutableException { // impersonate to read-only user Session session; try { session = superuser.impersonate(helper.getReadOnlyCredentials()); } catch (LoginException e) { throw new NotExecutableException("impersonate threw LoginException"); } try { // get a path to test the permissions on String thePath = ""; NodeIterator ni = session.getRootNode().getNodes(); while (ni.hasNext()) { Node n = ni.nextNode(); if (!n.getPath().equals("/" + jcrSystem)) { thePath = n.getPath(); break; } } // check that all 4 permissions are granted/denied correctly session.checkPermission(thePath, "read"); try { session.checkPermission(thePath + "/" + nodeName1, "add_node"); fail("add_node permission on \"" + thePath + "/" + nodeName1 + "\" granted to read-only Session"); } catch (AccessControlException success) { // ok } try { session.checkPermission(thePath + "/" + propertyName1, "set_property"); fail("set_property permission on \"" + thePath + "/" + propertyName1 + "\" granted to read-only Session"); } catch (AccessControlException success) { // ok } try { session.checkPermission(thePath, "remove"); fail("remove permission on \"" + thePath + "\" granted to read-only Session"); } catch (AccessControlException success) { // ok } } finally { session.logout(); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?