...

Source file src/edge-infra.dev/pkg/k8s/unstructured/converter_test.go

Documentation: edge-infra.dev/pkg/k8s/unstructured

     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