github.com/Axway/agent-sdk@v1.1.101/pkg/agent/handler/traceaccessrequest_test.go (about) 1 package handler 2 3 import ( 4 "testing" 5 6 agentcache "github.com/Axway/agent-sdk/pkg/agent/cache" 7 apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 8 management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 9 defs "github.com/Axway/agent-sdk/pkg/apic/definitions" 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 TestTraceAccessRequestHandler_wrong_kind(t *testing.T) { 16 cm := agentcache.NewAgentCacheManager(&config.CentralConfiguration{}, false) 17 c := &mockClient{} 18 handler := NewTraceAccessRequestHandler(cm, c) 19 ri := &apiv1.ResourceInstance{ 20 ResourceMeta: apiv1.ResourceMeta{ 21 GroupVersionKind: management.EnvironmentGVK(), 22 }, 23 } 24 err := handler.Handle(NewEventContext(proto.Event_CREATED, nil, ri.Kind, ri.Name), nil, ri) 25 assert.Nil(t, err) 26 } 27 28 func TestTraceAccessRequestTraceHandler(t *testing.T) { 29 cm := agentcache.NewAgentCacheManager(&config.CentralConfiguration{}, false) 30 c := &mockClient{} 31 handler := NewTraceAccessRequestHandler(cm, c) 32 ar := &management.AccessRequest{ 33 ResourceMeta: apiv1.ResourceMeta{ 34 GroupVersionKind: management.AccessRequestGVK(), 35 Metadata: apiv1.Metadata{ 36 ID: "ar", 37 References: []apiv1.Reference{ 38 { 39 ID: "instanceId", 40 Name: "instance", 41 Group: management.APIServiceInstanceGVK().Group, 42 Kind: management.APIServiceInstanceGVK().Kind, 43 }, 44 }, 45 }, 46 Name: "ar", 47 }, 48 Spec: management.AccessRequestSpec{ 49 ManagedApplication: "app", 50 ApiServiceInstance: "instance", 51 }, 52 References: []interface{}{ 53 management.AccessRequestReferencesSubscription{ 54 Kind: defs.Subscription, 55 Name: "catalog/subscription-name", 56 }, 57 }, 58 } 59 ri, _ := ar.AsInstance() 60 61 // no status 62 err := handler.Handle(NewEventContext(proto.Event_CREATED, nil, ri.Kind, ri.Name), nil, ri) 63 assert.Nil(t, err) 64 assert.Equal(t, []string{}, cm.GetAccessRequestCacheKeys()) 65 66 ar.Status = &apiv1.ResourceStatus{ 67 Level: "Success", 68 } 69 ri, _ = ar.AsInstance() 70 71 inst := &apiv1.ResourceInstance{ 72 ResourceMeta: apiv1.ResourceMeta{ 73 Metadata: apiv1.Metadata{ 74 ID: "instanceId", 75 }, 76 Name: "instance", 77 SubResources: map[string]interface{}{ 78 defs.XAgentDetails: map[string]interface{}{ 79 defs.AttrExternalAPIID: "api", 80 }, 81 }, 82 }, 83 } 84 cm.AddAPIServiceInstance(inst) 85 86 managedApp := &apiv1.ResourceInstance{ 87 ResourceMeta: apiv1.ResourceMeta{ 88 Metadata: apiv1.Metadata{ 89 ID: "app", 90 }, 91 Name: "app", 92 }, 93 } 94 cm.AddManagedApplication(managedApp) 95 96 c.getRI = &apiv1.ResourceInstance{ 97 ResourceMeta: apiv1.ResourceMeta{ 98 Metadata: apiv1.Metadata{ 99 ID: "subscription-id", 100 }, 101 Name: "subscription-name", 102 }, 103 } 104 105 err = handler.Handle(NewEventContext(proto.Event_CREATED, nil, ri.Kind, ri.Name), nil, ri) 106 assert.Nil(t, err) 107 cachedAR := cm.GetAccessRequest("ar") 108 assert.NotNil(t, cachedAR) 109 110 cachedAR = cm.GetAccessRequestByAppAndAPI("app", "api", "") 111 assert.NotNil(t, cachedAR) 112 113 err = handler.Handle(NewEventContext(proto.Event_DELETED, nil, ri.Kind, ri.Name), nil, ri) 114 assert.Nil(t, err) 115 116 cachedAR = cm.GetAccessRequest("ar") 117 assert.Nil(t, cachedAR) 118 119 }