|
1 | 1 | package test |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "strings" |
4 | 5 | "testing" |
5 | 6 |
|
6 | 7 | "github.com/gruntwork-io/terratest/modules/terraform" |
| 8 | + "github.com/stretchr/testify/assert" |
7 | 9 | ) |
8 | 10 |
|
9 | | -func validate(t *testing.T, terraformOptions *terraform.Options) { |
| 11 | +const ( |
| 12 | + namespace_value = "mynamespace" |
| 13 | + account_value = "myaccount" |
| 14 | + env_value = "myenv" |
| 15 | + name_value = "myname" |
| 16 | + delimiter = "-" |
| 17 | + module_dir = "../" |
| 18 | +) |
| 19 | + |
| 20 | +func TestAllVarsInId(t *testing.T) { |
| 21 | + all_vars_expected := []string{namespace_value, account_value, env_value, name_value} |
| 22 | + all_vars_expected_id := strings.Join(all_vars_expected, delimiter) |
| 23 | + |
| 24 | + terraformOptions := &terraform.Options{ |
| 25 | + TerraformDir: module_dir, |
| 26 | + Vars: map[string]interface{}{ |
| 27 | + "namespace": namespace_value, |
| 28 | + "account": account_value, |
| 29 | + "env": env_value, |
| 30 | + "name": name_value, |
| 31 | + }, |
| 32 | + } |
10 | 33 | defer terraform.Destroy(t, terraformOptions) |
11 | 34 | terraform.InitAndApply(t, terraformOptions) |
| 35 | + |
| 36 | + // Validate `id` only made of optionally passed vars, env-name |
| 37 | + output_id := terraform.Output(t, terraformOptions, "id") |
| 38 | + assert.Equal(t, all_vars_expected_id, output_id) |
| 39 | + |
| 40 | + // Validate `tags` only made of optionally passed vars, env-name |
| 41 | + output_tags := terraform.OutputListOfObjects(t, terraformOptions, "tags") |
| 42 | + assert.Equal(t, len(all_vars_expected), len(output_tags)) |
| 43 | + |
| 44 | + // Validate `tags_aws` made of all passed, namespace-account-env-name |
| 45 | + output_tags_aws := terraform.OutputMap(t, terraformOptions, "tags_aws") |
| 46 | + assert.Equal(t, len(all_vars_expected), len(output_tags_aws)) |
12 | 47 | } |
13 | 48 |
|
14 | | -func TestBasic(t *testing.T) { |
15 | | - t.Parallel() |
| 49 | +func TestOptionalVarsInId(t *testing.T) { |
| 50 | + opt_vars_expected := []string{env_value, name_value} |
| 51 | + opt_vars_expected_id := strings.Join(opt_vars_expected, delimiter) |
16 | 52 |
|
17 | 53 | terraformOptions := &terraform.Options{ |
18 | | - TerraformDir: "../examples/basic", |
| 54 | + TerraformDir: module_dir, |
| 55 | + Vars: map[string]interface{}{ |
| 56 | + "env": env_value, |
| 57 | + "name": name_value, |
| 58 | + }, |
19 | 59 | } |
| 60 | + defer terraform.Destroy(t, terraformOptions) |
| 61 | + terraform.InitAndApply(t, terraformOptions) |
| 62 | + |
| 63 | + // Validate `id` only made of optionally passed vars, env-name |
| 64 | + output_id := terraform.Output(t, terraformOptions, "id") |
| 65 | + assert.Equal(t, opt_vars_expected_id, output_id) |
20 | 66 |
|
21 | | - validate(t, terraformOptions) |
| 67 | + // Validate `tags` only made of optionally passed vars, env-name |
| 68 | + output_tags := terraform.OutputListOfObjects(t, terraformOptions, "tags") |
| 69 | + assert.Equal(t, len(opt_vars_expected), len(output_tags)) |
| 70 | + |
| 71 | + // Validate `tags_aws` only made of optionally passed vars, env-name |
| 72 | + output_tags_aws := terraform.OutputMap(t, terraformOptions, "tags_aws") |
| 73 | + assert.Equal(t, len(opt_vars_expected), len(output_tags_aws)) |
22 | 74 | } |
23 | 75 |
|
24 | | -func TestFormattedTags(t *testing.T) { |
25 | | - t.Parallel() |
| 76 | +func TestOptionalVarsInIdReordered(t *testing.T) { |
| 77 | + reordered_opt_vars_expected := []string{name_value, env_value} |
| 78 | + reordered_opt_vars_expected_id := strings.Join(reordered_opt_vars_expected, delimiter) |
| 79 | + reordered := []string{"name", "env"} |
26 | 80 |
|
27 | 81 | terraformOptions := &terraform.Options{ |
28 | | - TerraformDir: "../examples/formatted_tags", |
| 82 | + TerraformDir: module_dir, |
| 83 | + Vars: map[string]interface{}{ |
| 84 | + "env": env_value, |
| 85 | + "name": name_value, |
| 86 | + "id_order": reordered, |
| 87 | + }, |
29 | 88 | } |
| 89 | + defer terraform.Destroy(t, terraformOptions) |
| 90 | + terraform.InitAndApply(t, terraformOptions) |
30 | 91 |
|
31 | | - validate(t, terraformOptions) |
| 92 | + // Validate `id` only made of optionally passed vars, env-name |
| 93 | + output_id_reordered := terraform.Output(t, terraformOptions, "id") |
| 94 | + assert.Equal(t, reordered_opt_vars_expected_id, output_id_reordered) |
32 | 95 | } |
0 commit comments