@@ -56,15 +56,6 @@ func TestMergeMaps(t *testing.T) {
5656 }
5757}
5858
59- // Mock reader for testing that always returns an error when Read is called
60- type errorReader struct {
61- io.Reader
62- }
63-
64- func (m errorReader ) Read (p []byte ) (int , error ) {
65- return 0 , errors .New ("Oh no!" )
66- }
67-
6859func TestManifestObjects (t * testing.T ) {
6960 tests := []struct {
7061 name string
@@ -152,3 +143,54 @@ spec:
152143 })
153144 }
154145}
146+
147+ func Test_ToUnstructured (t * testing.T ) {
148+ for _ , tc := range []struct {
149+ name string
150+ obj client.Object
151+ err error
152+ }{
153+ {
154+ name : "converts object to unstructured" ,
155+ obj : & corev1.Service {
156+ TypeMeta : metav1.TypeMeta {Kind : "Service" , APIVersion : "v1" },
157+ ObjectMeta : metav1.ObjectMeta {Name : "my-service" , Namespace : "my-namespace" },
158+ },
159+ }, {
160+ name : "fails if object doesn't define kind" ,
161+ obj : & corev1.Service {
162+ TypeMeta : metav1.TypeMeta {Kind : "" , APIVersion : "v1" },
163+ ObjectMeta : metav1.ObjectMeta {Name : "my-service" , Namespace : "my-namespace" },
164+ },
165+ err : errors .New ("object has no kind" ),
166+ }, {
167+ name : "fails if object doesn't define version" ,
168+ obj : & corev1.Service {
169+ TypeMeta : metav1.TypeMeta {Kind : "Service" , APIVersion : "" },
170+ ObjectMeta : metav1.ObjectMeta {Name : "my-service" , Namespace : "my-namespace" },
171+ },
172+ err : errors .New ("object has no version" ),
173+ }, {
174+ name : "fails if object is nil" ,
175+ err : errors .New ("object is nil" ),
176+ },
177+ } {
178+ t .Run (tc .name , func (t * testing.T ) {
179+ out , err := util .ToUnstructured (tc .obj )
180+ if tc .err != nil {
181+ require .Error (t , err )
182+ } else {
183+ assert .Equal (t , tc .obj .GetObjectKind ().GroupVersionKind (), out .GroupVersionKind ())
184+ }
185+ })
186+ }
187+ }
188+
189+ // Mock reader for testing that always returns an error when Read is called
190+ type errorReader struct {
191+ io.Reader
192+ }
193+
194+ func (m errorReader ) Read (p []byte ) (int , error ) {
195+ return 0 , errors .New ("Oh no!" )
196+ }
0 commit comments