Clarify interface contract for ObjectDefinitionSource when no ConfigAttributes exist for a given secure object invocation, plus unit tests and fixes for concrete implementations. Thanks to Sean Radford for spotting the inconsistency.

This commit is contained in:
Ben Alex
2004-09-11 06:14:58 +00:00
parent 8a32fde12a
commit 333fe84ee8
4 changed files with 34 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import net.sf.acegisecurity.MockMethodInvocation;
import net.sf.acegisecurity.OtherTargetObject;
import net.sf.acegisecurity.SecurityConfig;
import net.sf.acegisecurity.TargetObject;
import net.sf.acegisecurity.acl.basic.SomeDomain;
import net.sf.acegisecurity.context.ContextHolder;
import net.sf.acegisecurity.context.SecureContext;
import net.sf.acegisecurity.context.SecureContextImpl;
@@ -202,6 +203,15 @@ public class MethodDefinitionAttributesTests extends TestCase {
ContextHolder.setContext(null);
}
public void testNullReturnedIfZeroAttributesDefinedForMethodInvocation()
throws Exception {
// SomeDomain is not defined in the MockAttributes()
// (which getConfigAttributeDefinition refers to)
ConfigAttributeDefinition def = getConfigAttributeDefinition(SomeDomain.class,
"getId", null);
assertNull(def);
}
private ConfigAttributeDefinition getConfigAttributeDefinition(
Class clazz, String methodName, Class[] args) throws Exception {
final Method method = clazz.getMethod(methodName, args);

View File

@@ -157,6 +157,20 @@ public class MethodDefinitionSourceEditorTests extends TestCase {
assertEquals(expectedCountLength, returnedCountLength);
}
public void testNullIsReturnedByMethodDefinitionSourceWhenMethodInvocationNotDefined()
throws Exception {
MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor();
editor.setAsText(
"net.sf.acegisecurity.TargetObject.countLength=ROLE_ONE,ROLE_TWO,RUN_AS_ENTRY");
MethodDefinitionMap map = (MethodDefinitionMap) editor.getValue();
ConfigAttributeDefinition configAttributeDefinition = map.getAttributes(new MockMethodInvocation(
TargetObject.class, "makeLowerCase",
new Class[] {String.class}));
assertNull(configAttributeDefinition);
}
public void testNullReturnsEmptyMap() {
MethodDefinitionSourceEditor editor = new MethodDefinitionSourceEditor();
editor.setAsText(null);