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  }