Skip to content

Commit f2d613e

Browse files
Merge branch 'GoogleCloudPlatform:main' into chayanr-resize-request
2 parents 55edf0d + c7e7579 commit f2d613e

12 files changed

+338
-40
lines changed

mmv1/third_party/terraform/services/secretmanager/data_source_secret_manager_secret_version.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ func DataSourceSecretManagerSecretVersion() *schema.Resource {
5252
Computed: true,
5353
Sensitive: true,
5454
},
55+
"is_secret_data_base64": {
56+
Type: schema.TypeBool,
57+
Optional: true,
58+
Default: false,
59+
},
5560
},
5661
}
5762
}
@@ -147,11 +152,17 @@ func dataSourceSecretManagerSecretVersionRead(d *schema.ResourceData, meta inter
147152
}
148153

149154
data := resp["payload"].(map[string]interface{})
150-
secretData, err := base64.StdEncoding.DecodeString(data["data"].(string))
151-
if err != nil {
152-
return fmt.Errorf("Error decoding secret manager secret version data: %s", err.Error())
155+
var secretData string
156+
if d.Get("is_secret_data_base64").(bool) {
157+
secretData = data["data"].(string)
158+
} else {
159+
payloadData, err := base64.StdEncoding.DecodeString(data["data"].(string))
160+
if err != nil {
161+
return fmt.Errorf("error decoding secret manager secret version data: %s", err.Error())
162+
}
163+
secretData = string(payloadData)
153164
}
154-
if err := d.Set("secret_data", string(secretData)); err != nil {
165+
if err := d.Set("secret_data", secretData); err != nil {
155166
return fmt.Errorf("Error setting secret_data: %s", err)
156167
}
157168

mmv1/third_party/terraform/services/secretmanager/data_source_secret_manager_secret_version_access.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ func DataSourceSecretManagerSecretVersionAccess() *schema.Resource {
4040
Computed: true,
4141
Sensitive: true,
4242
},
43+
"is_secret_data_base64": {
44+
Type: schema.TypeBool,
45+
Optional: true,
46+
Default: false,
47+
},
4348
},
4449
}
4550
}
@@ -112,11 +117,17 @@ func dataSourceSecretManagerSecretVersionAccessRead(d *schema.ResourceData, meta
112117
}
113118

114119
data := resp["payload"].(map[string]interface{})
115-
secretData, err := base64.StdEncoding.DecodeString(data["data"].(string))
116-
if err != nil {
117-
return fmt.Errorf("Error decoding secret manager secret version data: %s", err.Error())
120+
var secretData string
121+
if d.Get("is_secret_data_base64").(bool) {
122+
secretData = data["data"].(string)
123+
} else {
124+
payloadData, err := base64.StdEncoding.DecodeString(data["data"].(string))
125+
if err != nil {
126+
return fmt.Errorf("error decoding secret manager secret version data: %s", err.Error())
127+
}
128+
secretData = string(payloadData)
118129
}
119-
if err := d.Set("secret_data", string(secretData)); err != nil {
130+
if err := d.Set("secret_data", secretData); err != nil {
120131
return fmt.Errorf("Error setting secret_data: %s", err)
121132
}
122133

mmv1/third_party/terraform/services/secretmanager/data_source_secret_manager_secret_version_access_test.go

+47-23
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package secretmanager_test
22

33
import (
4-
"errors"
54
"fmt"
65
"testing"
76

87
"github.com/hashicorp/terraform-provider-google/google/acctest"
98

109
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
11-
"github.com/hashicorp/terraform-plugin-testing/terraform"
1210
)
1311

1412
func TestAccDatasourceSecretManagerSecretVersionAccess_basic(t *testing.T) {
@@ -24,7 +22,8 @@ func TestAccDatasourceSecretManagerSecretVersionAccess_basic(t *testing.T) {
2422
{
2523
Config: testAccDatasourceSecretManagerSecretVersionAccess_basic(randomString),
2624
Check: resource.ComposeTestCheckFunc(
27-
testAccCheckDatasourceSecretManagerSecretVersionAccess("data.google_secret_manager_secret_version_access.basic", "1"),
25+
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version_access.basic", "1"),
26+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version_access.basic", "google_secret_manager_secret_version.secret-version-basic"),
2827
),
2928
},
3029
},
@@ -44,34 +43,34 @@ func TestAccDatasourceSecretManagerSecretVersionAccess_latest(t *testing.T) {
4443
{
4544
Config: testAccDatasourceSecretManagerSecretVersionAccess_latest(randomString),
4645
Check: resource.ComposeTestCheckFunc(
47-
testAccCheckDatasourceSecretManagerSecretVersionAccess("data.google_secret_manager_secret_version_access.latest", "2"),
46+
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version_access.latest", "2"),
47+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version_access.latest", "google_secret_manager_secret_version.secret-version-basic-2"),
4848
),
4949
},
5050
},
5151
})
5252
}
5353

