@@ -25,6 +25,7 @@ func TestAccDatasourceSecretManagerSecretVersion_basic(t *testing.T) {
25
25
Config : testAccDatasourceSecretManagerSecretVersion_basic (randomString ),
26
26
Check : resource .ComposeTestCheckFunc (
27
27
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" ),
28
29
),
29
30
},
30
31
},
@@ -45,6 +46,29 @@ func TestAccDatasourceSecretManagerSecretVersion_latest(t *testing.T) {
45
46
Config : testAccDatasourceSecretManagerSecretVersion_latest (randomString ),
46
47
Check : resource .ComposeTestCheckFunc (
47
48
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" ),
48
72
),
49
73
},
50
74
},
@@ -74,6 +98,43 @@ func testAccCheckDatasourceSecretManagerSecretVersion(n, expected string) resour
74
98
}
75
99
}
76
100
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
+
77
138
func testAccDatasourceSecretManagerSecretVersion_latest (randomString string ) string {
78
139
return fmt .Sprintf (`
79
140
resource "google_secret_manager_secret" "secret-basic" {
@@ -127,3 +188,28 @@ data "google_secret_manager_secret_version" "basic" {
127
188
}
128
189
` , randomString , randomString )
129
190
}
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
+ }
0 commit comments