...

Source file src/edge-infra.dev/pkg/k8s/testing/kmp/inventory_test.go

Documentation: edge-infra.dev/pkg/k8s/testing/kmp

     1  package kmp
     2  
     3  import (
     4  	"bytes"
     5  	_ "embed"
     6  	"testing"
     7  
     8  	"gotest.tools/v3/assert"
     9  
    10  	"edge-infra.dev/pkg/k8s/object"
    11  	"edge-infra.dev/pkg/k8s/runtime/inventory"
    12  	"edge-infra.dev/pkg/k8s/unstructured"
    13  )
    14  
    15  // Object data used to create inventories for tests
    16  var (
    17  	//go:embed testdata/deployment.yaml
    18  	deployBytes []byte
    19  	//go:embed testdata/deployment2.yaml
    20  	deploy2Bytes []byte
    21  	//go:embed testdata/serviceaccount.yaml
    22  	svcActBytes []byte
    23  	//go:embed testdata/namespace.yaml
    24  	nsBytes []byte
    25  )
    26  
    27  func TestInventory(t *testing.T) {
    28  	t.Parallel()
    29  
    30  	// Objects
    31  	var (
    32  		deploy, deploy2, svcAct, ns *unstructured.Unstructured
    33  	)
    34  
    35  	// Load objects
    36  	var err error
    37  	deploy, err = object.ReadObject(bytes.NewReader(deployBytes))
    38  	assert.NilError(t, err)
    39  	deploy2, err = object.ReadObject(bytes.NewReader(deploy2Bytes))
    40  	assert.NilError(t, err)
    41  	svcAct, err = object.ReadObject(bytes.NewReader(svcActBytes))
    42  	assert.NilError(t, err)
    43  	ns, err = object.ReadObject(bytes.NewReader(nsBytes))
    44  	assert.NilError(t, err)
    45  
    46  	invFrom := func(objs ...*unstructured.Unstructured) *inventory.ResourceInventory {
    47  		return inventory.New(inventory.FromUnstructured(objs...))
    48  	}
    49  
    50  	tcs := map[string]map[string]testCase{
    51  		"SameInventory": {
    52  			"same": {
    53  				SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct, ns)),
    54  				true,
    55  			},
    56  			"empty is same": {
    57  				SameInventory(inventory.New(), inventory.New()),
    58  				true,
    59  			},
    60  			"nil isn't comparable same": {
    61  				SameInventory(nil, inventory.New()),
    62  				false,
    63  			},
    64  			"nil is not the same": {
    65  				SameInventory(nil, nil),
    66  				false,
    67  			},
    68  			"not": {
    69  				SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct, deploy)),
    70  				false,
    71  			},
    72  			"not with different lengths": {
    73  				SameInventory(invFrom(deploy2, svcAct, ns), invFrom(deploy2, svcAct)),
    74  				false,
    75  			},
    76  		},
    77  	}
    78  
    79  	for fn, fnTestCases := range tcs {
    80  		fnTestCases := fnTestCases
    81  		// Run tests so they are structured like:
    82  		// TestConditions/EqualCondition/equal_is_same
    83  		t.Run(fn, func(t *testing.T) {
    84  			t.Parallel()
    85  			for name, tc := range fnTestCases {
    86  				t.Run(name, func(t *testing.T) {
    87  					run(t, tc)
    88  				})
    89  			}
    90  		})
    91  	}
    92  }
    93  

View as plain text