@@ -27,6 +27,7 @@ func TestAccDatasourceSecretManagerSecretVersion_basic(t *testing.T) {
27
27
Config : testAccDatasourceSecretManagerSecretVersion_basic (randomString ),
28
28
Check : resource .ComposeTestCheckFunc (
29
29
testAccCheckDatasourceSecretManagerSecretVersion ("data.google_secret_manager_secret_version.basic" , "1" ),
30
+ testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource ("data.google_secret_manager_secret_version.basic" , "google_secret_manager_secret_version.secret-version-basic" ),
30
31
),
31
32
},
32
33
},
@@ -47,6 +48,29 @@ func TestAccDatasourceSecretManagerSecretVersion_latest(t *testing.T) {
47
48
Config : testAccDatasourceSecretManagerSecretVersion_latest (randomString ),
48
49
Check : resource .ComposeTestCheckFunc (
49
50
testAccCheckDatasourceSecretManagerSecretVersion ("data.google_secret_manager_secret_version.latest" , "2" ),
51
+ testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource ("data.google_secret_manager_secret_version.latest" , "google_secret_manager_secret_version.secret-version-basic-2" ),
52
+ ),
53
+ },
54
+ },
55
+ })
56
+ }
57
+
58
+ func TestAccDatasourceSecretManagerSecretVersion_withBase64SecretData (t * testing.T ) {
59
+ t .Parallel ()
60
+
61
+ randomString := acctest .RandString (t , 10 )
62
+ data := "./test-fixtures/binary-file.pfx"
63
+
64
+ acctest .VcrTest (t , resource.TestCase {
65
+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
66
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
67
+ CheckDestroy : testAccCheckSecretManagerSecretVersionDestroyProducer (t ),
68
+ Steps : []resource.TestStep {
69
+ {
70
+ Config : testAccDatasourceSecretManagerSecretVersion_withBase64SecretData (randomString , data ),
71
+ Check : resource .ComposeTestCheckFunc (
72
+ testAccCheckDatasourceSecretManagerSecretVersion ("data.google_secret_manager_secret_version.basic-base64" , "1" ),
73
+ testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource ("data.google_secret_manager_secret_version.basic-base64" , "google_secret_manager_secret_version.secret-version-basic-base64" ),
50
74
),
51
75
},
52
76
},
@@ -76,6 +100,43 @@ func testAccCheckDatasourceSecretManagerSecretVersion(n, expected string) resour
76
100
}
77
101
}
78
102
103
+ func testAccCheckSecretManagerSecretVersionSecretDataDatasourceMatchesResource (datasource , resource string ) resource.TestCheckFunc {
104
+ return func (s * terraform.State ) error {
105
+ rs , ok := s .RootModule ().Resources [resource ]
106
+ if ! ok {
107
+ return fmt .Errorf ("can't find Secret Version resource: %s" , resource )
108
+ }
109
+
110
+ ds , ok := s .RootModule ().Resources [datasource ]
111
+ if ! ok {
112
+ return fmt .Errorf ("can't find Secret Version data source: %s" , datasource )
113
+ }
114
+
115
+ if rs .Primary .ID == "" {
116
+ return errors .New ("resource ID not set." )
117
+ }
118
+
119
+ if ds .Primary .ID == "" {
120
+ return errors .New ("data source ID not set." )
121
+ }
122
+
123
+ resourceSecretData , ok := rs .Primary .Attributes ["secret_data" ]
124
+ if ! ok {
125
+ return errors .New ("can't find 'secret_data' attribute in Secret Version resource" )
126
+ }
127
+
128
+ datasourceSecretData , ok := ds .Primary .Attributes ["secret_data" ]
129
+ if ! ok {
130
+ return errors .New ("can't find 'secret_data' attribute in Secret Version data source" )
131
+ }
132
+
133
+ if resourceSecretData != datasourceSecretData {
134
+ return fmt .Errorf ("expected %s, got %s, secret_data doesn't match" , resourceSecretData , datasourceSecretData )
135
+ }
136
+ return nil
137
+ }
138
+ }
139
+
79
140
func testAccDatasourceSecretManagerSecretVersion_latest (randomString string ) string {
80
141
return fmt .Sprintf (`
81
142
resource "google_secret_manager_secret" "secret-basic" {
@@ -129,3 +190,28 @@ data "google_secret_manager_secret_version" "basic" {
129
190
}
130
191
` , randomString , randomString )
131
192
}
193
+
194
+ func testAccDatasourceSecretManagerSecretVersion_withBase64SecretData (randomString , data string ) string {
195
+ return fmt .Sprintf (`
196
+ resource "google_secret_manager_secret" "secret-basic-base64" {
197
+ secret_id = "tf-test-secret-version-%s"
198
+ labels = {
199
+ label = "my-label"
200
+ }
201
+ replication {
202
+ auto {}
203
+ }
204
+ }
205
+
206
+ resource "google_secret_manager_secret_version" "secret-version-basic-base64" {
207
+ secret = google_secret_manager_secret.secret-basic-base64.name
208
+ is_secret_data_base64 = true
209
+ secret_data = filebase64("%s")
210
+ }
211
+
212
+ data "google_secret_manager_secret_version" "basic-base64" {
213
+ secret = google_secret_manager_secret_version.secret-version-basic-base64.secret
214
+ is_secret_data_base64 = true
215
+ }
216
+ ` , randomString , data )
217
+ }
0 commit comments