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