ソースを参照

Fix bug related to detecting incorrect use of SecureContext property.

Ben Alex 21 年 前
コミット
2996d67b06

+ 1 - 1
core/src/main/java/org/acegisecurity/ui/AbstractIntegrationFilter.java

@@ -100,7 +100,7 @@ public abstract class AbstractIntegrationFilter implements InitializingBean,
 
     public void afterPropertiesSet() throws Exception {
         if ((this.secureContext == null)
-            || (!this.secureContext.isAssignableFrom(SecureContext.class))) {
+            || (!SecureContext.class.isAssignableFrom(this.secureContext))) {
             throw new IllegalArgumentException(
                 "secureContext must be defined and implement SecureContext");
         }

+ 28 - 4
core/src/test/java/org/acegisecurity/ui/AbstractIntegrationFilterTests.java

@@ -152,13 +152,26 @@ public class AbstractIntegrationFilterTests extends TestCase {
         }
     }
 
-    public void testSecureContextSettersGetters() throws Exception {
+    public void testRejectsInvalidSecureContextClass()
+        throws Exception {
         MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(null);
 
-        // check the default
-        assertEquals(SecureContextImpl.class, filter.getSecureContext());
+        // Test rejects classes not implementing SecureContext
+        filter.setSecureContext(String.class);
+
+        try {
+            filter.afterPropertiesSet();
+            fail("Should have thrown IllegalArgumentException");
+        } catch (IllegalArgumentException expected) {
+            assertTrue(true);
+        }
 
-        // check null causes exception
+        // Test accepts classes implementing SecureContext
+        filter.setSecureContext(SecureContextImpl.class);
+        filter.afterPropertiesSet();
+        assertTrue(true);
+
+        // Test rejects null
         filter.setSecureContext(null);
 
         try {
@@ -169,6 +182,17 @@ public class AbstractIntegrationFilterTests extends TestCase {
         }
     }
 
+    public void testSecureContextSettersGetters() throws Exception {
+        MockAbstractIntegrationFilterImpl filter = new MockAbstractIntegrationFilterImpl(null);
+
+        // check the default
+        assertEquals(SecureContextImpl.class, filter.getSecureContext());
+
+        // check the setter
+        filter.setSecureContext(null);
+        assertNull(filter.getSecureContext());
+    }
+
     public void testSuccessWhenConcreteClassReturnsValidAuthenticationObject()
         throws Exception {
         PrincipalAcegiUserToken principal = new PrincipalAcegiUserToken("key",