📄 basicaclentryafterinvocationcollectionfilteringprovidertests.java
字号:
assertEquals("belmont", filteredList[0]); } public void testDetectsIfReturnedObjectIsNotACollection() 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() }); BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); 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_COLLECTION_READ")); // Filter try { provider.decide(auth, new SimpleMethodInvocation(), attr, new String("RETURN_OBJECT_NOT_COLLECTION")); fail("Should have thrown AuthorizationServiceException"); } catch (AuthorizationServiceException expected) { assertTrue(true); } } 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() }); BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); 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_COLLECTION_READ")); // Filter List filteredList = (List) provider.decide(auth, new SimpleMethodInvocation(), attr, null); assertNull(filteredList); } 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() }); BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); provider.setAclManager(aclManager); assertEquals("AFTER_ACL_COLLECTION_READ", provider.getProcessConfigAttribute()); provider.setProcessConfigAttribute("AFTER_ACL_COLLECTION_ADMIN"); assertEquals("AFTER_ACL_COLLECTION_ADMIN", provider.getProcessConfigAttribute()); provider.afterPropertiesSet(); // Create a Collection containing many items, which only "sydney" // should remain in after filtering by provider List list = new Vector(); list.add("sydney"); list.add("melbourne"); list.add("belmont"); list.add("brisbane"); // 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_COLLECTION_READ")); // As no matching config attrib, ensure provider doesn't change list assertEquals(4, ((List) provider.decide(auth, new SimpleMethodInvocation(), attr, list)).size()); // Filter, this time with the conf attrib provider setup to answer attr.addConfigAttribute(new SecurityConfig("AFTER_ACL_COLLECTION_ADMIN")); List filteredList = (List) provider.decide(auth, new SimpleMethodInvocation(), attr, list); assertEquals(1, filteredList.size()); assertEquals("sydney", filteredList.get(0)); } 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() }); BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); provider.setAclManager(aclManager); assertEquals(SimpleAclEntry.READ, provider.getRequirePermission()[0]); provider.setRequirePermission(new int[] {SimpleAclEntry.ADMINISTRATION}); assertEquals(SimpleAclEntry.ADMINISTRATION, provider.getRequirePermission()[0]); provider.afterPropertiesSet(); // Create a Collection containing many items, which only "sydney" // should remain in after filtering by provider List list = new Vector(); list.add("sydney"); list.add("melbourne"); list.add("belmont"); list.add("brisbane"); // 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_COLLECTION_READ")); // Filter List filteredList = (List) provider.decide(auth, new SimpleMethodInvocation(), attr, list); assertEquals(1, filteredList.size()); assertEquals("sydney", filteredList.get(0)); } public void testStartupDetectsMissingAclManager() throws Exception { BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); try { provider.afterPropertiesSet(); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException expected) { assertEquals("An aclManager is mandatory", expected.getMessage()); } } public void testStartupDetectsMissingProcessConfigAttribute() throws Exception { BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); 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 { BasicAclEntryAfterInvocationCollectionFilteringProvider provider = new BasicAclEntryAfterInvocationCollectionFilteringProvider(); 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 BasicAclEntryAfterInvocationCollectionFilteringProvider().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 + -