github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/test/terraform_aws_ssm_example_test.go (about) 1 package test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/gruntwork-io/terratest/modules/aws" 8 "github.com/gruntwork-io/terratest/modules/terraform" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestTerraformAwsSsmExample(t *testing.T) { 13 t.Parallel() 14 region := aws.GetRandomStableRegion(t, nil, nil) 15 16 // Some AWS regions are missing certain instance types, so pick an available type based on the region we picked 17 instanceType := aws.GetRecommendedInstanceType(t, region, []string{"t2.micro", "t3.micro"}) 18 19 terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{ 20 TerraformDir: "../examples/terraform-aws-ssm-example", 21 Vars: map[string]interface{}{ 22 "region": region, 23 "instance_type": instanceType, 24 }, 25 }) 26 defer terraform.Destroy(t, terraformOptions) 27 28 terraform.InitAndApply(t, terraformOptions) 29 30 instanceID := terraform.Output(t, terraformOptions, "instance_id") 31 timeout := 3 * time.Minute 32 33 aws.WaitForSsmInstance(t, region, instanceID, timeout) 34 35 result := aws.CheckSsmCommand(t, region, instanceID, "echo Hello, World", timeout) 36 require.Equal(t, result.Stdout, "Hello, World\n") 37 require.Equal(t, result.Stderr, "") 38 require.Equal(t, int64(0), result.ExitCode) 39 40 result, err := aws.CheckSsmCommandE(t, region, instanceID, "cat /wrong/file", timeout) 41 require.Error(t, err) 42 require.Equal(t, "Failed", err.Error()) 43 require.Equal(t, "cat: /wrong/file: No such file or directory\nfailed to run commands: exit status 1", result.Stderr) 44 require.Equal(t, "", result.Stdout) 45 require.Equal(t, int64(1), result.ExitCode) 46 }