package org.springframework.flex.config.xml; import java.util.Iterator; import org.springframework.aop.Advisor; import org.springframework.aop.framework.Advised; import org.springframework.aop.support.AopUtils; import org.springframework.flex.config.AbstractFlexConfigurationTests; import org.springframework.flex.core.ExceptionTranslationAdvice; import org.springframework.flex.core.MessageInterceptionAdvice; import org.springframework.flex.security3.SecurityConfigurationPostProcessor; import org.springframework.flex.security3.SpringSecurityLoginCommand; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.util.ReflectionTestUtils; import flex.messaging.MessageBroker; import flex.messaging.security.LoginCommand; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import org.junit.Test; @ContextConfiguration("classpath:/org/springframework/flex/config/secured-message-broker.xml") public class MessageBrokerBeanDefinitionParserNoParentContextTests extends AbstractFlexConfigurationTests { @Test @SuppressWarnings("rawtypes") public void defaultSecured() { MessageBroker broker = (MessageBroker) applicationContext.getBean("defaultSecured2", MessageBroker.class); assertNotNull("MessageBroker bean not found for custom id", broker); LoginCommand loginCommand = broker.getLoginManager().getLoginCommand(); assertNotNull("LoginCommand not found", loginCommand); assertTrue("LoginCommand of wrong type", loginCommand instanceof SpringSecurityLoginCommand); assertSame("LoginCommand not a managed spring bean", loginCommand, applicationContext.getBean("defaultSecured2LoginCommand")); Iterator i = broker.getEndpoints().values().iterator(); while (i.hasNext()) { Object endpoint = i.next(); assertTrue("Endpoint should be proxied", AopUtils.isAopProxy(endpoint)); Advised advisedEndpoint = (Advised) endpoint; Advisor a = advisedEndpoint.getAdvisors()[0]; assertTrue("Exception translation advice was not applied", a.getAdvice() instanceof ExceptionTranslationAdvice); a = advisedEndpoint.getAdvisors()[1]; assertTrue("Message interception advice was not applied", a.getAdvice() instanceof MessageInterceptionAdvice); } SecurityConfigurationPostProcessor processor = applicationContext.getBean(SecurityConfigurationPostProcessor.class); assertNotNull("Security config processor not found", processor); assertSame(ReflectionTestUtils.getField(processor, "sessionAuthenticationStrategy"), ReflectionTestUtils.getField(loginCommand, "sessionStrategy")); } }