12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package org.acegisecurity.config;
- import java.beans.FeatureDescriptor;
- import java.lang.reflect.Field;
- import java.util.Arrays;
- import javax.servlet.Filter;
- import junit.framework.TestCase;
- import org.acegisecurity.ui.AccessDeniedHandler;
- import org.acegisecurity.ui.AccessDeniedHandlerImpl;
- import org.acegisecurity.ui.ExceptionTranslationFilter;
- import org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint;
- import org.springframework.beans.PropertyValue;
- import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
- import org.springframework.beans.factory.config.RuntimeBeanReference;
- import org.springframework.beans.factory.support.RootBeanDefinition;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.util.ReflectionUtils;
- public class ExceptionTranslationParserTests extends TestCase {
- public void testParsingBeanReferences() {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "org/acegisecurity/config/exception-translation-beanref.xml");
- ConfigurableListableBeanFactory factory = (ConfigurableListableBeanFactory) context
- .getAutowireCapableBeanFactory();
- String[] beanNames = factory.getBeanNamesForType(ExceptionTranslationFilter.class);
- assertEquals(1, beanNames.length);
- RootBeanDefinition def = (RootBeanDefinition) factory.getBeanDefinition(beanNames[0]);
- assertEquals(ExceptionTranslationFilter.class.getName(), def.getBeanClassName());
- // check collaborators
- PropertyValue accessDeniedHandler = def.getPropertyValues().getPropertyValue("accessDeniedHandler");
- assertNotNull(accessDeniedHandler);
- assertEquals(accessDeniedHandler.getValue(), new RuntimeBeanReference("theBeanToUse"));
- PropertyValue entryPoint = def.getPropertyValues().getPropertyValue("authenticationEntryPoint");
- assertNotNull(entryPoint);
- assertEquals(entryPoint.getValue(), new RuntimeBeanReference("authenticationProcessingFilterEntryPoint"));
- }
- public void testRuntimeBeanDependencies() {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "org/acegisecurity/config/exception-translation-beanref.xml");
- ExceptionTranslationFilter filter = (ExceptionTranslationFilter) context.getBean("exceptionTranslationFilter");
- AuthenticationProcessingFilterEntryPoint entryPoint = (AuthenticationProcessingFilterEntryPoint) filter
- .getAuthenticationEntryPoint();
- assertEquals("/acegilogin.jsp", entryPoint.getLoginFormUrl());
- assertFalse(entryPoint.getForceHttps());
- }
- public void testAutoDetectionOfDefaultDependencies() throws Exception {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "org/acegisecurity/config/exception-translation-autodetect-handler.xml");
- ExceptionTranslationFilter filter = (ExceptionTranslationFilter) context.getBean("exceptionTranslationFilter");
- Field field = makeAccessibleAndGetFieldByName(filter.getClass().getDeclaredFields(), "accessDeniedHandler");
- assertTrue(field.get(filter) instanceof AccessDeniedHandler);
- AccessDeniedHandlerImpl accessDeniedHandler = (AccessDeniedHandlerImpl) field
- .get(filter);
- Field f = makeAccessibleAndGetFieldByName(accessDeniedHandler.getClass().getDeclaredFields(), "errorPage");
- assertEquals("errorPage",f.getName());
- String value = (String) f.get(accessDeniedHandler);
- assertEquals("/accessDenied.jsp", value);
- }
- private Field makeAccessibleAndGetFieldByName(Field[] fields, String name) {
- Field field = null;
- for (int i = 0, n = fields.length; i < n; i++) {
- ReflectionUtils.makeAccessible(fields[i]);
- if (fields[i].getName().equals(name)) {
- return fields[i];
- }
- }
- return field;
- }
- }
|