@@ -89,10 +89,10 @@ func TestSecretGeneratorFromProperties(t *testing.T) {
89
89
th := kusttest_test .MakeHarness (t )
90
90
th .WriteK ("base" , `
91
91
secretGenerator:
92
- - name: test-secret
93
- behavior: create
94
- envs:
95
- - properties
92
+ - name: test-secret
93
+ behavior: create
94
+ envs:
95
+ - properties
96
96
` )
97
97
th .WriteF ("base/properties" , `
98
98
VAR1=100
@@ -126,10 +126,10 @@ func TestSecretGeneratorEmitStringDataFromProperties(t *testing.T) {
126
126
th := kusttest_test .MakeHarness (t )
127
127
th .WriteK ("base" , `
128
128
secretGenerator:
129
- - name: test-secret
130
- behavior: create
131
- envs:
132
- - properties
129
+ - name: test-secret
130
+ behavior: create
131
+ envs:
132
+ - properties
133
133
` )
134
134
th .WriteF ("base/properties" , `
135
135
VAR1=100
@@ -162,6 +162,138 @@ type: Opaque
162
162
}
163
163
164
164
// Generate Secrets similar to TestGeneratorBasics with emitStringData enabled and
165
+ func TestSecretGeneratorDoesNotTouchStringData (t * testing.T ) {
166
+ th := kusttest_test .MakeHarness (t )
167
+ th .WriteK ("base" , `
168
+ secretGenerator:
169
+ - name: test-secret
170
+ emitStringData: true
171
+ behavior: create
172
+ envs:
173
+ - properties
174
+ ` )
175
+ th .WriteF ("base/properties" , `
176
+ VAR1=100
177
+ ` )
178
+ th .WriteK ("overlay" , `
179
+ resources:
180
+ - ../base
181
+ secretGenerator:
182
+ - name: test-secret
183
+ emitStringData: false
184
+ behavior: "merge"
185
+ envs:
186
+ - properties
187
+ ` )
188
+ th .WriteF ("overlay/properties" , `
189
+ VAR2=200
190
+ ` )
191
+ m := th .Run ("overlay" , th .MakeDefaultOptions ())
192
+ th .AssertActualEqualsExpected (m , `
193
+ apiVersion: v1
194
+ data:
195
+ VAR2: MjAw
196
+ kind: Secret
197
+ metadata:
198
+ name: test-secret-962dt6476k
199
+ stringData:
200
+ VAR1: "100"
201
+ type: Opaque
202
+ ` )
203
+ }
204
+
205
+ func TestSecretGeneratorOverrideDataWithStringDataWorksAtKubeAPI (t * testing.T ) {
206
+ // The resulting Secret will have a duplicate key in both data and stringData
207
+ // The stringData override will work, because the kube API considers stringData authoritative and write-only
208
+ th := kusttest_test .MakeHarness (t )
209
+ th .WriteK ("base" , `
210
+ secretGenerator:
211
+ - name: test-secret
212
+ behavior: create
213
+ envs:
214
+ - properties
215
+ ` )
216
+ th .WriteF ("base/properties" , `
217
+ CHANGING=data-before
218
+ BASE=red
219
+ ` )
220
+ th .WriteK ("overlay" , `
221
+ resources:
222
+ - ../base
223
+ secretGenerator:
224
+ - name: test-secret
225
+ emitStringData: true
226
+ behavior: "merge"
227
+ envs:
228
+ - properties
229
+ ` )
230
+ th .WriteF ("overlay/properties" , `
231
+ CHANGING=stringData-after
232
+ OVERLAY=blue
233
+ ` )
234
+ m := th .Run ("overlay" , th .MakeDefaultOptions ())
235
+ th .AssertActualEqualsExpected (m , `
236
+ apiVersion: v1
237
+ data:
238
+ BASE: cmVk
239
+ CHANGING: ZGF0YS1iZWZvcmU=
240
+ kind: Secret
241
+ metadata:
242
+ name: test-secret-c4g4kdc558
243
+ stringData:
244
+ CHANGING: stringData-after
245
+ OVERLAY: blue
246
+ type: Opaque
247
+ ` )
248
+ }
249
+
250
+ func TestSecretGeneratorOverrideStringDataWithDataSilentlyFailsAtKubeAPI (t * testing.T ) {
251
+ // The resulting Secret will have a duplicate key in both data and stringData
252
+ // The data override will fail, because the kube API considers the older value in stringData authoritative and write-only
253
+ th := kusttest_test .MakeHarness (t )
254
+ th .WriteK ("base" , `
255
+ secretGenerator:
256
+ - name: test-secret
257
+ emitStringData: true
258
+ behavior: create
259
+ envs:
260
+ - properties
261
+ ` )
262
+ th .WriteF ("base/properties" , `
263
+ CHANGING=stringData-before
264
+ BASE=red
265
+ ` )
266
+ th .WriteK ("overlay" , `
267
+ resources:
268
+ - ../base
269
+ secretGenerator:
270
+ - name: test-secret
271
+ emitStringData: false
272
+ behavior: "merge"
273
+ envs:
274
+ - properties
275
+ ` )
276
+ th .WriteF ("overlay/properties" , `
277
+ CHANGING=data-after
278
+ OVERLAY=blue
279
+ ` )
280
+ m := th .Run ("overlay" , th .MakeDefaultOptions ())
281
+ th .AssertActualEqualsExpected (m , `
282
+ apiVersion: v1
283
+ data:
284
+ CHANGING: ZGF0YS1hZnRlcg==
285
+ OVERLAY: Ymx1ZQ==
286
+ kind: Secret
287
+ metadata:
288
+ name: test-secret-b65ktgckfh
289
+ stringData:
290
+ BASE: red
291
+ CHANGING: stringData-before
292
+ type: Opaque
293
+ ` )
294
+ }
295
+
296
+ // Generate Secrets similar to TestGeneratorBasics with stringData enabled and
165
297
// disabled.
166
298
func TestSecretGeneratorEmitStringData (t * testing.T ) {
167
299
th := kusttest_test .MakeHarness (t )
0 commit comments