Skip to content

Commit

Permalink
Convert iam_context file with Go (GoogleCloudPlatform#10837)
Browse files Browse the repository at this point in the history
  • Loading branch information
zli82016 authored Jun 3, 2024
1 parent cf980e1 commit d7ffcba
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 72 deletions.
6 changes: 4 additions & 2 deletions mmv1/provider/template_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ func (td *TemplateData) GenerateDocumentationFile(filePath string, resource api.
func (td *TemplateData) GenerateTestFile(filePath string, resource api.Resource) {
templatePath := "templates/terraform/examples/base_configs/test_file.go.tmpl"
templates := []string{
// "templates/terraform//env_var_context.go.tmpl",
"templates/terraform/env_var_context.go.tmpl",
templatePath,
}
tmplInput := TestInput{
Expand Down Expand Up @@ -189,8 +189,10 @@ func (td *TemplateData) GenerateIamPolicyTestFile(filePath string, resource api.
templatePath := "templates/terraform/examples/base_configs/iam_test_file.go.tmpl"
templates := []string{
templatePath,
"templates/terraform/env_var_context.go.tmpl",
"templates/terraform/iam/go/iam_context.go.tmpl",
}
td.GenerateFile(filePath, templatePath, resource, false, templates...)
td.GenerateFile(filePath, templatePath, resource, true, templates...)
}

func (td *TemplateData) GenerateFile(filePath, templatePath string, input any, goFormat bool, templates ...string) {
Expand Down
2 changes: 1 addition & 1 deletion mmv1/provider/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ func (t *Terraform) GenerateIamDocumentation(object api.Resource, templateData T
if err := os.MkdirAll(datasourceDocFolder, os.ModePerm); err != nil {
log.Println(fmt.Errorf("error creating parent directory %v: %v", datasourceDocFolder, err))
}
targetFilePath = path.Join(datasourceDocFolder, fmt.Sprintf("%s_iam.html.markdown", t.FullResourceName(object)))
targetFilePath = path.Join(datasourceDocFolder, fmt.Sprintf("%s_iam_policy.html.markdown", t.FullResourceName(object)))
templateData.GenerateIamDatasourceDocumentationFile(targetFilePath, object)
}

Expand Down
3 changes: 1 addition & 2 deletions mmv1/templates/terraform/datasource_iam.html.markdown.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ description: |-

# `{{ $.IamTerraformName }}_policy`
Retrieves the current IAM policy data for {{ lower $.Name }}

{{ if or (eq $.MinVersionObj.Name "beta") (eq $.IamPolicy.MinVersion "beta") }}
~> **Warning:** This datasource is in beta, and should be used with the terraform-provider-google-beta provider.
See [Provider Versions](https://terraform.io/docs/providers/google/guides/provider_versions.html) for more details on beta resources.
Expand All @@ -66,7 +65,7 @@ See [Provider Versions](https://terraform.io/docs/providers/google/guides/provid

```hcl
data "{{ $.IamTerraformName }}_policy" "policy" {
{{ if eq $.MinVersionObj.Name "beta" }}
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
{{- end }}
{{- $.CustomTemplate $.IamPolicy.ExampleConfigBody false }}
Expand Down
33 changes: 33 additions & 0 deletions mmv1/templates/terraform/env_var_context.go.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{{- define "EnvVarContext" }}
{{- range $varKey, $varVal := $.TestEnvVars }}
{{- if eq $varVal $.ORGID }}
"{{$varKey}}": envvar.GetTestOrgFromEnv(t),
{{- else if eq $varVal $.ORG_DOMAIN }}
"{{$varKey}}": envvar.GetTestOrgDomainFromEnv(t),
{{- else if eq $varVal $.CREDENTIALS }}
"{{$varKey}}": envvar.GetTestCredsFromEnv(t),
{{- else if eq $varVal $.REGION }}
"{{$varKey}}": envvar.GetTestRegionFromEnv(),
{{- else if eq $varVal $.ORG_TARGET }}
"{{$varKey}}": envvar.GetTestOrgTargetFromEnv(t),
{{- else if eq $varVal $.BILLING_ACCT }}
"{{$varKey}}": envvar.GetTestBillingAccountFromEnv(t),
{{- else if eq $varVal $.MASTER_BILLING_ACCT }}
"{{$varKey}}": envvar.GetTestMasterBillingAccountFromEnv(t),
{{- else if eq $varVal $.SERVICE_ACCT }}
"{{$varKey}}": envvar.GetTestServiceAccountFromEnv(t),
{{- else if eq $varVal $.PROJECT_NAME }}
"{{$varKey}}": envvar.GetTestProjectFromEnv(),
{{- else if eq $varVal $.PROJECT_NUMBER }}
"{{$varKey}}": envvar.GetTestProjectNumberFromEnv(),
{{- else if eq $varVal $.CUST_ID }}
"{{$varKey}}": envvar.GetTestCustIdFromEnv(t),
{{- else if eq $varVal $.IDENTITY_USER }}
"{{$varKey}}": envvar.GetTestIdentityUserFromEnv(t),
{{- else if eq $varVal $.PAP_DESCRIPTION }}
"{{$varKey}}": envvar.GetTestPublicAdvertisedPrefixDescriptionFromEnv(t),
{{- else if eq $varVal $.ZONE }}
"{{$varKey}}": envvar.GetTestZoneFromEnv(),
{{- end }}
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{/* <% if hc_downstream */}}
{{/* <% if hc_downstream */ -}}
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

Expand Down Expand Up @@ -26,13 +26,14 @@ import (

"{{ $.ImportPath }}/acctest"
"{{ $.ImportPath }}/envvar"
{{- if $.IamPolicy.IamConditionsRequestType }}
"{{ $.ImportPath }}/tpgresource"
{{- end }}
)
{{ $example := $.FirstTestExample }}
func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -78,8 +79,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {

func TestAcc{{ $.ResourceName }}IamMemberGenerated(t *testing.T) {
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -119,7 +119,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
// This may skip test, so do it first
sa := envvar.GetTestServiceAccountFromEnv(t)
{{- end }}
{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}
{{- if $.IamPolicy.AdminIamRole }}
context["service_account"] = sa
{{- end }}
Expand Down Expand Up @@ -169,8 +169,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
{{- if $.IamPolicy.IamConditionsRequestType }}
func TestAcc{{ $.ResourceName }}IamBindingGenerated_withCondition(t *testing.T) {
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -206,8 +205,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withAndWithoutCondition(t *t
// Multiple fine-grained resources
acctest.SkipIfVcr(t)
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -253,8 +251,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withAndWithoutCondition(t *t

func TestAcc{{ $.ResourceName }}IamMemberGenerated_withCondition(t *testing.T) {
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -290,8 +287,7 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated_withAndWithoutCondition(t *te
// Multiple fine-grained resources
acctest.SkipIfVcr(t)
t.Parallel()

{{/* iam_context.go.erb */}}
{{ template "IamContext" $ }}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
Expand Down Expand Up @@ -342,7 +338,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated_withCondition(t *testing.T) {
// This may skip test, so do it first
sa := envvar.GetTestServiceAccountFromEnv(t)
{{- end }}
{{/* iam_context.go.erb */}}
{{- template "IamContext" $ }}
{{- if $.IamPolicy.AdminIamRole }}
context["service_account"] = sa
{{- end }}
Expand Down Expand Up @@ -395,8 +391,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated_withCondition(t *testing.T) {

func testAcc{{ $.ResourceName }}IamMember_basicGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_member" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -410,8 +405,7 @@ resource "{{ $.IamTerraformName }}_member" "foo" {

func testAcc{{ $.ResourceName }}IamPolicy_basicGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
data "google_iam_policy" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand Down Expand Up @@ -450,8 +444,7 @@ data "{{ $.IamTerraformName }}_policy" "foo" {

func testAcc{{ $.ResourceName }}IamPolicy_emptyBinding(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
data "google_iam_policy" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -470,8 +463,7 @@ resource "{{ $.IamTerraformName }}_policy" "foo" {

func testAcc{{ $.ResourceName }}IamBinding_basicGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_binding" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -485,8 +477,7 @@ resource "{{ $.IamTerraformName }}_binding" "foo" {

func testAcc{{ $.ResourceName }}IamBinding_updateGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_binding" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -501,8 +492,7 @@ resource "{{ $.IamTerraformName }}_binding" "foo" {
{{- if $.IamPolicy.IamConditionsRequestType }}
func testAcc{{ $.ResourceName }}IamBinding_withConditionGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_binding" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -521,8 +511,7 @@ resource "{{ $.IamTerraformName }}_binding" "foo" {

func testAcc{{ $.ResourceName }}IamBinding_withAndWithoutConditionGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_binding" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand Down Expand Up @@ -565,8 +554,7 @@ resource "{{ $.IamTerraformName }}_binding" "foo3" {

func testAcc{{ $.ResourceName }}IamMember_withConditionGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_member" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand All @@ -585,8 +573,7 @@ resource "{{ $.IamTerraformName }}_member" "foo" {

func testAcc{{ $.ResourceName }}IamMember_withAndWithoutConditionGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
resource "{{ $.IamTerraformName }}_member" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand Down Expand Up @@ -629,8 +616,7 @@ resource "{{ $.IamTerraformName }}_member" "foo3" {

func testAcc{{ $.ResourceName }}IamPolicy_withConditionGenerated(context map[string]interface{}) string {
return acctest.Nprintf(`
{{/* example.config_test_body */}}

{{ $example.TestHCLText }}
data "google_iam_policy" "foo" {
{{- if eq $.MinVersionObj.Name "beta" }}
provider = google-beta
Expand Down Expand Up @@ -671,4 +657,4 @@ resource "{{ $.IamTerraformName }}_policy" "foo" {
}
`, context)
}
{{- end }}
{{- end }}{{/* if $.IamPolicy.IamConditionsRequestType */}}
32 changes: 1 addition & 31 deletions mmv1/templates/terraform/examples/base_configs/test_file.go.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -44,37 +44,7 @@ func TestAcc{{ $e.TestSlug $.Res.ProductMetadata.Name $.Res.Name }}(t *testing.T
t.Parallel()

context := map[string]interface{}{
{{- range $varKey, $varVal := $e.TestEnvVars }}
{{- if eq $varVal $.ORGID }}
"{{$varKey}}": envvar.GetTestOrgFromEnv(t),
{{- else if eq $varVal $.ORG_DOMAIN }}
"{{$varKey}}": envvar.GetTestOrgDomainFromEnv(t),
{{- else if eq $varVal $.CREDENTIALS }}
"{{$varKey}}": envvar.GetTestCredsFromEnv(t),
{{- else if eq $varVal $.REGION }}
"{{$varKey}}": envvar.GetTestRegionFromEnv(),
{{- else if eq $varVal $.ORG_TARGET }}
"{{$varKey}}": envvar.GetTestOrgTargetFromEnv(t),
{{- else if eq $varVal $.BILLING_ACCT }}
"{{$varKey}}": envvar.GetTestBillingAccountFromEnv(t),
{{- else if eq $varVal $.MASTER_BILLING_ACCT }}
"{{$varKey}}": envvar.GetTestMasterBillingAccountFromEnv(t),
{{- else if eq $varVal $.SERVICE_ACCT }}
"{{$varKey}}": envvar.GetTestServiceAccountFromEnv(t),
{{- else if eq $varVal $.PROJECT_NAME }}
"{{$varKey}}": envvar.GetTestProjectFromEnv(),
{{- else if eq $varVal $.PROJECT_NUMBER }}
"{{$varKey}}": envvar.GetTestProjectNumberFromEnv(),
{{- else if eq $varVal $.CUST_ID }}
"{{$varKey}}": envvar.GetTestCustIdFromEnv(t),
{{- else if eq $varVal $.IDENTITY_USER }}
"{{$varKey}}": envvar.GetTestIdentityUserFromEnv(t),
{{- else if eq $varVal $.PAP_DESCRIPTION }}
"{{$varKey}}": envvar.GetTestPublicAdvertisedPrefixDescriptionFromEnv(t),
{{- else if eq $varVal $.ZONE }}
"{{$varKey}}": envvar.GetTestZoneFromEnv(),
{{- end }}
{{- end }}
{{- template "EnvVarContext" $e }}
{{- range $varKey, $varVal := $e.TestVarsOverrides }}
"{{$varKey}}": {{$varVal}},
{{- end }}
Expand Down
25 changes: 25 additions & 0 deletions mmv1/templates/terraform/iam/go/iam_context.go.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{{- define "IamContext" }}
context := map[string]interface{}{
"random_suffix": acctest.RandString(t, 10),
"role": "{{ $.IamPolicy.AllowedIamRole }}",
{{- if $.IamPolicy.AdminIamRole }}
"admin_role": "{{ $.IamPolicy.AdminIamRole }}",
{{- end }}
{{- if $.IamPolicy.TestProjectName }}
"project_id" : fmt.Sprintf("{{ $.IamPolicy.TestProjectName }}%s", acctest.RandString(t, 10)),
{{- end }}
{{- template "EnvVarContext" $.FirstTestExample }}
{{- if $.FirstTestExample.TestVarsOverrides }}
{{- range $varName, $override := $.FirstTestExample.TestVarsOverrides }}
"{{ $varName }}": {{ $override }},
{{- end }}
{{- end }}
{{- if $.IamPolicy.IamConditionsRequestType }}
"condition_title": "expires_after_2019_12_31",
"condition_expr": `request.time < timestamp(\"2020-01-01T00:00:00Z\")`,
"condition_desc": "Expiring at midnight of 2019-12-31",
"condition_title_no_desc": "expires_after_2019_12_31-no-description",
"condition_expr_no_desc": `request.time < timestamp(\"2020-01-01T00:00:00Z\")`,
{{- end }}
}
{{- end }}

0 comments on commit d7ffcba

Please sign in to comment.