@ -12,20 +12,22 @@
@@ -12,20 +12,22 @@
* See the License for the specific language governing permissions and
* limitations under the License .
* /
package org.acegisecurity.annotation ;
import java.lang.reflect.Field ;
import java.lang.reflect.Method ;
import java.util.Collection ;
import junit.framework.TestCase ;
import org.acegisecurity.SecurityConfig ;
import org.apache.commons.logging.Log ;
import org.apache.commons.logging.LogFactory ;
import org.springframework.metadata.Attributes ;
import java.lang.reflect.Field ;
import java.lang.reflect.Method ;
import java.util.Collection ;
/ * *
* Tests for { @link org . acegisecurity . annotation . SecurityAnnotationAttributes }
@ -47,6 +49,67 @@ public class SecurityAnnotationAttributesTests extends TestCase {
@@ -47,6 +49,67 @@ public class SecurityAnnotationAttributesTests extends TestCase {
this . attributes = new SecurityAnnotationAttributes ( ) ;
}
public void testGenericsSuperclassDeclarationsAreIncludedWhenSubclassesOverride ( ) {
Method method = null ;
try {
method = DepartmentServiceImpl . class . getMethod ( "someUserMethod3" , new Class [ ] { Department . class } ) ;
} catch ( NoSuchMethodException unexpected ) {
fail ( "Should be a superMethod called 'someUserMethod3' on class!" ) ;
}
Collection attrs = this . attributes . getAttributes ( method ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "attrs: " ) ;
logger . debug ( attrs ) ;
}
assertNotNull ( attrs ) ;
// expect 1 attribute
assertTrue ( "Did not find 1 attribute" , attrs . size ( ) = = 1 ) ;
// should have 1 SecurityConfig
for ( Object obj : attrs ) {
assertTrue ( obj instanceof SecurityConfig ) ;
SecurityConfig sc = ( SecurityConfig ) obj ;
assertEquals ( "Found an incorrect role" , "ROLE_ADMIN" , sc . getAttribute ( ) ) ;
}
Method superMethod = null ;
try {
superMethod = DepartmentServiceImpl . class . getMethod ( "someUserMethod3" , new Class [ ] { Entity . class } ) ;
} catch ( NoSuchMethodException unexpected ) {
fail ( "Should be a superMethod called 'someUserMethod3' on class!" ) ;
}
System . out . println ( superMethod ) ;
Collection superAttrs = this . attributes . getAttributes ( superMethod ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "superAttrs: " ) ;
logger . debug ( superAttrs ) ;
}
assertNotNull ( superAttrs ) ;
// TODO: Enable this part of the test once we can build against Spring 2.0+ and above only (SEC-274)
/ *
// expect 1 attribute
assertTrue ( "Did not find 1 attribute" , superAttrs . size ( ) = = 1 ) ;
// should have 1 SecurityConfig
for ( Object obj : superAttrs ) {
assertTrue ( obj instanceof SecurityConfig ) ;
SecurityConfig sc = ( SecurityConfig ) obj ;
assertEquals ( "Found an incorrect role" , "ROLE_ADMIN" , sc . getAttribute ( ) ) ;
}
* /
}
public void testGetAttributesClass ( ) {
Collection attrs = this . attributes . getAttributes ( BusinessService . class ) ;
@ -134,59 +197,4 @@ public class SecurityAnnotationAttributesTests extends TestCase {
@@ -134,59 +197,4 @@ public class SecurityAnnotationAttributesTests extends TestCase {
fail ( "Unsupported method should have thrown an exception!" ) ;
} catch ( UnsupportedOperationException expected ) { }
}
public void testGenericsSuperclassDeclarationsAreIncludedWhenSubclassesOverride ( ) {
Method method = null ;
try {
method = DepartmentServiceImpl . class . getMethod ( "someUserMethod3" , new Class [ ] { Department . class } ) ;
} catch ( NoSuchMethodException unexpected ) {
fail ( "Should be a superMethod called 'someUserMethod3' on class!" ) ;
}
Collection attrs = this . attributes . getAttributes ( method ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "attrs: " ) ;
logger . debug ( attrs ) ;
}
assertNotNull ( attrs ) ;
// expect 1 attribute
assertTrue ( "Did not find 1 attribute" , attrs . size ( ) = = 1 ) ;
// should have 1 SecurityConfig
for ( Object obj : attrs ) {
assertTrue ( obj instanceof SecurityConfig ) ;
SecurityConfig sc = ( SecurityConfig ) obj ;
assertEquals ( "Found an incorrect role" , "ROLE_ADMIN" , sc . getAttribute ( ) ) ;
}
Method superMethod = null ;
try {
superMethod = DepartmentServiceImpl . class . getMethod ( "someUserMethod3" , new Class [ ] { Entity . class } ) ;
} catch ( NoSuchMethodException unexpected ) {
fail ( "Should be a superMethod called 'someUserMethod3' on class!" ) ;
}
System . out . println ( superMethod ) ;
Collection superAttrs = this . attributes . getAttributes ( superMethod ) ;
if ( logger . isDebugEnabled ( ) ) {
logger . debug ( "superAttrs: " ) ;
logger . debug ( superAttrs ) ;
}
assertNotNull ( superAttrs ) ;
// TODO: Resolve bridge method bug as reported in SEC-274
/ *
// expect 1 attribute
assertTrue ( "Did not find 1 attribute" , superAttrs . size ( ) = = 1 ) ;
// should have 1 SecurityConfig
for ( Object obj : superAttrs ) {
assertTrue ( obj instanceof SecurityConfig ) ;
SecurityConfig sc = ( SecurityConfig ) obj ;
assertEquals ( "Found an incorrect role" , "ROLE_ADMIN" , sc . getAttribute ( ) ) ;
}
* /
}
}