github.com/Axway/agent-sdk@v1.1.101/pkg/agent/cache/accessrequest_test.go (about) 1 package cache 2 3 import ( 4 "testing" 5 6 v1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 7 management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1" 8 "github.com/Axway/agent-sdk/pkg/config" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func createAccessRequest(id, name, appName, instanceID, instanceName string) *management.AccessRequest { 13 return &management.AccessRequest{ 14 ResourceMeta: v1.ResourceMeta{ 15 Metadata: v1.Metadata{ 16 ID: id, 17 References: []v1.Reference{ 18 { 19 Group: management.APIServiceInstanceGVK().Group, 20 Kind: management.APIServiceInstanceGVK().Kind, 21 ID: instanceID, 22 Name: instanceName, 23 }, 24 }, 25 }, 26 Name: name, 27 }, 28 Spec: management.AccessRequestSpec{ 29 ManagedApplication: appName, 30 ApiServiceInstance: instanceName, 31 }, 32 } 33 } 34 35 // add access request 36 // get access request by id 37 // get access request by app name and api id 38 // delete access request 39 func TestAccessRequestCache(t *testing.T) { 40 m := NewAgentCacheManager(&config.CentralConfiguration{}, false) 41 assert.NotNil(t, m) 42 43 cachedAccessReq := m.GetAccessRequest("ac1") 44 assert.Nil(t, cachedAccessReq) 45 instance1 := createAPIServiceInstance("inst-1", "testAPI", "") 46 instance2 := createAPIServiceInstance("inst-2", "testAPI", "testStage") 47 instance3 := createAPIServiceInstanceWithVersion("inst-3", "testAPI", "testStage", "testVersion") 48 m.AddAPIServiceInstance(instance1) 49 m.AddAPIServiceInstance(instance2) 50 m.AddAPIServiceInstance(instance3) 51 52 accReq1 := createAccessRequest("ac1", "access-request-1", "app1", "inst-1", "inst-1") 53 ar1ri, _ := accReq1.AsInstance() 54 accReq2 := createAccessRequest("ac2", "access-request-2", "app2", "inst-2", "inst-2") 55 ar2ri, _ := accReq2.AsInstance() 56 accReq3 := createAccessRequest("ac3", "access-request-3", "app3", "inst-3", "inst-3") 57 ar3ri, _ := accReq3.AsInstance() 58 59 m.AddAccessRequest(ar1ri) 60 m.AddAccessRequest(ar2ri) 61 m.AddAccessRequest(ar3ri) 62 63 keys := m.GetAccessRequestCacheKeys() 64 assert.ElementsMatch(t, []string{"ac1", "ac2", "ac3"}, keys) 65 66 cachedAccessReq = m.GetAccessRequest("ac1") 67 assert.Equal(t, ar1ri, cachedAccessReq) 68 69 cachedAccessReq = m.GetAccessRequestByAppAndAPI("app1", "testAPI", "") 70 assert.Equal(t, ar1ri, cachedAccessReq) 71 72 cachedAccessReq = m.GetAccessRequestByAppAndAPI("app2", "testAPI", "testStage") 73 assert.Equal(t, ar2ri, cachedAccessReq) 74 75 cachedAccessReq = m.GetAccessRequestByAppAndAPIStageVersion("app3", "testAPI", "testStage", "testVersion") 76 assert.Equal(t, ar3ri, cachedAccessReq) 77 78 cachedAccessReqs := m.GetAccessRequestsByApp("app1") 79 assert.Len(t, cachedAccessReqs, 1) 80 assert.Equal(t, ar1ri, cachedAccessReqs[0]) 81 82 cachedAccessReqs = m.GetAccessRequestsByApp("app2") 83 assert.Len(t, cachedAccessReqs, 1) 84 assert.Equal(t, ar2ri, cachedAccessReqs[0]) 85 86 cachedAccessReqs = m.GetAccessRequestsByApp("app3") 87 assert.Len(t, cachedAccessReqs, 1) 88 assert.Equal(t, ar3ri, cachedAccessReqs[0]) 89 90 err := m.DeleteAccessRequest("ac1") 91 assert.Nil(t, err) 92 93 cachedAccessReq = m.GetAccessRequest("ac1") 94 assert.Nil(t, cachedAccessReq) 95 96 cachedAccessReq = m.GetAccessRequest("ac2") 97 assert.NotNil(t, cachedAccessReq) 98 99 cachedAccessReq = m.GetAccessRequest("ac3") 100 assert.NotNil(t, cachedAccessReq) 101 102 err = m.DeleteAccessRequest("ac1") 103 assert.NotNil(t, err) 104 }