package tw.com.unit; import com.amazonaws.services.cloudformation.model.Parameter; import com.amazonaws.services.cloudformation.model.TemplateParameter; import com.amazonaws.services.ec2.model.AvailabilityZone; import org.junit.Before; import org.junit.Test; import tw.com.entity.ProjectAndEnv; import tw.com.exceptions.CannotFindVpcException; import tw.com.exceptions.InvalidStackParameterException; import tw.com.parameters.EnvVarParams; import tw.com.parameters.ProvidesZones; import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class TestEnvVarParams implements ProvidesZones { private EnvVarParams envVarParams; private ProjectAndEnv projAndEnv; @Before public void beforeEveryTestRuns() { envVarParams = new EnvVarParams(); projAndEnv = new ProjectAndEnv("cfnassist", "test"); } /////// // needs environmental variable set to testEnvVar set to testValue /////// @Test public void shouldPickUpVariableFromEnvironmentIfDeclaredInTemplate() throws CannotFindVpcException, IOException, InvalidStackParameterException { List<Parameter> results = new LinkedList<>(); List<TemplateParameter> declaredParameters = new LinkedList<>(); declaredParameters.add(new TemplateParameter(). withDescription("::ENV"). withParameterKey("testEnvVar")); envVarParams.addParameters(results , declaredParameters, projAndEnv, this); assertEquals(1, results.size()); Parameter firstResult = results.get(0); assertEquals("testValue", firstResult.getParameterValue()); assertEquals("testEnvVar", firstResult.getParameterKey()); } @Test public void shouldThrowIfEnvVariableIsNotFound() throws CannotFindVpcException, IOException { List<Parameter> results = new LinkedList<>(); List<TemplateParameter> declaredParameters = new LinkedList<>(); declaredParameters.add(new TemplateParameter(). withDescription("::ENV"). withParameterKey("envVarShouldNotExist")); try { envVarParams.addParameters(results , declaredParameters, projAndEnv, this); fail("should have thrown"); } catch(InvalidStackParameterException expected) { // expected } } @Override public Map<String, AvailabilityZone> getZones() { return null; } }