github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/lib/queueinformer/config_test.go (about) 1 package queueinformer 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 corev1 "k8s.io/api/core/v1" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 "k8s.io/client-go/tools/cache" 10 11 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/kubestate" 12 ) 13 14 func TestDefaultKeyFunc(t *testing.T) { 15 tests := []struct { 16 description string 17 obj interface{} 18 expectedKey string 19 expectedCreated bool 20 }{ 21 { 22 description: "String/Created", 23 obj: "a-string-key", 24 expectedKey: "a-string-key", 25 expectedCreated: true, 26 }, 27 { 28 description: "ExplicitKey/Created", 29 obj: cache.ExplicitKey("an-explicit-key"), 30 expectedKey: "an-explicit-key", 31 expectedCreated: true, 32 }, 33 { 34 description: "Meta/Created", 35 obj: &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "a-pod"}}, 36 expectedKey: "default/a-pod", 37 expectedCreated: true, 38 }, 39 { 40 description: "Meta/NonNamespaced/Created", 41 obj: &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "a-namespace"}}, 42 expectedKey: "a-namespace", 43 expectedCreated: true, 44 }, 45 { 46 description: "ResourceEvent/String/Created", 47 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, "a-string-key"), 48 expectedKey: "a-string-key", 49 expectedCreated: true, 50 }, 51 { 52 description: "ResourceEvent/ExplicitKey/Created", 53 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, cache.ExplicitKey("an-explicit-key")), 54 expectedKey: "an-explicit-key", 55 expectedCreated: true, 56 }, 57 { 58 description: "ResourceEvent/Meta/Created", 59 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "a-pod"}}), 60 expectedKey: "default/a-pod", 61 expectedCreated: true, 62 }, 63 { 64 description: "ResourceEvent/Meta/NonNamespaced/Created", 65 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: "a-namespace"}}), 66 expectedKey: "a-namespace", 67 expectedCreated: true, 68 }, 69 { 70 description: "ResourceEvent/ResourceEvent/ExplicitKey/Created", 71 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, kubestate.NewResourceEvent(kubestate.ResourceAdded, cache.ExplicitKey("an-explicit-key"))), 72 expectedKey: "an-explicit-key", 73 expectedCreated: true, 74 }, 75 { 76 description: "ResourceEvent/ResourceEvent/Meta/Created", 77 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, kubestate.NewResourceEvent(kubestate.ResourceAdded, &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "a-pod"}})), 78 expectedKey: "default/a-pod", 79 expectedCreated: true, 80 }, 81 { 82 description: "Arbitrary/NotCreated", 83 obj: struct{}{}, 84 expectedKey: "", 85 expectedCreated: false, 86 }, 87 { 88 description: "ResourceEvent/Arbitrary/NotCreated", 89 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, struct{}{}), 90 expectedKey: "", 91 expectedCreated: false, 92 }, 93 { 94 description: "ResourceEvent/ResourceEvent/Arbitrary/NotCreated", 95 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, kubestate.NewResourceEvent(kubestate.ResourceAdded, struct{}{})), 96 expectedKey: "", 97 expectedCreated: false, 98 }, 99 { 100 description: "ResourceEvent/ResourceEvent/ResourceEvent/String/NotCreated", 101 obj: kubestate.NewResourceEvent(kubestate.ResourceAdded, kubestate.NewResourceEvent(kubestate.ResourceAdded, kubestate.NewResourceEvent(kubestate.ResourceAdded, &corev1.Pod{ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "a-pod"}}))), 102 expectedKey: "", 103 expectedCreated: false, 104 }, 105 } 106 107 for _, tt := range tests { 108 t.Run(tt.description, func(t *testing.T) { 109 key, created := defaultKeyFunc(tt.obj) 110 require.Equal(t, tt.expectedKey, key) 111 require.Equal(t, tt.expectedCreated, created) 112 }) 113 } 114 }