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

📄 grouppermissiontest.java

📁 jspwiki source code,jspwiki source code
💻 JAVA
字号:
package com.ecyrd.jspwiki.auth.permissions;import java.security.AccessControlException;import java.security.Permission;import java.security.PrivilegedAction;import javax.security.auth.Subject;import com.ecyrd.jspwiki.auth.GroupPrincipal;import com.ecyrd.jspwiki.auth.WikiPrincipal;import junit.framework.TestCase;/** * @author Andrew R. Jaquith */public class GroupPermissionTest extends TestCase{    public static void main( String[] args )    {        junit.textui.TestRunner.run( GroupPermissionTest.class );    }    /*     * Class under test for boolean equals(java.lang.Object)     */    public final void testEqualsObject()    {        GroupPermission p1 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        GroupPermission p2 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        GroupPermission p3 = new GroupPermission( "mywiki:Test", "delete,view,edit" );        GroupPermission p4 = new GroupPermission( "mywiki:Test*", "delete,view,edit" );        assertEquals( p1, p2 );        assertEquals( p1, p3 );        assertFalse( p3.equals( p4 ) );    }    public final void testCreateMask()    {        assertEquals( 1, GroupPermission.createMask( "view" ) );        assertEquals( 7, GroupPermission.createMask( "view,edit,delete" ) );        assertEquals( 7, GroupPermission.createMask( "edit,delete,view" ) );        assertEquals( 2, GroupPermission.createMask( "edit" ) );        assertEquals( 6, GroupPermission.createMask( "edit,delete" ) );    }    /*     * Class under test for java.lang.String toString()     */    public final void testToString()    {        GroupPermission p;        p = new GroupPermission( "Test", "view,edit,delete" );        assertEquals( "(\"com.ecyrd.jspwiki.auth.permissions.GroupPermission\",\"*:Test\",\"delete,edit,view\")", p                .toString() );        p = new GroupPermission( "mywiki:Test", "view,edit,delete" );        assertEquals( "(\"com.ecyrd.jspwiki.auth.permissions.GroupPermission\",\"mywiki:Test\",\"delete,edit,view\")", p                .toString() );    }    /**     * Tests wiki name support.     */    public final void testWikiNames()    {        GroupPermission p1;        GroupPermission p2;        // Permissions without prepended wiki name should imply themselves        p1 = new GroupPermission( "Test", "edit" );        p2 = new GroupPermission( "Test", "edit" );        assertTrue( p1.implies( p1 ) );        assertTrue( p1.implies( p2 ) );        // Permissions with a wildcard wiki should imply other wikis        p1 = new GroupPermission( "*:Test", "edit" );        p2 = new GroupPermission( "mywiki:Test", "edit" );        assertTrue( p1.implies( p2 ) );        assertFalse( p2.implies( p1 ) );        // Permissions that start with ":" are just like "*:"        p1 = new GroupPermission( "*:Test", "edit" );        p2 = new GroupPermission( "Test", "edit" );        assertTrue( p1.implies( p1 ) );        assertTrue( p1.implies( p2 ) );    }    public final void testImpliesMember()    {        GroupPermission p1;        Permission p2;        Subject s;                // <groupmember> implies TestGroup if Subject has GroupPermission("TestGroup")        p1 = new GroupPermission( "*:<groupmember>", "view" );        p2 = new GroupPermission ("*:TestGroup", "view" );        s = new Subject();        s.getPrincipals().add( new GroupPrincipal( "TestGroup" ) );        assertTrue( subjectImplies( s, p1, p2 ) );                // <groupmember> doesn't imply it if Subject has no GroupPermission("TestGroup")        s = new Subject();        s.getPrincipals().add( new WikiPrincipal( "TestGroup" ) );        assertFalse( subjectImplies( s, p1, p2 ) );                // <groupmember> doesn't imply it if Subject's GP doesn't match        s = new Subject();        s.getPrincipals().add( new GroupPrincipal( "FooGroup" ) );        assertFalse( subjectImplies( s, p1, p2 ) );                // <groupmember> doesn't imply it if p2 isn't GroupPermission type        p2 = new PagePermission ("*:TestGroup", "view" );        s = new Subject();        s.getPrincipals().add( new GroupPrincipal( "TestGroup" ) );        assertFalse( subjectImplies( s, p1, p2 ) );                // <groupmember> implies TestGroup if not called with Subject combiner        p1 = new GroupPermission( "*:<groupmember>", "view" );        p2 = new GroupPermission ("*:TestGroup", "view" );        assertFalse( p1.impliesMember( p2 ) );    }            /*     * Class under test for boolean implies(java.security.Permission)     */    public final void testImpliesPermission()    {        GroupPermission p1;        GroupPermission p2;        GroupPermission p3;        // The same permission should imply itself        p1 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        p2 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        assertTrue( p1.implies( p2 ) );        assertTrue( p2.implies( p1 ) );        // The same permission should imply itself for wildcard wikis        p1 = new GroupPermission( "Test", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view,edit,delete" );        p3 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        assertTrue( p1.implies( p2 ) );        assertTrue( p2.implies( p1 ) );        assertTrue( p1.implies( p3 ) );        assertTrue( p2.implies( p3 ) );        assertFalse( p3.implies( p1 ) );        assertFalse( p3.implies( p2 ) );        // Actions on collection should imply permission for group with same        // actions        p1 = new GroupPermission( "*:*", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view,edit,delete" );        p3 = new GroupPermission( "mywiki:Test", "view,edit,delete" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertTrue( p2.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        // Actions on single group should imply subset of those actions        p1 = new GroupPermission( "*:Test", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        assertFalse( p3.implies( p2 ) );        // Actions on collection should imply subset of actions on single group        p1 = new GroupPermission( "*:*", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        p1 = new GroupPermission( "*:Tes*", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        p1 = new GroupPermission( "*:*st", "view,edit,delete" );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        // Delete action on collection should imply edit/view on        // single group        p1 = new GroupPermission( "*:*st", "delete" );        p2 = new GroupPermission( "*:Test", "edit" );        p3 = new GroupPermission( "mywiki:Test", "edit" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        // Edit action on collection should imply view on single group        p1 = new GroupPermission( "*:*st", "edit" );        p2 = new GroupPermission( "*:Test", "view" );        p3 = new GroupPermission( "mywiki:Test", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        // Pre- and post- wildcards should also be fine        p1 = new GroupPermission( "*:Test*", "view" );        p2 = new GroupPermission( "*:TestGroup", "view" );        p3 = new GroupPermission( "mywiki:TestGroup", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );        p1 = new GroupPermission( "*:*Group", "view" );        p2 = new GroupPermission( "*:TestGroup", "view" );        p3 = new GroupPermission( "mywiki:TestGroup", "view" );        assertTrue( p1.implies( p2 ) );        assertTrue( p1.implies( p3 ) );        assertFalse( p2.implies( p1 ) );        assertFalse( p3.implies( p1 ) );                // Wildcards don't imply the <groupmember> target        p1 = new GroupPermission( "*:*", "view" );        p2 = new GroupPermission( "*:<groupmember>", "view" );        assertFalse( p1.implies( p2 ) );        assertFalse( p2.implies( p1 ) );                p1 = new GroupPermission( "*:*ber>", "view" );        assertFalse( p1.implies( p2 ) );        assertFalse( p2.implies( p1 ) );    }        public final void testImplies()    {        assertTrue( GroupPermission.DELETE.implies( GroupPermission.EDIT ) );        assertTrue( GroupPermission.DELETE.implies( GroupPermission.VIEW ) );        assertTrue( GroupPermission.EDIT.implies( GroupPermission.VIEW ) );    }    public final void testImpliedMask()    {        int result = ( GroupPermission.DELETE_MASK | GroupPermission.EDIT_MASK | GroupPermission.VIEW_MASK );        assertEquals( result, GroupPermission.impliedMask( GroupPermission.DELETE_MASK ) );        result = ( GroupPermission.EDIT_MASK | GroupPermission.VIEW_MASK );        assertEquals( result, GroupPermission.impliedMask( GroupPermission.EDIT_MASK ) );    }    public final void testGetName()    {        GroupPermission p;        p = new GroupPermission( "Test", "view,edit,delete" );        assertEquals( "Test", p.getName() );        p = new GroupPermission( "mywiki:Test", "view,edit,delete" );        assertEquals( "mywiki:Test", p.getName() );        assertNotSame( "*:Test", p.getName() );    }    /*     * Class under test for java.lang.String getActions()     */    public final void testGetActions()    {        GroupPermission p = new GroupPermission( "Test", "VIEW,edit,delete" );        assertEquals( "delete,edit,view", p.getActions() );    }    /**     * Binds a Subject to the current AccessControlContext and calls      * p1.implies(p2).     * @param subject     * @param p1     * @param p2     * @return     */    protected final boolean subjectImplies( final Subject subject, final GroupPermission p1, final Permission p2 )    {        try        {            Boolean result = (Boolean)Subject.doAsPrivileged( subject, new PrivilegedAction()            {                public Object run()                {                    return Boolean.valueOf( p1.impliesMember( p2 ) );                }            }, null );            return result.booleanValue();        }        catch( AccessControlException e )        {            return false;        }    }}

⌨️ 快捷键说明

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