package tw.com.unit; import com.amazonaws.services.cloudformation.model.Stack; import org.easymock.EasyMock; import org.easymock.EasyMockRunner; import org.easymock.EasyMockSupport; import org.junit.Test; import org.junit.runner.RunWith; import tw.com.EnvironmentSetupForTests; import tw.com.StackCache; import tw.com.entity.StackEntry; import tw.com.providers.CloudFormationClient; import java.util.LinkedList; import java.util.List; import java.util.Set; import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.assertEquals; import static tw.com.EnvironmentSetupForTests.createCfnStackTAG; @RunWith(EasyMockRunner.class) public class TestStackCache extends EasyMockSupport { @Test public void shouldGetStackEntry() { CloudFormationClient formationClient = createMock(CloudFormationClient.class); List<Stack> stacks = new LinkedList<>(); stacks.add(new Stack().withTags( createCfnStackTAG("CFN_ASSIST_PROJECT",EnvironmentSetupForTests.PROJECT), createCfnStackTAG("CFN_ASSIST_ENV", EnvironmentSetupForTests.ENV), createCfnStackTAG("CFN_ASSIST_BUILD_NUMBER", "42"), createCfnStackTAG("CFN_ASSIST_DELTA", "8"), createCfnStackTAG("CFN_ASSIST_UPDATE", "9,10,11"))); EasyMock.expect(formationClient.describeAllStacks()).andReturn(stacks); StackCache stackCache = new StackCache(formationClient, EnvironmentSetupForTests.PROJECT); replayAll(); List<StackEntry> result = stackCache.getEntries(); verifyAll(); assertEquals(1, result.size()); StackEntry stack = result.get(0); assertEquals(EnvironmentSetupForTests.PROJECT, stack.getProject()); assertEquals(EnvironmentSetupForTests.ENV, stack.getEnvTag().getEnv()); assertEquals(new Integer(42), stack.getBuildNumber()); assertEquals(new Integer(8), stack.getIndex()); Set<Integer> updateIndexs = stack.getUpdateIndex(); assertEquals(3,updateIndexs.size()); assertTrue(updateIndexs.contains(9)); assertTrue(updateIndexs.contains(10)); assertTrue(updateIndexs.contains(11)); } }