Project: spring-amqp
/*
 * Copyright 2010-2011 the original author or authors. 
 *  
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with 
 * the License. You may obtain a copy of the License at 
 *  
 * http://www.apache.org/licenses/LICENSE-2.0 
 *  
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on 
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the 
 * specific language governing permissions and limitations under the License. 
 */
 
package org.springframework.amqp.rabbit.config; 
 
import static org.junit.Assert.assertEquals; 
import static org.junit.Assert.fail; 
 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.junit.Test; 
import org.springframework.amqp.rabbit.connection.ConnectionFactory; 
import org.springframework.amqp.rabbit.core.RabbitAdmin; 
import org.springframework.amqp.rabbit.core.RabbitTemplate; 
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; 
import org.springframework.beans.factory.xml.XmlBeanFactory; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.util.StringUtils; 
 
/**
 *  
 * @author [email protected] 
 *  
 */
 
public final class AdminParserTests { 
 
 private static Log logger = LogFactory.getLog(AdminParserTests.class); 
 
 // Specifies if test case expects context to be valid or not: true - context expects to be valid. 
 private boolean validContext = true
 
 // Index of context file used by this test case. Context file name has such template: 
 // <class-name>-<contextIndex>-context.xml. 
 private int contextIndex; 
 
 private boolean expectedAutoStartup; 
 
 private String adminBeanName; 
 
 private boolean initialisedWithTemplate; 
 
 @Test 
 public void testInvalid() throws Exception { 
  contextIndex = 1
  validContext = false
  doTest(); 
 
 
 @Test 
 public void testValid() throws Exception { 
  contextIndex = 2
  validContext = true
  doTest(); 
 
 
 private void doTest() throws Exception { 
  // Create context 
  XmlBeanFactory beanFactory = loadContext(); 
  if (beanFactory == null) { 
   // Context was invalid 
   return
  
 
  // Validate values 
  RabbitAdmin admin; 
  if (StringUtils.hasText(adminBeanName)) { 
   admin = beanFactory.getBean(adminBeanName, RabbitAdmin.class); 
  else { 
   admin = beanFactory.getBean(RabbitAdmin.class); 
  
  assertEquals(expectedAutoStartup, admin.isAutoStartup()); 
  assertEquals(beanFactory.getBean(ConnectionFactory.class), admin.getRabbitTemplate().getConnectionFactory()); 
 
  if (initialisedWithTemplate) { 
   assertEquals(beanFactory.getBean(RabbitTemplate.class), admin.getRabbitTemplate()); 
  
 
 
 
 /**
  * Load application context. Fail if tests expects invalid spring-context, but spring-context is valid. 
  * @return 
  */
 
 private XmlBeanFactory loadContext() { 
  XmlBeanFactory beanFactory = null
  try { 
   // Resource file name template: <class-name>-<contextIndex>-context.xml 
   ClassPathResource resource = new ClassPathResource(getClass().getSimpleName() + "-" + contextIndex 
     "-context.xml", getClass()); 
   beanFactory = new XmlBeanFactory(resource); 
   if (!validContext) { 
    fail("Context " + resource + " suppose to fail"); 
   
  catch (BeanDefinitionParsingException e) { 
   if (validContext) { 
    // Context expected to be valid - throw an exception up 
    throw e; 
   
 
   logger.warn("Failure was expected", e); 
  
  return beanFactory; 
 
}