@@ -16,21 +16,31 @@ import (
1616 "k8s.io/utils/diff"
1717)
1818
19- func getObject (version , kind , name , namespace string ) * unstructured.Unstructured {
19+ func getObject (version , kind , name , namespace string , withManagedFields bool ) * unstructured.Unstructured {
20+ metadata := map [string ]interface {}{
21+ "name" : name ,
22+ "namespace" : namespace ,
23+ }
24+
25+ if withManagedFields {
26+ // []metav1.FieldsV1{} can't be deep copied by fake client so using
27+ // string as example value
28+ metadata ["managedFields" ] = "set"
29+ }
30+
31+ object := map [string ]interface {}{
32+ "apiVersion" : version ,
33+ "kind" : kind ,
34+ "metadata" : metadata ,
35+ }
36+
2037 return & unstructured.Unstructured {
21- Object : map [string ]interface {}{
22- "apiVersion" : version ,
23- "kind" : kind ,
24- "metadata" : map [string ]interface {}{
25- "name" : name ,
26- "namespace" : namespace ,
27- },
28- },
38+ Object : object ,
2939 }
3040}
3141
3242func getSecret (name , namespace string , data map [string ]interface {}, isTLS bool , withLastApplied bool ) * unstructured.Unstructured {
33- object := getObject ("v1" , "Secret" , name , namespace )
43+ object := getObject ("v1" , "Secret" , name , namespace , false )
3444 object .Object ["data" ] = data
3545
3646 object .Object ["type" ] = "Opaque"
@@ -113,34 +123,34 @@ func TestDynamicGatherer_Fetch(t *testing.T) {
113123 "only a Foo should be returned if GVR selects foos" : {
114124 gvr : schema.GroupVersionResource {Group : "foobar" , Version : "v1" , Resource : "foos" },
115125 objects : []runtime.Object {
116- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" ),
117- getObject ("v1" , "Service" , "testservice" , "testns" ),
118- getObject ("foobar/v1" , "NotFoo" , "notfoo" , "testns" ),
126+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
127+ getObject ("v1" , "Service" , "testservice" , "testns" , false ),
128+ getObject ("foobar/v1" , "NotFoo" , "notfoo" , "testns" , false ),
119129 },
120130 expected : asUnstructuredList (
121- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" ),
131+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
122132 ),
123133 },
124134 "only Foos in the specified namespace should be returned" : {
125135 gvr : schema.GroupVersionResource {Group : "foobar" , Version : "v1" , Resource : "foos" },
126136 namespaces : []string {"testns" },
127137 objects : []runtime.Object {
128- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" ),
129- getObject ("foobar/v1" , "Foo" , "testfoo" , "nottestns" ),
138+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
139+ getObject ("foobar/v1" , "Foo" , "testfoo" , "nottestns" , false ),
130140 },
131141 expected : asUnstructuredList (
132- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" ),
142+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
133143 ),
134144 },
135145 "Foos in different namespaces should be returned if no namespace field is set" : {
136146 gvr : schema.GroupVersionResource {Group : "foobar" , Version : "v1" , Resource : "foos" },
137147 objects : []runtime.Object {
138- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns1" ),
139- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns2" ),
148+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns1" , false ),
149+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns2" , false ),
140150 },
141151 expected : asUnstructuredList (
142- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns1" ),
143- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns2" ),
152+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns1" , false ),
153+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns2" , false ),
144154 ),
145155 },
146156 "Secret resources should have data removed" : {
@@ -185,13 +195,24 @@ func TestDynamicGatherer_Fetch(t *testing.T) {
185195 gvr : schema.GroupVersionResource {Group : "foobar" , Version : "v1" , Resource : "foos" },
186196 namespaces : []string {"testns" , "testns2" },
187197 objects : []runtime.Object {
188- getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" ),
189- getObject ("foobar/v1" , "Foo" , "testfoo2" , "testns2" ),
190- getObject ("foobar/v1" , "Foo" , "testfoo3" , "nottestns" ),
198+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
199+ getObject ("foobar/v1" , "Foo" , "testfoo2" , "testns2" , false ),
200+ getObject ("foobar/v1" , "Foo" , "testfoo3" , "nottestns" , false ),
201+ },
202+ expected : asUnstructuredList (
203+ getObject ("foobar/v1" , "Foo" , "testfoo" , "testns" , false ),
204+ getObject ("foobar/v1" , "Foo" , "testfoo2" , "testns2" , false ),
205+ ),
206+ },
207+ "Resources should have managed fields removed" : {
208+ gvr : schema.GroupVersionResource {Group : "apps" , Version : "v1" , Resource : "deployments" },
209+ objects : []runtime.Object {
210+ getObject ("apps/v1" , "Deployment" , "foo1" , "testns" , false ),
211+ getObject ("apps/v1" , "Deployment" , "foo2" , "testns" , true ),
191212 },
192213 expected : asUnstructuredList (
193- getObject ("foobar /v1" , "Foo " , "testfoo " , "testns" ),
194- getObject ("foobar /v1" , "Foo " , "testfoo2 " , "testns2" ),
214+ getObject ("apps /v1" , "Deployment " , "foo1 " , "testns" , false ),
215+ getObject ("apps /v1" , "Deployment " , "foo2 " , "testns" , false ),
195216 ),
196217 },
197218 // Note that we can't test use of fieldSelector to exclude namespaces
@@ -217,7 +238,7 @@ func TestDynamicGatherer_Fetch(t *testing.T) {
217238 if err == nil && test .err {
218239 t .Errorf ("expected to get an error but didn't get one" )
219240 }
220- if diff , equal := messagediff .PrettyDiff (res , test .expected ); ! equal {
241+ if diff , equal := messagediff .PrettyDiff (test .expected , res ); ! equal {
221242 t .Errorf ("\n %s" , diff )
222243 }
223244 })
0 commit comments