github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/watchresource_test.go (about) 1 package handler 2 3 import ( 4 "testing" 5 6 agentcache "github.com/Axway/agent-sdk/pkg/agent/cache" 7 v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 8 mv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 9 "github.com/Axway/agent-sdk/pkg/config" 10 "github.com/Axway/agent-sdk/pkg/watchmanager/proto" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 type mockWatchTopicFeatures struct { 15 filterList []config.ResourceFilter 16 } 17 18 func (m *mockWatchTopicFeatures) GetWatchResourceFilters() []config.ResourceFilter { 19 return m.filterList 20 } 21 22 func createWatchResource(group, kind, id, name string) *v1.ResourceInstance { 23 return &v1.ResourceInstance{ 24 ResourceMeta: v1.ResourceMeta{ 25 GroupVersionKind: v1.GroupVersionKind{ 26 GroupKind: v1.GroupKind{ 27 Group: group, 28 Kind: kind, 29 }, 30 }, 31 Metadata: v1.Metadata{ 32 ID: id, 33 }, 34 Name: name, 35 }, 36 } 37 } 38 39 func TestWatchResourceHandler(t *testing.T) { 40 features := &mockWatchTopicFeatures{filterList: []config.ResourceFilter{ 41 { 42 Group: mv1.CredentialGVK().Group, 43 Kind: mv1.CredentialGVK().Kind, 44 Name: "*", 45 IsCachedResource: true, 46 EventTypes: []config.ResourceEventType{"created"}, 47 Scope: &config.ResourceScope{ 48 Kind: mv1.EnvironmentGVK().Kind, 49 Name: "test-env", 50 }, 51 }, 52 }} 53 54 cm := agentcache.NewAgentCacheManager(&config.CentralConfiguration{}, false) 55 handler := NewWatchResourceHandler(cm, features) 56 57 res := createWatchResource(mv1.SecretGVK().Group, mv1.SecretGVK().Kind, "secret-id-1", "secret-name-1") 58 // not cached resource 59 err := handler.Handle(NewEventContext(proto.Event_CREATED, nil, res.Kind, res.Name), nil, res) 60 assert.Nil(t, err) 61 assert.Equal(t, []string{}, cm.GetWatchResourceCacheKeys(mv1.SecretGVK().Group, mv1.SecretGVK().Kind)) 62 cachedRes := cm.GetWatchResourceByID(mv1.SecretGVK().Group, mv1.SecretGVK().Kind, "credential-id-1") 63 assert.Empty(t, cachedRes) 64 65 res = createWatchResource(mv1.CredentialGVK().Group, mv1.CredentialGVK().Kind, "credential-id-1", "credential-name-1") 66 err = handler.Handle(NewEventContext(proto.Event_CREATED, nil, res.Kind, res.Name), nil, res) 67 assert.Nil(t, err) 68 cachedGroupKindKeys := cm.GetWatchResourceCacheKeys(mv1.CredentialGVK().Group, mv1.CredentialGVK().Kind) 69 assert.NotEqual(t, []string{}, cachedGroupKindKeys) 70 cachedRes = cm.GetWatchResourceByID(mv1.CredentialGVK().Group, mv1.CredentialGVK().Kind, "credential-id-1") 71 assert.NotEmpty(t, cachedRes) 72 73 cachedRes = cm.GetWatchResourceByName(mv1.CredentialGVK().Group, mv1.CredentialGVK().Kind, "credential-name-1") 74 assert.NotNil(t, cachedRes) 75 76 err = handler.Handle(NewEventContext(proto.Event_DELETED, nil, res.Kind, res.Name), nil, res) 77 assert.Nil(t, err) 78 79 cachedRes = cm.GetWatchResourceByKey(cachedGroupKindKeys[0]) 80 assert.Nil(t, cachedRes) 81 }