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

📄 authorizationmanagertest.java

📁 jspwiki source code,jspwiki source code
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.ecyrd.jspwiki.auth;import java.io.File;import java.security.Permission;import java.security.Principal;import java.util.Properties;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import org.apache.commons.lang.ArrayUtils;import com.ecyrd.jspwiki.*;import com.ecyrd.jspwiki.attachment.Attachment;import com.ecyrd.jspwiki.auth.acl.UnresolvedPrincipal;import com.ecyrd.jspwiki.auth.authorize.Group;import com.ecyrd.jspwiki.auth.authorize.GroupManager;import com.ecyrd.jspwiki.auth.authorize.Role;import com.ecyrd.jspwiki.auth.permissions.AllPermission;import com.ecyrd.jspwiki.auth.permissions.PagePermission;import com.ecyrd.jspwiki.auth.permissions.PermissionFactory;import com.ecyrd.jspwiki.auth.permissions.WikiPermission;import com.ecyrd.jspwiki.auth.user.UserProfile;import com.ecyrd.jspwiki.providers.ProviderException;/** * Tests the AuthorizationManager class. * @author Janne Jalkanen */public class AuthorizationManagerTest extends TestCase{    private AuthorizationManager m_auth;    private TestEngine           m_engine;    private GroupManager         m_groupMgr;    private WikiSession          m_session;    private static class TestPrincipal implements Principal    {        private final String m_name;        public TestPrincipal( String name )        {            m_name = name;        }        public String getName()        {            return m_name;        }    }    public AuthorizationManagerTest( String s )    {        super( s );    }    public static Test suite()    {        TestSuite suite = new TestSuite( "Authorization Manager test" );        suite.addTestSuite( AuthorizationManagerTest.class );        return suite;    }    public void setUp() throws Exception    {        Properties props = new Properties();        props.load( TestEngine.findTestProperties() );                // Make sure we are using the default security policy file jspwiki.policy        props.put( AuthorizationManager.POLICY, AuthorizationManager.DEFAULT_POLICY );                // Initialize the test engine        m_engine = new TestEngine( props );        m_auth = m_engine.getAuthorizationManager();        m_groupMgr = m_engine.getGroupManager();        m_session = WikiSessionTest.adminSession( m_engine );    }    /**     * Tests the default policy. Anonymous users can read, Authenticated can     * edit, etc. Uses the default tests/etc/jspwiki.policy file installed by     * the JRE at startup.     * @throws Exception     */    public void testDefaultPermissions() throws Exception    {        // Save a page without an ACL        m_engine.saveText( "TestDefaultPage", "Foo" );        Permission view = PermissionFactory.getPagePermission( "*:TestDefaultPage", "view" );        Permission edit = PermissionFactory.getPagePermission( "*:TestDefaultPage", "edit" );        WikiSession session;        // Alice is asserted        session = WikiSessionTest.assertedSession( m_engine, Users.ALICE );        assertTrue( "Alice view", m_auth.checkPermission( session, view ) );        assertTrue( "Alice edit", m_auth.checkPermission( session, edit ) );        // Bob is logged in        session = WikiSessionTest.authenticatedSession( m_engine, Users.BOB, Users.BOB_PASS );        assertTrue( "Bob view", m_auth.checkPermission( session, view ) );        assertTrue( "Bob edit", m_auth.checkPermission( session, edit ) );        // Delete the test page        try        {            m_engine.deletePage( "TestDefaultPage" );        }        catch( ProviderException e )        {            assertTrue( false );        }    }    public void testGetRoles() throws Exception    {        WikiSession session;        Principal[] principals;        // Create a new "asserted" session for Bob        session = WikiSessionTest.assertedSession( m_engine, Users.BOB );        // Set up a group without Bob in it        Group test = m_groupMgr.parseGroup( "Test", "Alice \n Charlie", true );        m_groupMgr.setGroup( m_session, test );        // Bob should have two roles: ASSERTED and ALL        principals = session.getRoles();        assertTrue( "Bob in ALL", ArrayUtils.contains( principals, Role.ALL ) );        assertTrue( "Bob in ASSERTED", ArrayUtils.contains( principals, Role.ASSERTED ) );        assertFalse( "Bob not in ANONYMOUS", ArrayUtils.contains( principals, Role.ANONYMOUS ) );        assertFalse( "Bob not in Test", ArrayUtils.contains( principals, test.getPrincipal() ) );        // Re-save group "Test" with Bob as a member        test = m_groupMgr.parseGroup( "Test", "Alice \n Bob \nCharlie", true );        m_groupMgr.setGroup( m_session, test );        // Bob not authenticated: should still have only two romes        principals = session.getRoles();        assertTrue( "Bob in ALL", ArrayUtils.contains( principals, Role.ALL ) );        assertTrue( "Bob in ASSERTED", ArrayUtils.contains( principals, Role.ASSERTED ) );        assertFalse( "Bob not in ANONYMOUS", ArrayUtils.contains( principals, Role.ANONYMOUS ) );        assertFalse( "Bob in Test", ArrayUtils.contains( principals, test.getPrincipal() ) );        // Elevate Bob to "authenticated" status        session = WikiSessionTest.authenticatedSession( m_engine, Users.BOB, Users.BOB_PASS );        // Re-save the group; Bob should possess the role now        test = m_groupMgr.parseGroup( "Test", "Alice \n Bob \n Charlie", true );        m_groupMgr.setGroup( m_session, test );        principals = session.getRoles();        assertTrue( "Bob in ALL", ArrayUtils.contains( principals, Role.ALL ) );        assertFalse( "Bob in ASSERTED", ArrayUtils.contains( principals, Role.ASSERTED ) );        assertFalse( "Bob not in ANONYMOUS", ArrayUtils.contains( principals, Role.ANONYMOUS ) );        assertTrue( "Bob in Test", ArrayUtils.contains( principals, test.getPrincipal() ) );        // Cleanup        m_groupMgr.removeGroup( "Test" );    }    public void testAssertedSession() throws Exception    {        // Create Alice and her roles        Principal alice = new WikiPrincipal( Users.ALICE );        Role it = new Role( "IT" );        Role engineering = new Role( "Engineering" );        Role finance = new Role( "Finance" );        Principal admin = new GroupPrincipal( "Admin" );        WikiSession session = WikiSessionTest.assertedSession(                m_engine,                Users.ALICE,                new Principal[] { it, engineering, admin } );        // Create two groups: Alice should be part of group Bar, but not Foo        Group fooGroup = m_groupMgr.parseGroup( "Foo", "", true );        Group barGroup = m_groupMgr.parseGroup( "Bar", "", true );        barGroup.add( alice );        m_groupMgr.setGroup( m_session, fooGroup );        m_groupMgr.setGroup( m_session, barGroup );        // Test user principal posession: Alice isn't considered to        // have the "Alice" principal because she's not authenticated        assertFalse ( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.ALICE ) ) );        assertFalse ( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.ALICE ) ) );        assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.BOB ) ) );        assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.BOB ) ) );        // Built-in role memberships        assertTrue( "Alice in ALL", m_auth.hasRoleOrPrincipal( session, Role.ALL ) );        assertFalse( "Alice not in ANONYMOUS", m_auth.hasRoleOrPrincipal( session, Role.ANONYMOUS ) );        assertTrue( "Alice in ASSERTED", m_auth.hasRoleOrPrincipal( session, Role.ASSERTED ) );        assertFalse( "Alice not in AUTHENTICATED", m_auth.hasRoleOrPrincipal( session, Role.AUTHENTICATED ) );        // Custom roles should be FALSE because Alice is asserted        assertFalse( "Alice not in IT", m_auth.hasRoleOrPrincipal( session, it ) );        assertFalse( "Alice not in Engineering", m_auth.hasRoleOrPrincipal( session, engineering ) );        assertFalse( "Alice not in Finance", m_auth.hasRoleOrPrincipal( session, finance ) );        // Group memberships should be FALSE because Alice is asserted        assertFalse( "Alice not in Foo", m_auth.hasRoleOrPrincipal( session, fooGroup.getPrincipal() ) );        assertFalse( "Alice not in Bar", m_auth.hasRoleOrPrincipal( session, barGroup.getPrincipal() ) );        // Clean up        m_groupMgr.removeGroup( "Foo" );        m_groupMgr.removeGroup( "Bar" );    }    public void testAuthenticatedSession() throws Exception    {        // Create Alice and her roles        Principal alice = new WikiPrincipal( Users.ALICE );        Role it = new Role( "IT" );        Role engineering = new Role( "Engineering" );        Role finance = new Role( "Finance" );        Principal admin = new GroupPrincipal( "Admin" );        WikiSession session = WikiSessionTest.containerAuthenticatedSession(                m_engine,                Users.ALICE,                new Principal[] { it, engineering, admin } );        // Create two groups: Alice should be part of group Bar, but not Foo        Group fooGroup = m_groupMgr.parseGroup( "Foo", "", true );        Group barGroup = m_groupMgr.parseGroup( "Bar", "", true );        barGroup.add( alice );        m_groupMgr.setGroup( m_session, fooGroup );        m_groupMgr.setGroup( m_session, barGroup );        // Test user principal posession: user principals of different        // types should still be "the same" if their names are equal        assertTrue( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.ALICE ) ) );        assertTrue( "Alice has Alice", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.ALICE ) ) );        assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new WikiPrincipal( Users.BOB ) ) );        assertFalse( "Alice not has Bob", m_auth.hasRoleOrPrincipal( session, new TestPrincipal( Users.BOB ) ) );        // Built-in role membership        assertTrue( "Alice in ALL", m_auth.hasRoleOrPrincipal( session, Role.ALL ) );        assertFalse( "Alice not in ANONYMOUS", m_auth.hasRoleOrPrincipal( session, Role.ANONYMOUS ) );        assertFalse( "Alice not in ASSERTED", m_auth.hasRoleOrPrincipal( session, Role.ASSERTED ) );        assertTrue( "Alice in AUTHENTICATED", m_auth.hasRoleOrPrincipal( session, Role.AUTHENTICATED ) );        // Custom roles        assertTrue( "Alice in IT", m_auth.hasRoleOrPrincipal( session, it ) );        assertTrue( "Alice in Engineering", m_auth.hasRoleOrPrincipal( session, engineering ) );        assertFalse( "Alice not in Finance", m_auth.hasRoleOrPrincipal( session, finance ) );        // Group memberships        assertFalse( "Alice not in Foo", m_auth.hasRoleOrPrincipal( session, fooGroup.getPrincipal() ) );

⌨️ 快捷键说明

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