📄 defaultaclmanagertest.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 + -