SEC-1593: Added tests to try to reproduce issue.

This commit is contained in:
Luke Taylor 2010-11-03 19:37:25 +00:00
parent 1c8d28501c
commit b9a98613eb
2 changed files with 42 additions and 2 deletions

View File

@ -45,6 +45,8 @@ import org.springframework.security.web.servletapi.SecurityContextHolderAwareReq
import org.springframework.security.web.session.SessionManagementFilter
import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler
import org.springframework.security.web.firewall.DefaultHttpFirewall
import org.springframework.security.BeanNameCollectingPostProcessor
import org.springframework.security.authentication.dao.DaoAuthenticationProvider
class MiscHttpConfigTests extends AbstractHttpConfigTests {
def 'Minimal configuration parses'() {
@ -409,16 +411,26 @@ class MiscHttpConfigTests extends AbstractHttpConfigTests {
* and also has a post processor registered which will modify it.
*/
def httpElementDoesntInterfereWithBeanPostProcessing() {
httpAutoConfig {}
xml.http('auto-config': 'true', 'entry-point-ref': 'entryPoint') {}
xml.'authentication-manager'() {
'authentication-provider'('user-service-ref': 'myUserService')
'authentication-provider'('ref': 'authProvider')
}
bean('authProvider', DaoAuthenticationProvider.class.name, [:], [userDetailsService: 'myUserService'])
bean('entryPoint', MockEntryPoint.class.name)
bean('myUserService', PostProcessedMockUserDetailsService)
bean('beanPostProcessor', MockUserServiceBeanPostProcessor)
bean('userServicePostProcessor', MockUserServiceBeanPostProcessor)
bean('nameCollectingPostProcessor', BeanNameCollectingPostProcessor)
createAppContext("")
def beanPP = appContext.getBean("nameCollectingPostProcessor")
Set preInitPPBeans = beanPP.beforeInitPostProcessedBeans
Set postInitPPBeans = beanPP.afterInitPostProcessedBeans
Set expectedBeans = ['authProvider', 'entryPoint', 'myUserService'] as Set
expect:
appContext.getBean("myUserService").getPostProcessorWasHere() == "Hello from the post processor!"
preInitPPBeans.containsAll(expectedBeans)
postInitPPBeans.containsAll(expectedBeans)
}
/* SEC-934 */

View File

@ -0,0 +1,28 @@
package org.springframework.security;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import java.util.*;
/**
* @author Luke Taylor
*/
public class BeanNameCollectingPostProcessor implements BeanPostProcessor {
Set<String> beforeInitPostProcessedBeans = new HashSet<String>();
Set<String> afterInitPostProcessedBeans = new HashSet<String>();
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (beanName != null) {
beforeInitPostProcessedBeans.add(beanName);
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (beanName != null) {
afterInitPostProcessedBeans.add(beanName);
}
return bean;
}
}