github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/agentresource_test.go (about) 1 package handler 2 3 import ( 4 "testing" 5 6 "github.com/Axway/agent-sdk/pkg/agent/resource" 7 "github.com/Axway/agent-sdk/pkg/apic" 8 v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 9 catalog "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/catalog/v1alpha1" 10 "github.com/Axway/agent-sdk/pkg/config" 11 "github.com/Axway/agent-sdk/pkg/watchmanager/proto" 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestAgentResourceHandler(t *testing.T) { 16 tests := []struct { 17 name string 18 hasError bool 19 resource *v1.ResourceInstance 20 action proto.Event_Type 21 }{ 22 { 23 name: "should save DiscoveryAgent", 24 hasError: false, 25 action: proto.Event_UPDATED, 26 resource: &v1.ResourceInstance{ 27 ResourceMeta: v1.ResourceMeta{ 28 Name: "name", 29 Title: "title", 30 Metadata: v1.Metadata{ 31 ID: "123", 32 }, 33 GroupVersionKind: v1.GroupVersionKind{ 34 GroupKind: v1.GroupKind{ 35 Kind: discoveryAgent, 36 }, 37 }, 38 }, 39 }, 40 }, 41 { 42 name: "should save TraceabilityAgent", 43 hasError: false, 44 action: proto.Event_UPDATED, 45 resource: &v1.ResourceInstance{ 46 ResourceMeta: v1.ResourceMeta{ 47 Name: "name", 48 Title: "title", 49 Metadata: v1.Metadata{ 50 ID: "123", 51 }, 52 GroupVersionKind: v1.GroupVersionKind{ 53 GroupKind: v1.GroupKind{ 54 Kind: traceabilityAgent, 55 }, 56 }, 57 }, 58 }, 59 }, 60 { 61 name: "should save GovernanceAgent", 62 hasError: false, 63 action: proto.Event_UPDATED, 64 resource: &v1.ResourceInstance{ 65 ResourceMeta: v1.ResourceMeta{ 66 Name: "name", 67 Title: "title", 68 Metadata: v1.Metadata{ 69 ID: "123", 70 }, 71 GroupVersionKind: v1.GroupVersionKind{ 72 GroupKind: v1.GroupKind{ 73 Kind: governanceAgent, 74 }, 75 }, 76 }, 77 }, 78 }, 79 { 80 name: "should ignore processing agent resource", 81 hasError: true, 82 action: proto.Event_UPDATED, 83 resource: &v1.ResourceInstance{ 84 ResourceMeta: v1.ResourceMeta{ 85 Name: "name", 86 Title: "title", 87 Metadata: v1.Metadata{ 88 ID: "123", 89 }, 90 GroupVersionKind: v1.GroupVersionKind{ 91 GroupKind: v1.GroupKind{ 92 Kind: catalog.CategoryGVK().Kind, 93 }, 94 }, 95 }, 96 }, 97 }, 98 } 99 100 for _, tc := range tests { 101 t.Run(tc.name, func(t *testing.T) { 102 resourceManager := &mockResourceManager{} 103 104 handler := NewAgentResourceHandler(resourceManager) 105 106 err := handler.Handle(NewEventContext(tc.action, nil, tc.resource.Kind, tc.resource.Name), nil, tc.resource) 107 if tc.hasError { 108 assert.Nil(t, err) 109 assert.Nil(t, resourceManager.resource) 110 } else { 111 assert.Nil(t, err) 112 assert.Equal(t, resourceManager.resource, tc.resource) 113 } 114 }) 115 } 116 117 } 118 119 type EventSyncCache interface { 120 RebuildCache() 121 } 122 123 type mockResourceManager struct { 124 resource *v1.ResourceInstance 125 rebuildCache resource.EventSyncCache 126 } 127 128 func (m *mockResourceManager) SetAgentResource(agentResource *v1.ResourceInstance) { 129 m.resource = agentResource 130 } 131 132 func (m *mockResourceManager) GetAgentResource() *v1.ResourceInstance { 133 return m.resource 134 } 135 136 func (m *mockResourceManager) OnConfigChange(_ config.CentralConfig, _ apic.Client) {} 137 138 func (m *mockResourceManager) FetchAgentResource() error { return nil } 139 140 func (m *mockResourceManager) UpdateAgentStatus(_, _, _ string) error { return nil } 141 142 func (m *mockResourceManager) GetAgentResourceVersion() (string, error) { 143 return "", nil 144 } 145 146 func (m *mockResourceManager) AddUpdateAgentDetails(key, value string) {} 147 148 func (m *mockResourceManager) SetRebuildCacheFunc(rebuildCache resource.EventSyncCache) { 149 m.rebuildCache = rebuildCache 150 }