...
1 package unstructured
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "sigs.k8s.io/controller-runtime/pkg/client"
8
9 "edge-infra.dev/pkg/k8s/object/fobject"
10
11 v1 "k8s.io/api/apps/v1"
12 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13 )
14
15 func obj() *v1.Deployment {
16 return &v1.Deployment{
17 ObjectMeta: metav1.ObjectMeta{Name: "lovely-deploy", Namespace: "heaven"},
18 Spec: v1.DeploymentSpec{},
19 Status: v1.DeploymentStatus{
20 Replicas: 3,
21 },
22 }
23 }
24
25 func TestToUnstructured(t *testing.T) {
26 a := assert.New(t)
27
28 o := obj()
29 u, err := ToUnstructured(o)
30
31 a.NoError(err)
32 a.EqualValues(u.GroupVersionKind(), o.GroupVersionKind())
33 a.Equal(o.Name, u.GetName())
34 a.Equal(o.Namespace, u.GetNamespace())
35 }
36
37 func TestToUnstructuredList(t *testing.T) {
38 a := assert.New(t)
39
40 o := obj()
41 ul, err := ToUnstructuredList(o)
42
43 a.NoError(err)
44
45 u := ul.Items[0]
46 a.NotNil(u)
47 a.EqualValues(u.GroupVersionKind(), o.GroupVersionKind())
48 a.Equal(o.Name, u.GetName())
49 a.Equal(o.Namespace, u.GetNamespace())
50 }
51
52 func TestUnmarshalField(t *testing.T) {
53 a := assert.New(t)
54
55 o := obj()
56 u, err := ToUnstructured(o)
57 a.NoError(err)
58 replicas := 0
59 a.NoError(UnmarshalField(u, &replicas, "status", "replicas"))
60 a.Equal(replicas, 3)
61 }
62
63 func TestToClientObjArray(t *testing.T) {
64 objs := []client.Object{
65 &fobject.Fake{
66 TypeMeta: metav1.TypeMeta{Kind: "Fake"},
67 ObjectMeta: metav1.ObjectMeta{Name: "special-child", Namespace: "special-home"},
68 },
69 &fobject.Fake{
70 TypeMeta: metav1.TypeMeta{Kind: "Fake"},
71 ObjectMeta: metav1.ObjectMeta{Name: "specialer-child"},
72 },
73 }
74
75 uobjs, err := ToUnstructuredArray(objs...)
76 if err != nil {
77 t.Error(err)
78 }
79 objs2 := ToClientObjArray(uobjs...)
80 if len(objs2) != 2 {
81 t.Error("incorrect length of result array", "expected", 2, "actual", len(objs2))
82 }
83 if objs2 == nil {
84 t.Error("result array is nil")
85 }
86 }
87
View as plain text