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  }