package ftp;
import ftp.provisioner.FtpServerProvisionerClient;
import ftp.provisioner.FtpServerProvisionerClientAutoConfiguration;
import org.junit.Before;
import org.junit.Test;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.amqp.rabbit.connection.Connection;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.MessageChannel;
import java.util.concurrent.atomic.AtomicReference;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class FtpServerProvisionerClientAutoConfigurationTest {
private static AtomicReference<RabbitTemplate> RT_AR = new AtomicReference<>();
private ApplicationContext applicationContext;
@Before
public void setUp() throws Exception {
RT_AR.set(buildRabbitTemplate());
this.applicationContext = SpringApplication.run(
FtpServerProvisionerClientAutoConfigurationConfig.class);
}
private RabbitTemplate buildRabbitTemplate() {
return mock(RabbitTemplate.class);
}
@Test
public void contextLoads() throws Exception {
assertNotNull(this.applicationContext.getBean("provision-ftp", MessageChannel.class));
assertNotNull(this.applicationContext.getBean(FtpServerProvisionerClientAutoConfiguration.class));
assertNotNull(this.applicationContext.getBean(FtpServerProvisionerClient.class));
}
@Configuration
@EnableAutoConfiguration
public static class FtpServerProvisionerClientAutoConfigurationConfig {
@Bean
ConnectionFactory connectionFactory() {
ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
when(connectionFactory.createConnection())
.thenReturn(mock(Connection.class));
return connectionFactory;
}
@Bean
AmqpAdmin amqpAdmin() {
return mock(AmqpAdmin.class);
}
@Bean
RabbitTemplate rabbitTemplate() {
return RT_AR.get();
}
}
}