Skip to content

Commit dcef961

Browse files
authored
[refactor] use testutil.Test (#215)
Apply the pattern established with #206. This refactor is a small step toward making TDD-driven workflows more management for modules. ### Test Plan * CI ### References * #206
1 parent 6da13d2 commit dcef961

File tree

39 files changed

+636
-435
lines changed

39 files changed

+636
-435
lines changed

aws-acm-cert/module_test.go

+41-36
Original file line numberDiff line numberDiff line change
@@ -15,44 +15,49 @@ func TestAWSACMCertInit(t *testing.T) {
1515
terraform.Init(t, options)
1616
}
1717

18-
func TestAWSACMCertInitAndApply(t *testing.T) {
18+
func TestAWSACMCertDefaults(t *testing.T) {
1919
t.Parallel()
20-
project := testutil.UniqueId()
21-
env := testutil.UniqueId()
22-
service := testutil.UniqueId()
23-
owner := testutil.UniqueId()
2420

25-
certDomainName := fmt.Sprintf(
26-
"%s.%s",
27-
testutil.UniqueId(),
28-
testutil.EnvVar(testutil.EnvRoute53ZoneName))
29-
30-
alternativeDomainName := fmt.Sprintf(
31-
"%s.%s",
32-
testutil.UniqueId(),
33-
testutil.EnvVar(testutil.EnvRoute53ZoneName))
34-
35-
route53ZoneID := testutil.EnvVar(testutil.EnvRoute53ZoneID)
36-
37-
alternativeNames := map[string]string{
38-
alternativeDomainName: route53ZoneID,
39-
}
40-
41-
options := testutil.Options(
42-
testutil.DefaultRegion,
43-
map[string]interface{}{
44-
"project": project,
45-
"env": env,
46-
"service": service,
47-
"owner": owner,
48-
49-
"cert_domain_name": certDomainName,
50-
"aws_route53_zone_id": route53ZoneID,
51-
"validation_record_ttl": 5,
52-
"cert_subject_alternative_names": alternativeNames,
21+
test := testutil.Test{
22+
Options: func(t *testing.T) *terraform.Options {
23+
project := testutil.UniqueId()
24+
env := testutil.UniqueId()
25+
service := testutil.UniqueId()
26+
owner := testutil.UniqueId()
27+
28+
certDomainName := fmt.Sprintf(
29+
"%s.%s",
30+
testutil.UniqueId(),
31+
testutil.EnvVar(testutil.EnvRoute53ZoneName))
32+
33+
alternativeDomainName := fmt.Sprintf(
34+
"%s.%s",
35+
testutil.UniqueId(),
36+
testutil.EnvVar(testutil.EnvRoute53ZoneName))
37+
38+
route53ZoneID := testutil.EnvVar(testutil.EnvRoute53ZoneID)
39+
40+
alternativeNames := map[string]string{
41+
alternativeDomainName: route53ZoneID,
42+
}
43+
44+
return testutil.Options(
45+
testutil.DefaultRegion,
46+
map[string]interface{}{
47+
"project": project,
48+
"env": env,
49+
"service": service,
50+
"owner": owner,
51+
52+
"cert_domain_name": certDomainName,
53+
"aws_route53_zone_id": route53ZoneID,
54+
"validation_record_ttl": 5,
55+
"cert_subject_alternative_names": alternativeNames,
56+
},
57+
)
5358
},
54-
)
59+
Validate: func(t *testing.T, options *terraform.Options) {},
60+
}
5561

56-
defer terraform.Destroy(t, options)
57-
testutil.Run(t, options)
62+
test.Run(t)
5863
}

aws-aurora-mysql/module_test.go

+40-39
Original file line numberDiff line numberDiff line change
@@ -7,45 +7,46 @@ import (
77
"github.com/gruntwork-io/terratest/modules/terraform"
88
)
99

10-
func TestAWSAuroraMysqlInit(t *testing.T) {
11-
options := &terraform.Options{
12-
TerraformDir: ".",
13-
}
14-
terraform.Init(t, options)
15-
}
16-
17-
func TestAWSAuroraMysqlInitAndApply(t *testing.T) {
10+
func TestAWSAuroraMysqlDefaults(t *testing.T) {
1811
t.Parallel()
19-
project := testutil.UniqueId()
20-
env := testutil.UniqueId()
21-
service := testutil.UniqueId()
22-
owner := testutil.UniqueId()
23-
24-
vpc := testutil.EnvVar(testutil.EnvVPCID)
25-
databaseSubnetGroup := testutil.EnvVar(testutil.EnvDatabaseSubnetGroup)
26-
ingressCidrBlocks := testutil.EnvVar(testutil.EnvVPCCIDRBlock)
27-
28-
databasePassword := testutil.RandomString(testutil.AlphaNum, 8)
29-
databaseUsername := testutil.RandomString(testutil.Alpha, 8)
30-
databaseName := testutil.UniqueId()
31-
32-
options := testutil.Options(
33-
testutil.DefaultRegion,
34-
map[string]interface{}{
35-
"project": project,
36-
"env": env,
37-
"service": service,
38-
"owner": owner,
39-
40-
"vpc_id": vpc,
41-
"database_subnet_group": databaseSubnetGroup,
42-
"database_password": databasePassword,
43-
"database_username": databaseUsername,
44-
"ingress_cidr_blocks": []string{ingressCidrBlocks},
45-
"database_name": databaseName,
46-
"skip_final_snapshot": true,
12+
13+
test := testutil.Test{
14+
15+
Options: func(t *testing.T) *terraform.Options {
16+
project := testutil.UniqueId()
17+
env := testutil.UniqueId()
18+
service := testutil.UniqueId()
19+
owner := testutil.UniqueId()
20+
21+
vpc := testutil.EnvVar(testutil.EnvVPCID)
22+
databaseSubnetGroup := testutil.EnvVar(testutil.EnvDatabaseSubnetGroup)
23+
ingressCidrBlocks := testutil.EnvVar(testutil.EnvVPCCIDRBlock)
24+
25+
databasePassword := testutil.RandomString(testutil.AlphaNum, 8)
26+
databaseUsername := testutil.RandomString(testutil.Alpha, 8)
27+
databaseName := testutil.UniqueId()
28+
29+
return testutil.Options(
30+
testutil.DefaultRegion,
31+
map[string]interface{}{
32+
"project": project,
33+
"env": env,
34+
"service": service,
35+
"owner": owner,
36+
37+
"vpc_id": vpc,
38+
"database_subnet_group": databaseSubnetGroup,
39+
"database_password": databasePassword,
40+
"database_username": databaseUsername,
41+
"ingress_cidr_blocks": []string{ingressCidrBlocks},
42+
"database_name": databaseName,
43+
"skip_final_snapshot": true,
44+
},
45+
)
46+
4747
},
48-
)
49-
defer terraform.Destroy(t, options)
50-
testutil.Run(t, options)
48+
Validate: func(t *testing.T, options *terraform.Options) {},
49+
}
50+
51+
test.Run(t)
5152
}

aws-aurora-postgres/module_test.go

+42-36
Original file line numberDiff line numberDiff line change
@@ -14,45 +14,51 @@ func TestAWSAuroraPostgresInit(t *testing.T) {
1414
terraform.Init(t, options)
1515
}
1616

17-
func TestAWSAuroraPostgresInitAndApply(t *testing.T) {
17+
func TestAWSAuroraPostgresDefaults(t *testing.T) {
1818
t.Parallel()
19-
versions := []string{"9.6", "10"}
19+
versions := []string{"9.6", "10.12", "11.7"}
2020

2121
for _, version := range versions {
22-
func() {
23-
project := testutil.UniqueId()
24-
env := testutil.UniqueId()
25-
service := testutil.UniqueId()
26-
owner := testutil.UniqueId()
27-
28-
vpc := testutil.EnvVar(testutil.EnvVPCID)
29-
databaseSubnetGroup := testutil.EnvVar(testutil.EnvDatabaseSubnetGroup)
30-
ingressCidrBlocks := testutil.EnvVar(testutil.EnvVPCCIDRBlock)
31-
32-
databasePassword := testutil.RandomString(testutil.AlphaNum, 8)
33-
databaseUsername := testutil.RandomString(testutil.Alpha, 8)
34-
databaseName := testutil.UniqueId()
35-
36-
options := testutil.Options(
37-
testutil.DefaultRegion,
38-
map[string]interface{}{
39-
"project": project,
40-
"env": env,
41-
"service": service,
42-
"owner": owner,
43-
44-
"vpc_id": vpc,
45-
"database_subnet_group": databaseSubnetGroup,
46-
"database_password": databasePassword,
47-
"database_username": databaseUsername,
48-
"ingress_cidr_blocks": []string{ingressCidrBlocks},
49-
"database_name": databaseName,
50-
"skip_final_snapshot": true,
51-
"engine_version": version,
22+
t.Run(version, func(t *testing.T) {
23+
test := testutil.Test{
24+
Options: func(t *testing.T) *terraform.Options {
25+
project := testutil.UniqueId()
26+
env := testutil.UniqueId()
27+
service := testutil.UniqueId()
28+
owner := testutil.UniqueId()
29+
30+
vpc := testutil.EnvVar(testutil.EnvVPCID)
31+
databaseSubnetGroup := testutil.EnvVar(testutil.EnvDatabaseSubnetGroup)
32+
ingressCidrBlocks := testutil.EnvVar(testutil.EnvVPCCIDRBlock)
33+
34+
databasePassword := testutil.RandomString(testutil.AlphaNum, 8)
35+
databaseUsername := testutil.RandomString(testutil.Alpha, 8)
36+
databaseName := testutil.UniqueId()
37+
38+
return testutil.Options(
39+
testutil.DefaultRegion,
40+
map[string]interface{}{
41+
"project": project,
42+
"env": env,
43+
"service": service,
44+
"owner": owner,
45+
46+
"vpc_id": vpc,
47+
"database_subnet_group": databaseSubnetGroup,
48+
"database_password": databasePassword,
49+
"database_username": databaseUsername,
50+
"ingress_cidr_blocks": []string{ingressCidrBlocks},
51+
"database_name": databaseName,
52+
"skip_final_snapshot": true,
53+
"engine_version": version,
54+
},
55+
)
56+
5257
},
53-
)
54-
defer terraform.Destroy(t, options)
55-
testutil.Run(t, options)
56-
}()
58+
Validate: func(t *testing.T, options *terraform.Options) {},
59+
}
60+
61+
test.Run(t)
62+
})
5763
}
5864
}

aws-aurora/module_test.go

+29-23
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,38 @@ import (
55

66
"github.com/chanzuckerberg/cztack/testutil"
77
"github.com/gruntwork-io/terratest/modules/terraform"
8-
"github.com/stretchr/testify/assert"
98
)
109

1110
func TestAWSAurora(t *testing.T) {
12-
a := assert.New(t)
13-
options := testutil.Options(
14-
testutil.DefaultRegion,
15-
map[string]interface{}{
16-
"database_name": testutil.UniqueId(),
17-
"engine_version": "10.7",
18-
"params_engine_version": "10",
19-
"port": "5432",
20-
"engine": "aurora-postgresql",
21-
"vpc_id": "vpc-12345",
22-
23-
"project": testutil.UniqueId(),
24-
"service": testutil.UniqueId(),
25-
"env": testutil.UniqueId(),
26-
"owner": testutil.UniqueId(),
27-
"database_username": testutil.UniqueId(),
28-
"database_password": testutil.UniqueId(),
29-
"database_subnet_group": testutil.UniqueId(),
11+
12+
test := testutil.Test{
13+
Options: func(t *testing.T) *terraform.Options {
14+
return testutil.Options(
15+
testutil.DefaultRegion,
16+
map[string]interface{}{
17+
"database_name": testutil.UniqueId(),
18+
"engine_version": "10.7",
19+
"params_engine_version": "10",
20+
"port": "5432",
21+
"engine": "aurora-postgresql",
22+
"vpc_id": "vpc-12345",
23+
24+
"project": testutil.UniqueId(),
25+
"service": testutil.UniqueId(),
26+
"env": testutil.UniqueId(),
27+
"owner": testutil.UniqueId(),
28+
"database_username": testutil.UniqueId(),
29+
"database_password": testutil.UniqueId(),
30+
"database_subnet_group": testutil.UniqueId(),
31+
},
32+
)
33+
3034
},
31-
)
3235

33-
rc, e := terraform.InitAndPlanWithExitCodeE(t, options)
34-
a.NoError(e)
35-
a.Equal(2, rc) // 2 means planned changes, no errors
36+
Mode: testutil.Plan,
37+
38+
Validate: func(t *testing.T, options *terraform.Options) {},
39+
}
40+
test.Run(t)
41+
3642
}

aws-cloudwatch-log-group/module_test.go

+17-11
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,22 @@ import (
99
)
1010

1111
func TestAWSCloudWatchLogGroup(t *testing.T) {
12-
options := testutil.Options(
13-
testutil.DefaultRegion,
14-
map[string]interface{}{
15-
"project": random.UniqueId(),
16-
"env": random.UniqueId(),
17-
"service": random.UniqueId(),
18-
"owner": random.UniqueId(),
19-
"log_group_name": random.UniqueId(),
12+
13+
test := testutil.Test{
14+
Options: func(t *testing.T) *terraform.Options {
15+
return testutil.Options(
16+
testutil.DefaultRegion,
17+
map[string]interface{}{
18+
"project": random.UniqueId(),
19+
"env": random.UniqueId(),
20+
"service": random.UniqueId(),
21+
"owner": random.UniqueId(),
22+
"log_group_name": random.UniqueId(),
23+
},
24+
)
2025
},
21-
)
22-
defer terraform.Destroy(t, options)
23-
testutil.Run(t, options)
26+
Validate: func(t *testing.T, options *terraform.Options) {},
27+
}
28+
29+
test.Run(t)
2430
}

aws-default-vpc-security/module_test.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@ package test
33
import (
44
"testing"
55

6+
"github.com/chanzuckerberg/cztack/testutil"
67
"github.com/gruntwork-io/terratest/modules/terraform"
78
)
89

910
func TestAWSDefaultVPCSecurity(t *testing.T) {
10-
options := &terraform.Options{
11-
TerraformDir: ".",
11+
test := testutil.Test{
12+
Options: func(t *testing.T) *terraform.Options {
13+
return testutil.Options(
14+
testutil.DefaultRegion,
15+
map[string]interface{}{},
16+
)
17+
},
18+
19+
Mode: testutil.Plan,
20+
21+
Validate: func(t *testing.T, options *terraform.Options) {},
1222
}
13-
terraform.Init(t, options)
23+
test.Run(t)
1424
}

0 commit comments

Comments
 (0)