54-
func testAccCheckDatasourceSecretManagerSecretVersionAccess(n, expected string) resource.TestCheckFunc {
55-
return func(s *terraform.State) error {
56-
rs, ok := s.RootModule().Resources[n]
57-
if !ok {
58-
return fmt.Errorf("Can't find Secret Version data source: %s", n)
59-
}
60-
61-
if rs.Primary.ID == "" {
62-
return errors.New("data source ID not set.")
63-
}
54+
func TestAccDatasourceSecretManagerSecretVersionAccess_withBase64SecretData(t *testing.T) {
55+
t.Parallel()
6456

65-
version, ok := rs.Primary.Attributes["version"]
66-
if !ok {
67-
return errors.New("can't find 'version' attribute")
68-
}
57+
randomString := acctest.RandString(t, 10)
58+
data := "./test-fixtures/binary-file.pfx"
6959

70-
if version != expected {
71-
return fmt.Errorf("expected %s, got %s, version not found", expected, version)
72-
}
73-
return nil
74-
}
60+
acctest.VcrTest(t, resource.TestCase{
61+
PreCheck: func() { acctest.AccTestPreCheck(t) },
62+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
63+
CheckDestroy: testAccCheckSecretManagerSecretVersionDestroyProducer(t),
64+
Steps: []resource.TestStep{
65+
{
66+
Config: testAccDatasourceSecretManagerSecretVersionAccess_withBase64SecretData(randomString, data),
67+
Check: resource.ComposeTestCheckFunc(
68+
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version_access.basic-base64", "1"),
69+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version_access.basic-base64", "google_secret_manager_secret_version.secret-version-basic-base64"),
70+
),
71+
},
72+
},
73+
})
7574
}
7675

7776
func testAccDatasourceSecretManagerSecretVersionAccess_latest(randomString string) string {
@@ -127,3 +126,28 @@ data "google_secret_manager_secret_version_access" "basic" {
127126
}
128127
`, randomString, randomString)
129128
}
129+
130+
func testAccDatasourceSecretManagerSecretVersionAccess_withBase64SecretData(randomString, data string) string {
131+
return fmt.Sprintf(`
132+
resource "google_secret_manager_secret" "secret-basic-base64" {
133+
secret_id = "tf-test-secret-version-%s"
134+
labels = {
135+
label = "my-label"
136+
}
137+
replication {
138+
auto {}
139+
}
140+
}
141+
142+
resource "google_secret_manager_secret_version" "secret-version-basic-base64" {
143+
secret = google_secret_manager_secret.secret-basic-base64.name
144+
is_secret_data_base64 = true
145+
secret_data = filebase64("%s")
146+
}
147+
148+
data "google_secret_manager_secret_version_access" "basic-base64" {
149+
secret = google_secret_manager_secret_version.secret-version-basic-base64.secret
150+
is_secret_data_base64 = true
151+
}
152+
`, randomString, data)
153+
}

mmv1/third_party/terraform/services/secretmanager/data_source_secret_manager_secret_version_test.go

+86
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ func TestAccDatasourceSecretManagerSecretVersion_basic(t *testing.T) {
2525
Config: testAccDatasourceSecretManagerSecretVersion_basic(randomString),
2626
Check: resource.ComposeTestCheckFunc(
2727
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version.basic", "1"),
28+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version.basic", "google_secret_manager_secret_version.secret-version-basic"),
2829
),
2930
},
3031
},
@@ -45,6 +46,29 @@ func TestAccDatasourceSecretManagerSecretVersion_latest(t *testing.T) {
4546
Config: testAccDatasourceSecretManagerSecretVersion_latest(randomString),
4647
Check: resource.ComposeTestCheckFunc(
4748
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version.latest", "2"),
49+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version.latest", "google_secret_manager_secret_version.secret-version-basic-2"),
50+
),
51+
},
52+
},
53+
})
54+
}
55+
56+
func TestAccDatasourceSecretManagerSecretVersion_withBase64SecretData(t *testing.T) {
57+
t.Parallel()
58+
59+
randomString := acctest.RandString(t, 10)
60+
data := "./test-fixtures/binary-file.pfx"
61+
62+
acctest.VcrTest(t, resource.TestCase{
63+
PreCheck: func() { acctest.AccTestPreCheck(t) },
64+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
65+
CheckDestroy: testAccCheckSecretManagerSecretVersionDestroyProducer(t),
66+
Steps: []resource.TestStep{
67+
{
68+
Config: testAccDatasourceSecretManagerSecretVersion_withBase64SecretData(randomString, data),
69+
Check: resource.ComposeTestCheckFunc(
70+
testAccCheckDatasourceSecretManagerSecretVersion("data.google_secret_manager_secret_version.basic-base64", "1"),
71+
testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource("data.google_secret_manager_secret_version.basic-base64", "google_secret_manager_secret_version.secret-version-basic-base64"),
4872
),
4973
},
5074
},
@@ -74,6 +98,43 @@ func testAccCheckDatasourceSecretManagerSecretVersion(n, expected string) resour
7498
}
7599
}
76100

101+
func testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource(datasource, resource string) resource.TestCheckFunc {
102+
return func(s *terraform.State) error {
103+
rs, ok := s.RootModule().Resources[resource]
104+
if !ok {
105+
return fmt.Errorf("can't find Secret Version resource: %s", resource)
106+
}
107+
108+
ds, ok := s.RootModule().Resources[datasource]
109+
if !ok {
110+
return fmt.Errorf("can't find Secret Version data source: %s", datasource)
111+
}
112+
113+
if rs.Primary.ID == "" {
114+
return errors.New("resource ID not set.")
115+
}
116+
117+
if ds.Primary.ID == "" {
118+
return errors.New("data source ID not set.")
119+
}
120+
121+
resourceSecretData, ok := rs.Primary.Attributes["secret_data"]
122+
if !ok {
123+
return errors.New("can't find 'secret_data' attribute in Secret Version resource")
124+
}
125+
126+
datasourceSecretData, ok := ds.Primary.Attributes["secret_data"]
127+
if !ok {
128+
return errors.New("can't find 'secret_data' attribute in Secret Version data source")
129+
}
130+
131+
if resourceSecretData != datasourceSecretData {
132+
return fmt.Errorf("expected %s, got %s, secret_data doesn't match", resourceSecretData, datasourceSecretData)
133+
}
134+
return nil
135+
}
136+
}
137+
77138
func testAccDatasourceSecretManagerSecretVersion_latest(randomString string) string {
78139
return fmt.Sprintf(`
79140
resource "google_secret_manager_secret" "secret-basic" {
@@ -127,3 +188,28 @@ data "google_secret_manager_secret_version" "basic" {
127188
}
128189
`, randomString, randomString)
129190
}
191+
192+
func testAccDatasourceSecretManagerSecretVersion_withBase64SecretData(randomString, data string) string {
193+
return fmt.Sprintf(`
194+
resource "google_secret_manager_secret" "secret-basic-base64" {
195+
secret_id = "tf-test-secret-version-%s"
196+
labels = {
197+
label = "my-label"
198+
}
199+
replication {
200+
auto {}
201+
}
202+
}
203+
204+
resource "google_secret_manager_secret_version" "secret-version-basic-base64" {
205+
secret = google_secret_manager_secret.secret-basic-base64.name
206+
is_secret_data_base64 = true
207+
secret_data = filebase64("%s")
208+
}
209+
210+
data "google_secret_manager_secret_version" "basic-base64" {
211+
secret = google_secret_manager_secret_version.secret-version-basic-base64.secret
212+
is_secret_data_base64 = true
213+
}
214+
`, randomString, data)
215+
}

mmv1/third_party/terraform/services/secretmanagerregional/data_source_secret_manager_regional_secret_version.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ func DataSourceSecretManagerRegionalRegionalSecretVersion() *schema.Resource {
6969
},
7070
},
7171
},
72+
"is_secret_data_base64": {
73+
Type: schema.TypeBool,
74+
Optional: true,
75+
Default: false,
76+
},
7277
},
7378
}
7479
}
@@ -193,12 +198,17 @@ func dataSourceSecretManagerRegionalRegionalSecretVersionRead(d *schema.Resource
193198
}
194199

195200
data := resp["payload"].(map[string]interface{})
196-
secretData, err := base64.StdEncoding.DecodeString(data["data"].(string))
197-
if err != nil {
198-
return fmt.Errorf("Error decoding secret manager regional secret version data: %s", err.Error())
201+
var secretData string
202+
if d.Get("is_secret_data_base64").(bool) {
203+
secretData = data["data"].(string)
204+
} else {
205+
payloadData, err := base64.StdEncoding.DecodeString(data["data"].(string))
206+
if err != nil {
207+
return fmt.Errorf("error decoding secret manager regional secret version data: %s", err.Error())
208+
}
209+
secretData = string(payloadData)
199210
}
200-
201-
if err := d.Set("secret_data", string(secretData)); err != nil {
211+
if err := d.Set("secret_data", secretData); err != nil {
202212
return fmt.Errorf("Error setting secret_data: %s", err)
203213
}
204214

mmv1/third_party/terraform/services/secretmanagerregional/data_source_secret_manager_regional_secret_version_access.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ func DataSourceSecretManagerRegionalRegionalSecretVersionAccess() *schema.Resour
4545
Computed: true,
4646
Sensitive: true,
4747
},
48+
"is_secret_data_base64": {
49+
Type: schema.TypeBool,
50+
Optional: true,
51+
Default: false,
52+
},
4853
},
4954
}
5055
}
@@ -148,11 +153,17 @@ func dataSourceSecretManagerRegionalRegionalSecretVersionAccessRead(d *schema.Re
148153
}
149154

150155
data := resp["payload"].(map[string]interface{})
151-
secretData, err := base64.StdEncoding.DecodeString(data["data"].(string))
152-
if err != nil {
153-
return fmt.Errorf("error decoding secret manager regional secret version data: %s", err.Error())
156+
var secretData string
157+
if d.Get("is_secret_data_base64").(bool) {
158+
secretData = data["data"].(string)
159+
} else {
160+
payloadData, err := base64.StdEncoding.DecodeString(data["data"].(string))
161+
if err != nil {
162+
return fmt.Errorf("error decoding secret manager regional secret version data: %s", err.Error())
163+
}
164+
secretData = string(payloadData)
154165
}
155-
if err := d.Set("secret_data", string(secretData)); err != nil {
166+
if err := d.Set("secret_data", secretData); err != nil {
156167
return fmt.Errorf("error setting secret_data: %s", err)
157168
}
158169

0 commit comments

Comments
 (0)