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

📄 defaultaclmanagertest.java

📁 jspwiki source code,jspwiki source code
💻 JAVA
字号:
package com.ecyrd.jspwiki.auth.acl;import java.security.Principal;import java.util.Properties;import java.util.regex.Matcher;import org.apache.commons.lang.ArrayUtils;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import com.ecyrd.jspwiki.TestEngine;import com.ecyrd.jspwiki.WikiPage;import com.ecyrd.jspwiki.auth.WikiPrincipal;import com.ecyrd.jspwiki.auth.permissions.PermissionFactory;import com.ecyrd.jspwiki.providers.ProviderException;public class DefaultAclManagerTest    extends TestCase{    TestEngine m_engine;    public DefaultAclManagerTest( String s )    {        super( s );    }    public void setUp()        throws Exception    {        Properties props = new Properties();        props.load( TestEngine.findTestProperties() );        m_engine = new TestEngine(props);        String text = "Foo";        m_engine.saveText( "TestDefaultPage", text );        text = "Bar. [{ALLOW edit Charlie, Herman}] ";        m_engine.saveText( "TestAclPage", text );    }    public void tearDown()    {        try        {            m_engine.deletePage( "TestDefaultPage" );            m_engine.deletePage( "TestAclPage" );        }        catch ( ProviderException e )        {        }    }    public void testGetPermissions()    {        WikiPage page = m_engine.getPage( "TestDefaultPage" );        Acl acl = m_engine.getAclManager().getPermissions( page );        assertNotNull( page.getAcl() );        assertTrue(page.getAcl().isEmpty());        page = m_engine.getPage( "TestAclPage" );        acl = m_engine.getAclManager().getPermissions( page );        assertNotNull( page.getAcl() );        assertFalse(page.getAcl().isEmpty());        Principal[] p;        // Charlie is an editor; reading is therefore implied        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "view") );        assertEquals( 2, p.length );        assertTrue( ArrayUtils.contains( p, new WikiPrincipal("Charlie") ) );        // Charlie should be in the ACL as an editor        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "edit") );        assertEquals( 2, p.length );        assertTrue( ArrayUtils.contains( p, new WikiPrincipal("Charlie") ) );        // Charlie should not be able to delete this page        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "delete") );        assertEquals( 0, p.length );        // Herman is an unregistered user and editor; reading is implied        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "view") );        assertEquals( 2, p.length );        assertTrue( ArrayUtils.contains( p, new UnresolvedPrincipal("Herman") ) );        // Herman should be in the ACL as an editor        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "edit") );        assertEquals( 2, p.length );        assertTrue( ArrayUtils.contains( p, new UnresolvedPrincipal("Herman") ) );        // Herman should not be able to delete this page        p = acl.findPrincipals( PermissionFactory.getPagePermission(page, "delete") );        assertEquals( 0, p.length );    }    public void testAclRegex()    {        String acl;        Matcher m;        acl = "[{ALLOW view Bob, Alice, Betty}] Test text.";        m = DefaultAclManager.ACL_PATTERN.matcher( acl );        assertTrue ( m.find() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{ALLOW view Bob, Alice, Betty}]", m.group(0) );        assertEquals( "view", m.group(1) );        assertEquals( "Bob, Alice, Betty", m.group(2) );        assertFalse( m.find() );        acl = "[{ALLOW view Alice}] Test text.";        m = DefaultAclManager.ACL_PATTERN.matcher( acl );        assertTrue ( m.find() );        System.out.println( m.group() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{ALLOW view Alice}]", m.group(0) );        assertEquals( "view", m.group(1) );        assertEquals( "Alice", m.group(2) );        assertFalse( m.find() );        acl = "Test text   [{   ALLOW   view   Alice  }]  Test text.";        m = DefaultAclManager.ACL_PATTERN.matcher( acl );        assertTrue ( m.find() );        System.out.println( m.group() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{   ALLOW   view   Alice  }]", m.group(0) );        assertEquals( "view", m.group(1) );        assertEquals( "Alice", m.group(2) );        assertFalse( m.find() );        acl = "Test text   [{   ALLOW   view  Alice  ,  Bob  }]  Test text.";        m = DefaultAclManager.ACL_PATTERN.matcher( acl );        assertTrue ( m.find() );        System.out.println( m.group() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{   ALLOW   view  Alice  ,  Bob  }]", m.group(0) );        assertEquals( "view", m.group(1) );        assertEquals( "Alice  ,  Bob", m.group(2) );        assertFalse( m.find() );        acl = "Test text   [{   ALLOW   view  Alice  ,  Bob  }]  Test text  [{ALLOW edit Betty}].";        m = DefaultAclManager.ACL_PATTERN.matcher( acl );        assertTrue ( m.find() );        System.out.println( m.group() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{   ALLOW   view  Alice  ,  Bob  }]", m.group(0) );        assertEquals( "view", m.group(1) );        assertEquals( "Alice  ,  Bob", m.group(2) );        assertTrue ( m.find() );        assertEquals( 2, m.groupCount() );        assertEquals( "[{ALLOW edit Betty}]", m.group(0) );        assertEquals( "edit", m.group(1) );        assertEquals( "Betty", m.group(2) );        assertFalse( m.find() );    }    public void testPrintAcl()    {        // Verify that the printed Acl for the test page is OK        WikiPage page = m_engine.getPage( "TestAclPage" );        Acl acl = m_engine.getAclManager().getPermissions( page );        String aclString = DefaultAclManager.printAcl( acl );        assertEquals( "[{ALLOW edit Charlie,Herman}]\n", aclString );        // Create an ACL from scratch        acl = new AclImpl();        AclEntry entry = new AclEntryImpl();        entry.setPrincipal( new WikiPrincipal( "Charlie" ) );        entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "view" ) );        entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "edit" ) );        acl.addEntry( entry );        entry = new AclEntryImpl();        entry.setPrincipal( new WikiPrincipal( "Devin" ) );        entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "edit" ) );        entry.addPermission( PermissionFactory.getPagePermission( "Main:Foo", "delete" ) );        acl.addEntry( entry );        // Verify that the printed ACL is OK        String expectedValue = "[{ALLOW delete Devin}]\n[{ALLOW edit Charlie,Devin}]\n[{ALLOW view Charlie}]\n";        assertEquals( expectedValue, DefaultAclManager.printAcl( acl ) );    }    public static Test suite()    {        return new TestSuite( DefaultAclManagerTest.class );    }}

⌨️ 快捷键说明

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