package tw.com.integration;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.Before;
import org.junit.Test;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.cloudformation.AmazonCloudFormationClient;
import com.amazonaws.services.ec2.AmazonEC2Client;
import com.amazonaws.services.elasticloadbalancing.AmazonElasticLoadBalancingClient;
import com.amazonaws.services.rds.AmazonRDSClient;
import tw.com.EnvironmentSetupForTests;
import tw.com.exceptions.CfnAssistException;
import tw.com.pictures.AmazonVPCFacade;
import tw.com.pictures.DiagramCreator;
import tw.com.pictures.dot.FileRecorder;
import tw.com.pictures.dot.Recorder;
import tw.com.providers.CloudClient;
import tw.com.providers.CloudFormationClient;
import tw.com.providers.LoadBalancerClient;
import tw.com.providers.RDSClient;
import tw.com.repository.CfnRepository;
import tw.com.repository.CloudRepository;
import tw.com.repository.ELBRepository;
import tw.com.repository.ResourceRepository;
import tw.com.repository.VpcRepository;
public class TestPictureGeneration {
private RDSClient rdsClient;
private CloudRepository cloudRepository;
private ELBRepository elbRepository;
@Before
public void beforeEachTestRuns() {
AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();
AmazonEC2Client ec2Client = EnvironmentSetupForTests.createEC2Client(credentialsProvider);
AmazonElasticLoadBalancingClient awsElbClient = EnvironmentSetupForTests.createELBClient(credentialsProvider);
AmazonCloudFormationClient cfnClient = EnvironmentSetupForTests.createCFNClient(credentialsProvider);
AmazonRDSClient awsRdsClient = EnvironmentSetupForTests.createRDSClient(credentialsProvider);
CloudClient cloudClient = new CloudClient(ec2Client);
LoadBalancerClient elbClient = new LoadBalancerClient(awsElbClient);
VpcRepository vpcRepository = new VpcRepository(cloudClient);
CloudFormationClient cloudFormationClient = new CloudFormationClient(cfnClient);
cloudRepository = new CloudRepository(cloudClient);
ResourceRepository cfnRepository = new CfnRepository(cloudFormationClient, cloudRepository, "CfnAssist");
elbRepository = new ELBRepository(elbClient, vpcRepository, cfnRepository);
rdsClient = new RDSClient(awsRdsClient);
}
@Test
public void shouldGenerateDiagramFromCurrentAccountVPCs() throws IOException, CfnAssistException {
Path folder = Paths.get(".").toAbsolutePath();
Recorder recorder = new FileRecorder(folder);
AmazonVPCFacade awsFacade = new AmazonVPCFacade(cloudRepository, elbRepository, rdsClient);
DiagramCreator createsDiagrams = new DiagramCreator(awsFacade);
createsDiagrams.createDiagrams(recorder);
}
}