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  }