@@ -86,6 +86,49 @@ func TestDiff(t *testing.T) {
86
86
}
87
87
})
88
88
89
+ t .Run ("generates diff for replaced key in stringData secret" , func (t * testing.T ) {
90
+ // create a new stringData secret
91
+ sec := secret .DeepCopy ()
92
+ if err := unstructured .SetNestedField (sec .Object , generateName ("diff" ), "metadata" , "name" ); err != nil {
93
+ t .Fatal (err )
94
+ }
95
+
96
+ // copy the secret to simulate a replace of key
97
+ diffSecret := sec .DeepCopy ()
98
+
99
+ // apply stringData conversion
100
+ SetNativeKindsDefaults ([]* unstructured.Unstructured {sec })
101
+
102
+ if _ , err = manager .Apply (ctx , sec , DefaultApplyOptions ()); err != nil {
103
+ t .Fatal (err )
104
+ }
105
+
106
+ newVal := "diff-test"
107
+ unstructured .RemoveNestedField (diffSecret .Object , "stringData" , "key" )
108
+
109
+ newKey := "key.new"
110
+ err = unstructured .SetNestedField (diffSecret .Object , newVal , "stringData" , newKey )
111
+ if err != nil {
112
+ t .Fatal (err )
113
+ }
114
+
115
+ // apply stringData conversion
116
+ SetNativeKindsDefaults ([]* unstructured.Unstructured {diffSecret })
117
+
118
+ _ , liveObj , mergedObj , err := manager .Diff (ctx , diffSecret , DefaultDiffOptions ())
119
+ if err != nil {
120
+ t .Fatal (err )
121
+ }
122
+
123
+ liveKeys := getKeys (liveObj .Object ["data" ].(map [string ]interface {}))
124
+ mergedKeys := getKeys (mergedObj .Object ["data" ].(map [string ]interface {}))
125
+
126
+ if diff := cmp .Diff (liveKeys , mergedKeys ); diff != "" && len (liveKeys ) != len (mergedKeys ) {
127
+ t .Errorf ("Mismatch from expected value (-want +got):\n %s" , diff )
128
+ }
129
+
130
+ })
131
+
89
132
t .Run ("masks secret values" , func (t * testing.T ) {
90
133
newVal := "diff-test"
91
134
err = unstructured .SetNestedField (secret .Object , newVal , "stringData" , "key" )
@@ -340,3 +383,12 @@ func TestHasDrifted_Metadata(t *testing.T) {
340
383
})
341
384
}
342
385
}
386
+
387
+ func getKeys (m map [string ]interface {}) []string {
388
+ var keys []string
389
+ for k := range m {
390
+ keys = append (keys , k )
391
+ }
392
+
393
+ return keys
394
+ }
0 commit comments