|  | @@ -22,94 +22,99 @@ import org.springframework.util.Assert;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @author vpuri
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | + * 
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  public class AuthenticationRepositoryParserTest extends TestCase {
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	public void testAuthenticationRepositoryDefaultWithAutoUserdetails() {
 | 
	
		
			
				|  |  | -		ApplicationContext context = new ClassPathXmlApplicationContext("org/acegisecurity/config/authentication-dao-defaults.xml");
 | 
	
		
			
				|  |  | -		ConfigurableListableBeanFactory clbf = 
 | 
	
		
			
				|  |  | -			(ConfigurableListableBeanFactory)context.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | +		ApplicationContext context = new ClassPathXmlApplicationContext(
 | 
	
		
			
				|  |  | +				"org/acegisecurity/config/authentication-dao-defaults.xml");
 | 
	
		
			
				|  |  | +		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) context
 | 
	
		
			
				|  |  | +				.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		String[] names = clbf.getBeanNamesForType(AuthenticationProvider.class);
 | 
	
		
			
				|  |  |  		assertEquals(1, names.length);
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		// check bean class
 | 
	
		
			
				|  |  | -		RootBeanDefinition definition = (RootBeanDefinition)clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | -	    assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		DaoAuthenticationProvider provider = (DaoAuthenticationProvider)context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  | +		RootBeanDefinition definition = (RootBeanDefinition) clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | +		assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		DaoAuthenticationProvider provider = (DaoAuthenticationProvider) context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  |  		Assert.isAssignable(JdbcDaoImpl.class, provider.getUserDetailsService().getClass());
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	public void testCollaboratorsAsInnerBeans(){
 | 
	
		
			
				|  |  | -		ApplicationContext context = new ClassPathXmlApplicationContext("org/acegisecurity/config/authentication-innerbeans.xml");
 | 
	
		
			
				|  |  | -		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory)context.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public void testCollaboratorsAsInnerBeans() {
 | 
	
		
			
				|  |  | +		ApplicationContext context = new ClassPathXmlApplicationContext(
 | 
	
		
			
				|  |  | +				"org/acegisecurity/config/authentication-innerbeans.xml");
 | 
	
		
			
				|  |  | +		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) context
 | 
	
		
			
				|  |  | +				.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  |  		// get the main bean definition, there should be only one
 | 
	
		
			
				|  |  |  		String[] names = clbf.getBeanNamesForType(AuthenticationProvider.class);
 | 
	
		
			
				|  |  |  		assertEquals(1, names.length);
 | 
	
		
			
				|  |  | -		RootBeanDefinition definition = (RootBeanDefinition)clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | -	    assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    // get the 2 inner beans
 | 
	
		
			
				|  |  | -	    PropertyValue saltSourceBean = definition.getPropertyValues().getPropertyValue("saltSource");
 | 
	
		
			
				|  |  | -	    assertEquals("saltSource", saltSourceBean.getName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    //get the BeanDefinition	    
 | 
	
		
			
				|  |  | -	    RootBeanDefinition saltsourceDef = (RootBeanDefinition) saltSourceBean.getValue();
 | 
	
		
			
				|  |  | -	    Assert.isAssignable(SaltSource.class,saltsourceDef.getBeanClass());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    PropertyValue encoder = definition.getPropertyValues().getPropertyValue("passwordEncoder");
 | 
	
		
			
				|  |  | -	    assertEquals("passwordEncoder", encoder.getName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    //get the BeanDefinition	    
 | 
	
		
			
				|  |  | -	    RootBeanDefinition encoderDef = (RootBeanDefinition) encoder.getValue();
 | 
	
		
			
				|  |  | -	    Assert.isAssignable(PasswordEncoder.class,encoderDef.getBeanClass());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -		assertEquals("incorrect bean class name", encoderDef.getBeanClassName(),Md5PasswordEncoder.class.getName());
 | 
	
		
			
				|  |  | +		RootBeanDefinition definition = (RootBeanDefinition) clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | +		assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the 2 inner beans
 | 
	
		
			
				|  |  | +		PropertyValue saltSourceBean = definition.getPropertyValues().getPropertyValue("saltSource");
 | 
	
		
			
				|  |  | +		assertEquals("saltSource", saltSourceBean.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the BeanDefinition
 | 
	
		
			
				|  |  | +		RootBeanDefinition saltsourceDef = (RootBeanDefinition) saltSourceBean.getValue();
 | 
	
		
			
				|  |  | +		Assert.isAssignable(SaltSource.class, saltsourceDef.getBeanClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		PropertyValue encoder = definition.getPropertyValues().getPropertyValue("passwordEncoder");
 | 
	
		
			
				|  |  | +		assertEquals("passwordEncoder", encoder.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the BeanDefinition
 | 
	
		
			
				|  |  | +		RootBeanDefinition encoderDef = (RootBeanDefinition) encoder.getValue();
 | 
	
		
			
				|  |  | +		Assert.isAssignable(PasswordEncoder.class, encoderDef.getBeanClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		assertEquals("incorrect bean class name", encoderDef.getBeanClassName(), Md5PasswordEncoder.class.getName());
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	public void testCollaboratorsAsBeanRef() {
 | 
	
		
			
				|  |  | -		ApplicationContext context = new ClassPathXmlApplicationContext("org/acegisecurity/config/authentication-beanRef-attributes.xml");
 | 
	
		
			
				|  |  | -		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory)context.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  | -		//		get the main bean definition, there should be only one
 | 
	
		
			
				|  |  | +		ApplicationContext context = new ClassPathXmlApplicationContext(
 | 
	
		
			
				|  |  | +				"org/acegisecurity/config/authentication-beanRef-attributes.xml");
 | 
	
		
			
				|  |  | +		ConfigurableListableBeanFactory clbf = (ConfigurableListableBeanFactory) context
 | 
	
		
			
				|  |  | +				.getAutowireCapableBeanFactory();
 | 
	
		
			
				|  |  | +		// get the main bean definition, there should be only one
 | 
	
		
			
				|  |  |  		String[] names = clbf.getBeanNamesForType(AuthenticationProvider.class);
 | 
	
		
			
				|  |  |  		assertEquals(1, names.length);
 | 
	
		
			
				|  |  | -		RootBeanDefinition definition = (RootBeanDefinition)clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | -	    assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    // get the referred collaborators
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    PropertyValue userDetailsBean = definition.getPropertyValues().getPropertyValue("userDetailsService");
 | 
	
		
			
				|  |  | -	    assertEquals("userDetailsService", userDetailsBean.getName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    PropertyValue saltSourceBean = definition.getPropertyValues().getPropertyValue("saltSource");
 | 
	
		
			
				|  |  | -	    assertEquals("saltSource", saltSourceBean.getName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    //get the BeanDefinition	    
 | 
	
		
			
				|  |  | -	    RuntimeBeanReference saltsourceDef = (RuntimeBeanReference) saltSourceBean.getValue();
 | 
	
		
			
				|  |  | -	    assertEquals("refToSaltSource",saltsourceDef.getBeanName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    PropertyValue encoder = definition.getPropertyValues().getPropertyValue("passwordEncoder");
 | 
	
		
			
				|  |  | -	    assertEquals("passwordEncoder", encoder.getName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    //get the BeanDefinition	    
 | 
	
		
			
				|  |  | -	    RuntimeBeanReference encoderDef = (RuntimeBeanReference) encoder.getValue();
 | 
	
		
			
				|  |  | -	    assertEquals("refToPasswordEncoder",encoderDef.getBeanName());
 | 
	
		
			
				|  |  | -	    
 | 
	
		
			
				|  |  | -	    DaoAuthenticationProvider provider = (DaoAuthenticationProvider)context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  | -	    assertTrue(provider.getPasswordEncoder() instanceof PasswordEncoder);
 | 
	
		
			
				|  |  | -	    assertEquals(Md5PasswordEncoder.class, provider.getPasswordEncoder().getClass() );
 | 
	
		
			
				|  |  | +		RootBeanDefinition definition = (RootBeanDefinition) clbf.getBeanDefinition(names[0]);
 | 
	
		
			
				|  |  | +		assertEquals(DaoAuthenticationProvider.class, definition.getBeanClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the referred collaborators
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		PropertyValue userDetailsBean = definition.getPropertyValues().getPropertyValue("userDetailsService");
 | 
	
		
			
				|  |  | +		assertEquals("userDetailsService", userDetailsBean.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		PropertyValue saltSourceBean = definition.getPropertyValues().getPropertyValue("saltSource");
 | 
	
		
			
				|  |  | +		assertEquals("saltSource", saltSourceBean.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the BeanDefinition
 | 
	
		
			
				|  |  | +		RuntimeBeanReference saltsourceDef = (RuntimeBeanReference) saltSourceBean.getValue();
 | 
	
		
			
				|  |  | +		assertEquals("refToSaltSource", saltsourceDef.getBeanName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		PropertyValue encoder = definition.getPropertyValues().getPropertyValue("passwordEncoder");
 | 
	
		
			
				|  |  | +		assertEquals("passwordEncoder", encoder.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		// get the BeanDefinition
 | 
	
		
			
				|  |  | +		RuntimeBeanReference encoderDef = (RuntimeBeanReference) encoder.getValue();
 | 
	
		
			
				|  |  | +		assertEquals("refToPasswordEncoder", encoderDef.getBeanName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		DaoAuthenticationProvider provider = (DaoAuthenticationProvider) context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  | +		assertTrue(provider.getPasswordEncoder() instanceof PasswordEncoder);
 | 
	
		
			
				|  |  | +		assertEquals(Md5PasswordEncoder.class, provider.getPasswordEncoder().getClass());
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	public void testAutodetectionOfUserDetailsService(){
 | 
	
		
			
				|  |  | -		ApplicationContext context = new ClassPathXmlApplicationContext("org/acegisecurity/config/authentication-defaults.xml");
 | 
	
		
			
				|  |  | -		 DaoAuthenticationProvider provider = (DaoAuthenticationProvider)context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  | -		 assertNotNull(provider.getUserDetailsService());
 | 
	
		
			
				|  |  | -		 assertNull(provider.getSaltSource());
 | 
	
		
			
				|  |  | -		 assertEquals(PlaintextPasswordEncoder.class, provider.getPasswordEncoder().getClass());
 | 
	
		
			
				|  |  | -		 
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	public void testAutodetectionOfUserDetailsService() {
 | 
	
		
			
				|  |  | +		ApplicationContext context = new ClassPathXmlApplicationContext(
 | 
	
		
			
				|  |  | +				"org/acegisecurity/config/authentication-defaults.xml");
 | 
	
		
			
				|  |  | +		DaoAuthenticationProvider provider = (DaoAuthenticationProvider) context.getBean("authenticationRepository");
 | 
	
		
			
				|  |  | +		assertNotNull(provider.getUserDetailsService());
 | 
	
		
			
				|  |  | +		assertNull(provider.getSaltSource());
 | 
	
		
			
				|  |  | +		assertEquals(PlaintextPasswordEncoder.class, provider.getPasswordEncoder().getClass());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 |