package tw.com.unit;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import org.easymock.EasyMock;
import org.easymock.EasyMockRunner;
import org.easymock.EasyMockSupport;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import tw.com.VpcTestBuilder;
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;
@RunWith(EasyMockRunner.class)
public class TestDiagramCreator extends EasyMockSupport {
private AmazonVPCFacade awsFacade;
private Recorder recorder;
private VpcTestBuilder vpcTestBuilder;
@Before
public void beforeEachTestRuns() throws CfnAssistException {
awsFacade = createStrictMock(AmazonVPCFacade.class);
recorder = createMock(Recorder.class);
vpcTestBuilder = new VpcTestBuilder("vpcId");
vpcTestBuilder.setGetVpcsExpectations(awsFacade);
vpcTestBuilder.setFacadeVisitExpections(awsFacade);
}
@Test
public void invokeDiagramCreationWithMockedRecorder() throws IOException, CfnAssistException {
recorder.beginFor(vpcTestBuilder.getVpc(), "network_diagram");
EasyMock.expectLastCall();
recorder.writeline(EasyMock.anyString());
EasyMock.expectLastCall().atLeastOnce();
recorder.write(EasyMock.anyString());
EasyMock.expectLastCall().atLeastOnce();
recorder.end();
EasyMock.expectLastCall();
recorder.beginFor(vpcTestBuilder.getVpc(), "security_diagram");
EasyMock.expectLastCall();
recorder.end();
EasyMock.expectLastCall();
DiagramCreator creator = new DiagramCreator(awsFacade);
replayAll();
creator.createDiagrams(recorder);
verifyAll();
}
@Test
public void invokeDiagramCreationWithRealRecorder() throws IOException, CfnAssistException {
Recorder realRecorder = new FileRecorder(Paths.get("."));
DiagramCreator creator = new DiagramCreator(awsFacade);
replayAll();
creator.createDiagrams(realRecorder);
verifyAll();
assert(new File("./network_diagramvpcId.dot").exists());
assert(new File("./security_diagramvpcId.dot").exists());
}
}