Skip to content

Commit 52f1ee2

Browse files
authored
Update Test Generation: Apply recent example generator changes to sample generator (GoogleCloudPlatform#16518)
1 parent c3d9408 commit 52f1ee2

File tree

3 files changed

+111
-36
lines changed

3 files changed

+111
-36
lines changed

mmv1/api/resource.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1826,17 +1826,7 @@ func (r Resource) IamImportQualifiersForTest() string {
18261826
}
18271827

18281828
func (r Resource) IamImportQualifiersForTestSample() string {
1829-
var importFormat string
1830-
if len(r.IamPolicy.ImportFormat) > 0 {
1831-
importFormat = r.IamPolicy.ImportFormat[0]
1832-
} else {
1833-
importFormat = r.IamPolicy.SelfLink
1834-
if importFormat == "" {
1835-
importFormat = r.SelfLinkUrl()
1836-
}
1837-
}
1838-
1839-
params := r.ExtractIdentifiers(importFormat)
1829+
params := r.IamImportParams()
18401830
var importQualifiers []string
18411831
for i, param := range params {
18421832
if param == "project" {

mmv1/templates/terraform/samples/base_configs/iam_test_file.go.tmpl

Lines changed: 90 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@ import (
1111
"testing"
1212

1313
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
14+
"github.com/hashicorp/terraform-plugin-testing/terraform"
1415

1516
"{{ $.ImportPath }}/acctest"
1617
"{{ $.ImportPath }}/envvar"
1718
"{{ $.ImportPath }}/tpgresource"
1819
)
1920

2021
var (
21-
_ = fmt.Sprintf
22-
_ = strings.Trim
23-
_ = envvar.TestEnvVar
24-
_ = tpgresource.SetLabels
22+
_ = fmt.Sprintf
23+
_ = strings.Trim
24+
_ = envvar.TestEnvVar
25+
_ = tpgresource.SetLabels
2526
)
2627

2728

@@ -53,7 +54,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {
5354
{{- if not $.IamPolicy.ExcludeImportTest }}
5455
{
5556
ResourceName: "{{ $.IamTerraformName }}_binding.foo",
56-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
57+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo"),
5758
ImportState: true,
5859
ImportStateVerify: true,
5960
},
@@ -65,7 +66,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {
6566
{{- if not $.IamPolicy.ExcludeImportTest }}
6667
{
6768
ResourceName: "{{ $.IamTerraformName }}_binding.foo",
68-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
69+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo"),
6970
ImportState: true,
7071
ImportStateVerify: true,
7172
},
@@ -100,7 +101,7 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated(t *testing.T) {
100101
{{- if not $.IamPolicy.ExcludeImportTest }}
101102
{
102103
ResourceName: "{{ $.IamTerraformName }}_member.foo",
103-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
104+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMMemberStateID("{{ $.IamTerraformName }}_member.foo"),
104105
ImportState: true,
105106
ImportStateVerify: true,
106107
},
@@ -141,7 +142,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
141142
{{- if not $.IamPolicy.ExcludeImportTest }}
142143
{
143144
ResourceName: "{{ $.IamTerraformName }}_policy.foo",
144-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
145+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMPolicyStateID("{{ $.IamTerraformName }}_policy.foo"),
145146
ImportState: true,
146147
ImportStateVerify: true,
147148
},
@@ -152,7 +153,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
152153
{{- if not $.IamPolicy.ExcludeImportTest }}
153154
{
154155
ResourceName: "{{ $.IamTerraformName }}_policy.foo",
155-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
156+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMPolicyStateID("{{ $.IamTerraformName }}_policy.foo"),
156157
ImportState: true,
157158
ImportStateVerify: true,
158159
},
@@ -186,7 +187,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withCondition(t *testing.T)
186187
{{- if not $.IamPolicy.ExcludeImportTest }}
187188
{
188189
ResourceName: "{{ $.IamTerraformName }}_binding.foo",
189-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title"]),
190+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo"),
190191
ImportState: true,
191192
ImportStateVerify: true,
192193
},
@@ -222,19 +223,19 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withAndWithoutCondition(t *t
222223
{{- if not $.IamPolicy.ExcludeImportTest }}
223224
{
224225
ResourceName: "{{ $.IamTerraformName }}_binding.foo",
225-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
226+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo"),
226227
ImportState: true,
227228
ImportStateVerify: true,
228229
},
229230
{
230231
ResourceName: "{{ $.IamTerraformName }}_binding.foo2",
231-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title"]),
232+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo2"),
232233
ImportState: true,
233234
ImportStateVerify: true,
234235
},
235236
{
236237
ResourceName: "{{ $.IamTerraformName }}_binding.foo3",
237-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title_no_desc"]),
238+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMBindingStateID("{{ $.IamTerraformName }}_binding.foo3"),
238239
ImportState: true,
239240
ImportStateVerify: true,
240241
},
@@ -269,7 +270,7 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated_withCondition(t *testing.T) {
269270
{{- if not $.IamPolicy.ExcludeImportTest }}
270271
{
271272
ResourceName: "{{ $.IamTerraformName }}_member.foo",
272-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title"]),
273+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMMemberStateID("{{ $.IamTerraformName }}_member.foo"),
273274
ImportState: true,
274275
ImportStateVerify: true,
275276
},
@@ -305,19 +306,19 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated_withAndWithoutCondition(t *te
305306
{{- if not $.IamPolicy.ExcludeImportTest }}
306307
{
307308
ResourceName: "{{ $.IamTerraformName }}_member.foo",
308-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
309+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMMemberStateID("{{ $.IamTerraformName }}_member.foo"),
309310
ImportState: true,
310311
ImportStateVerify: true,
311312
},
312313
{
313314
ResourceName: "{{ $.IamTerraformName }}_member.foo2",
314-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title"]),
315+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMMemberStateID("{{ $.IamTerraformName }}_member.foo2"),
315316
ImportState: true,
316317
ImportStateVerify: true,
317318
},
318319
{
319320
ResourceName: "{{ $.IamTerraformName }}_member.foo3",
320-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}, context["condition_title_no_desc"]),
321+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMMemberStateID("{{ $.IamTerraformName }}_member.foo3"),
321322
ImportState: true,
322323
ImportStateVerify: true,
323324
},
@@ -372,7 +373,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated_withCondition(t *testing.T) {
372373
{{- if not $.IamPolicy.ExcludeImportTest }}
373374
{
374375
ResourceName: "{{ $.IamTerraformName }}_policy.foo",
375-
ImportStateId: fmt.Sprintf("{{ $.IamImportFormat }}", {{ if ne $.IamImportQualifiersForTestSample "" }}{{ $.IamImportQualifiersForTestSample }}, {{ end }}{{ $sample.PrimaryResourceName }}),
376+
ImportStateIdFunc: generate{{ $.ResourceName }}IAMPolicyStateID("{{ $.IamTerraformName }}_policy.foo"),
376377
ImportState: true,
377378
ImportStateVerify: true,
378379
},
@@ -649,4 +650,74 @@ resource "{{ $.IamTerraformName }}_policy" "foo" {
649650
}
650651
`, context)
651652
}
652-
{{- end }}{{/* if $.IamPolicy.IamConditionsRequestType */}}
653+
{{- end }}{{/* if $.IamPolicy.IamConditionsRequestType */}}
654+
655+
{{- if $.IamPolicy.CustomImportStateIDFuncs }}
656+
{{ customTemplate $ $.IamPolicy.CustomImportStateIDFuncs true }}
657+
{{- else }}
658+
func generate{{ $.ResourceName }}IAMPolicyStateID(iamResourceAddr string) func (*terraform.State) (string, error) {
659+
return func (state *terraform.State) (string, error) {
660+
var rawState map[string]string
661+
for _, m := range state.Modules {
662+
if len(m.Resources) > 0 {
663+
if v, ok := m.Resources[iamResourceAddr]; ok {
664+
rawState = v.Primary.Attributes
665+
}
666+
}
667+
}
668+
fmt.Printf("raw state %s\n", rawState)
669+
{{- range $p := $.IamImportParams }}
670+
{{- if contains $.IamImportFormatTemplate (printf "{{%%%s}}" $p) }}
671+
{{ $p }} := rawState["{{ underscore $p }}"]
672+
{{- else }}
673+
{{ $p }} := tpgresource.GetResourceNameFromSelfLink(rawState["{{ underscore $p }}"])
674+
{{- end }}
675+
{{- end }}
676+
return acctest.BuildIAMImportId(fmt.Sprintf("{{ $.IamImportFormat }}", {{ join $.IamImportParams ", " }}), "", "", rawState["condition.0.title"]), nil
677+
}
678+
}
679+
680+
func generate{{ $.ResourceName }}IAMBindingStateID(iamResourceAddr string) func (*terraform.State) (string, error) {
681+
return func (state *terraform.State) (string, error) {
682+
var rawState map[string]string
683+
for _, m := range state.Modules {
684+
if len(m.Resources) > 0 {
685+
if v, ok := m.Resources[iamResourceAddr]; ok {
686+
rawState = v.Primary.Attributes
687+
}
688+
}
689+
}
690+
fmt.Printf("raw state %s\n", rawState)
691+
{{- range $p := $.IamImportParams }}
692+
{{- if contains $.IamImportFormatTemplate (printf "{{%%%s}}" $p) }}
693+
{{ $p }} := rawState["{{ underscore $p }}"]
694+
{{- else }}
695+
{{ $p }} := tpgresource.GetResourceNameFromSelfLink(rawState["{{ underscore $p }}"])
696+
{{- end }}
697+
{{- end }}
698+
return acctest.BuildIAMImportId(fmt.Sprintf("{{ $.IamImportFormat }}", {{ join $.IamImportParams ", " }}), rawState["role"], "", rawState["condition.0.title"]), nil
699+
}
700+
}
701+
702+
func generate{{ $.ResourceName }}IAMMemberStateID(iamResourceAddr string) func (*terraform.State) (string, error) {
703+
return func (state *terraform.State) (string, error) {
704+
var rawState map[string]string
705+
for _, m := range state.Modules {
706+
if len(m.Resources) > 0 {
707+
if v, ok := m.Resources[iamResourceAddr]; ok {
708+
rawState = v.Primary.Attributes
709+
}
710+
}
711+
}
712+
fmt.Printf("raw state %s\n", rawState)
713+
{{- range $p := $.IamImportParams }}
714+
{{- if contains $.IamImportFormatTemplate (printf "{{%%%s}}" $p) }}
715+
{{ $p }} := rawState["{{ underscore $p }}"]
716+
{{- else }}
717+
{{ $p }} := tpgresource.GetResourceNameFromSelfLink(rawState["{{ underscore $p }}"])
718+
{{- end }}
719+
{{- end }}
720+
return acctest.BuildIAMImportId(fmt.Sprintf("{{ $.IamImportFormat }}", {{ join $.IamImportParams ", " }}), rawState["role"], rawState["member"], rawState["condition.0.title"]), nil
721+
}
722+
}
723+
{{- end }}

mmv1/templates/terraform/samples/base_configs/test_file.go.tmpl

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,37 @@
1818
package {{ $.Res.PackageName }}_test
1919

2020
import (
21-
{{- if not $.Res.ExcludeDelete }}
22-
{{- if not $.Res.CustomCode.TestCheckDestroy }}
2321
"fmt"
24-
{{- end }}
22+
"log"
23+
"strconv"
2524
"strings"
26-
{{- end }}
2725
"testing"
26+
"time"
2827

2928
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
30-
{{- if not $.Res.ExcludeDelete }}
29+
"github.com/hashicorp/terraform-plugin-testing/plancheck"
3130
"github.com/hashicorp/terraform-plugin-testing/terraform"
32-
{{- end }}
3331

3432
"{{ $.ImportPath }}/acctest"
3533
"{{ $.ImportPath }}/envvar"
3634
"{{ $.ImportPath }}/tpgresource"
3735
transport_tpg "{{ $.ImportPath }}/transport"
36+
37+
"google.golang.org/api/googleapi"
38+
)
39+
40+
var (
41+
_ = fmt.Sprintf
42+
_ = log.Print
43+
_ = strconv.Atoi
44+
_ = strings.Trim
45+
_ = time.Now
46+
_ = resource.TestMain
47+
_ = terraform.NewState
48+
_ = envvar.TestEnvVar
49+
_ = tpgresource.SetLabels
50+
_ = transport_tpg.Config{}
51+
_ = googleapi.Error{}
3852
)
3953

4054
{{ range $s := $.Res.TestSamples }}

0 commit comments

Comments
 (0)