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

📄 basicaclentryafterinvocationprovidertests.java

📁 acegi构造安全的java系统
💻 JAVA
字号:
/* Copyright 2004, 2005, 2006 Acegi Technology Pty Limited * * Licensed 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.acegisecurity.afterinvocation;import junit.framework.TestCase;import org.acegisecurity.AccessDeniedException;import org.acegisecurity.ConfigAttributeDefinition;import org.acegisecurity.MockAclManager;import org.acegisecurity.SecurityConfig;import org.acegisecurity.acl.AclEntry;import org.acegisecurity.acl.AclManager;import org.acegisecurity.acl.basic.MockAclObjectIdentity;import org.acegisecurity.acl.basic.SimpleAclEntry;import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;import org.acegisecurity.util.SimpleMethodInvocation;/** * Tests {@link BasicAclEntryAfterInvocationProvider}. * * @author Ben Alex * @version $Id: BasicAclEntryAfterInvocationProviderTests.java 1496 2006-05-23 13:38:33Z benalex $ */public class BasicAclEntryAfterInvocationProviderTests extends TestCase {    //~ Constructors ===================================================================================================    public BasicAclEntryAfterInvocationProviderTests() {        super();    }    public BasicAclEntryAfterInvocationProviderTests(String arg0) {        super(arg0);    }    //~ Methods ========================================================================================================    public static void main(String[] args) {        junit.textui.TestRunner.run(BasicAclEntryAfterInvocationProviderTests.class);    }    public final void setUp() throws Exception {        super.setUp();    }    public void testCorrectOperationWhenPrincipalHasIncorrectPermissionToDomainObject()        throws Exception {        // Create an AclManager, granting scott only ADMINISTRATION rights        AclManager aclManager = new MockAclManager("belmont", "scott",                new AclEntry[] {                    new SimpleAclEntry("scott", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION)                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("scott", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        try {            provider.decide(auth, new SimpleMethodInvocation(), attr, "belmont");            fail("Should have thrown AccessDeniedException");        } catch (AccessDeniedException expected) {            assertTrue(true);        }    }    public void testCorrectOperationWhenPrincipalHasNoPermissionToDomainObject()        throws Exception {        // Create an AclManager        AclManager aclManager = new MockAclManager("belmont", "marissa",                new AclEntry[] {                    new MockAclEntry(),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.READ),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.DELETE)                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("scott", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        try {            provider.decide(auth, new SimpleMethodInvocation(), attr, "belmont");            fail("Should have thrown AccessDeniedException");        } catch (AccessDeniedException expected) {            assertTrue(true);        }    }    public void testCorrectOperationWhenPrincipalIsAuthorised()        throws Exception {        // Create an AclManager        AclManager aclManager = new MockAclManager("belmont", "marissa",                new AclEntry[] {                    new MockAclEntry(),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.READ),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.DELETE)                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        assertEquals(aclManager, provider.getAclManager());        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("marissa", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        // Filter        assertEquals("belmont", provider.decide(auth, new SimpleMethodInvocation(), attr, "belmont"));    }    public void testGrantsAccessIfReturnedObjectIsNull()        throws Exception {        // Create an AclManager        AclManager aclManager = new MockAclManager("belmont", "marissa",                new AclEntry[] {                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.READ),                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.DELETE),                    new MockAclEntry()                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("marissa", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        // Filter        assertNull(provider.decide(auth, new SimpleMethodInvocation(), attr, null));    }    public void testRespectsModificationsToProcessConfigAttribute()        throws Exception {        // Create an AclManager        AclManager aclManager = new MockAclManager("sydney", "marissa",                new AclEntry[] {                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.READ),                    new MockAclEntry()                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        assertEquals("AFTER_ACL_READ", provider.getProcessConfigAttribute());        provider.setProcessConfigAttribute("AFTER_ACL_ADMIN");        assertEquals("AFTER_ACL_ADMIN", provider.getProcessConfigAttribute());        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("marissa", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        // As no matching config attrib, ensure provider returns original obj        assertEquals("sydney", provider.decide(auth, new SimpleMethodInvocation(), attr, "sydney"));        // Filter, this time with the conf attrib provider setup to answer        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_ADMIN"));        assertEquals("sydney", provider.decide(auth, new SimpleMethodInvocation(), attr, "sydney"));    }    public void testRespectsModificationsToRequirePermissions()        throws Exception {        // Create an AclManager        AclManager aclManager = new MockAclManager("sydney", "marissa",                new AclEntry[] {                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new MockAclEntry()                });        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        provider.setAclManager(aclManager);        assertEquals(SimpleAclEntry.READ, provider.getRequirePermission()[0]);        provider.setRequirePermission(new int[] {SimpleAclEntry.ADMINISTRATION});        assertEquals(SimpleAclEntry.ADMINISTRATION, provider.getRequirePermission()[0]);        provider.afterPropertiesSet();        // Create the Authentication and Config Attribs we'll be presenting        UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("marissa", "NOT_USED");        ConfigAttributeDefinition attr = new ConfigAttributeDefinition();        attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_READ"));        // Filter        assertEquals("sydney", provider.decide(auth, new SimpleMethodInvocation(), attr, "sydney"));    }    public void testStartupDetectsMissingAclManager() throws Exception {        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        try {            provider.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("An aclManager is mandatory", expected.getMessage());        }    }    public void testStartupDetectsMissingProcessConfigAttribute()        throws Exception {        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        AclManager aclManager = new MockAclManager("sydney", "marissa",                new AclEntry[] {                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new MockAclEntry()                });        provider.setAclManager(aclManager);        provider.setProcessConfigAttribute(null);        try {            provider.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("A processConfigAttribute is mandatory", expected.getMessage());        }    }    public void testStartupDetectsMissingRequirePermission()        throws Exception {        BasicAclEntryAfterInvocationProvider provider = new BasicAclEntryAfterInvocationProvider();        AclManager aclManager = new MockAclManager("sydney", "marissa",                new AclEntry[] {                    new SimpleAclEntry("marissa", new MockAclObjectIdentity(), null, SimpleAclEntry.ADMINISTRATION),                    new MockAclEntry()                });        provider.setAclManager(aclManager);        provider.setRequirePermission(null);        try {            provider.afterPropertiesSet();            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException expected) {            assertEquals("One or more requirePermission entries is mandatory", expected.getMessage());        }    }    public void testSupportsAnything() {        assertTrue(new BasicAclEntryAfterInvocationProvider().supports(String.class));    }    //~ Inner Classes ==================================================================================================    private class MockAclEntry implements AclEntry {        // just so AclTag iterates some different types of AclEntrys    }}

⌨️ 快捷键说明

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