Further UT improvements
[ric-plt/xapp-frame.git] / pkg / xapp / subscription_test.go
index 39a5d93..af8938c 100755 (executable)
@@ -7,20 +7,24 @@
 package xapp
 
 import (
+       "bytes"
        "fmt"
+       "net/http"
+       "net/http/httptest"
+       "testing"
+       "time"
+
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientmodel"
        "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
        "github.com/stretchr/testify/assert"
-       "testing"
-       "time"
 )
 
 var (
        suite *testing.T
 
        meid                = "gnb123456"
-       reqId               = int64(1)
-       seqId               = int64(1)
+       xappEventInstanceId = int64(1)
+       eventInstanceId     = int64(1)
        funId               = int64(1)
        actionId            = int64(1)
        actionType          = "report"
@@ -55,23 +59,19 @@ func TestSubscriptionQueryHandling(t *testing.T) {
 
 func TestSubscriptionHandling(t *testing.T) {
        subscriptionParams := clientmodel.SubscriptionParams{
+               SubscriptionID: "",
                Meid:           &meid,
                RANFunctionID:  &funId,
                ClientEndpoint: &clientEndpoint,
                SubscriptionDetails: clientmodel.SubscriptionDetailsList{
                        &clientmodel.SubscriptionDetail{
-                               RequestorID: &reqId,
-                               InstanceID:  &seqId,
-                               EventTriggers: &clientmodel.EventTriggerDefinition{
-                                       OctetString: "1234",
-                               },
+                               XappEventInstanceID: &eventInstanceId,
+                               EventTriggers:       clientmodel.EventTriggerDefinition{00, 0x11, 0x12, 0x13, 0x00, 0x21, 0x22, 0x24, 0x1B, 0x80},
                                ActionToBeSetupList: clientmodel.ActionsToBeSetup{
                                        &clientmodel.ActionToBeSetup{
-                                               ActionID:   &actionId,
-                                               ActionType: &actionType,
-                                               ActionDefinition: &clientmodel.ActionDefinition{
-                                                       OctetString: "5678",
-                                               },
+                                               ActionID:         &actionId,
+                                               ActionType:       &actionType,
+                                               ActionDefinition: clientmodel.ActionDefinition{5, 6, 7, 8},
                                                SubsequentAction: &clientmodel.SubsequentAction{
                                                        SubsequentActionType: &subsequestActioType,
                                                        TimeToWait:           &timeToWait,
@@ -84,8 +84,8 @@ func TestSubscriptionHandling(t *testing.T) {
 
        Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
                assert.Equal(t, len(resp.SubscriptionInstances), 1)
-               assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
-               assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
+               assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+               assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
        })
 
        _, err := Subscription.Subscribe(&subscriptionParams)
@@ -94,24 +94,19 @@ func TestSubscriptionHandling(t *testing.T) {
 
 func TestSubscriptionWithClientProvidedIdHandling(t *testing.T) {
        subscriptionParams := clientmodel.SubscriptionParams{
+               SubscriptionID: "myxapp",
                Meid:           &meid,
                RANFunctionID:  &funId,
                ClientEndpoint: &clientEndpoint,
-               SubscriptionID: "myxapp",
                SubscriptionDetails: clientmodel.SubscriptionDetailsList{
                        &clientmodel.SubscriptionDetail{
-                               RequestorID: &reqId,
-                               InstanceID:  &seqId,
-                               EventTriggers: &clientmodel.EventTriggerDefinition{
-                                       OctetString: "1234",
-                               },
+                               XappEventInstanceID: &eventInstanceId,
+                               EventTriggers:       clientmodel.EventTriggerDefinition{00, 0x11, 0x12, 0x13, 0x00, 0x21, 0x22, 0x24, 0x1B, 0x80},
                                ActionToBeSetupList: clientmodel.ActionsToBeSetup{
                                        &clientmodel.ActionToBeSetup{
-                                               ActionID:   &actionId,
-                                               ActionType: &actionType,
-                                               ActionDefinition: &clientmodel.ActionDefinition{
-                                                       OctetString: "5678",
-                                               },
+                                               ActionID:         &actionId,
+                                               ActionType:       &actionType,
+                                               ActionDefinition: clientmodel.ActionDefinition{5, 6, 7, 8},
                                                SubsequentAction: &clientmodel.SubsequentAction{
                                                        SubsequentActionType: &subsequestActioType,
                                                        TimeToWait:           &timeToWait,
@@ -124,8 +119,8 @@ func TestSubscriptionWithClientProvidedIdHandling(t *testing.T) {
 
        Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
                assert.Equal(t, len(resp.SubscriptionInstances), 1)
-               assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
-               assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
+               assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+               assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
        })
 
        _, err := Subscription.Subscribe(&subscriptionParams)
@@ -138,18 +133,40 @@ func TestSubscriptionDeleteHandling(t *testing.T) {
        assert.Equal(t, err, nil)
 }
 
+func TestResponseHandler(t *testing.T) {
+       Subscription.SetResponseCB(SubscriptionRespHandler)
+
+       payload := []byte(`{"SubscriptionInstances":[{"tXappEventInstanceID": 1}]`)
+       req, err := http.NewRequest("POST", "/ric/v1/subscriptions/response", bytes.NewBuffer(payload))
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       rr := httptest.NewRecorder()
+       handler := http.HandlerFunc(Subscription.ResponseHandler)
+       handler.ServeHTTP(rr, req)
+
+       if status := rr.Code; status != http.StatusOK {
+               t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
+       }
+       time.Sleep(time.Duration(2) * time.Second)
+}
+
 // Helper functions
+func SubscriptionRespHandler(resp *clientmodel.SubscriptionResponse) {
+}
+
 func processSubscriptions(subscriptionId string) {
        // Generate requestorId, instanceId
-       reqId := int64(11)
-       instanceId := int64(22)
+       xappInstanceId := int64(11)
+       e2InstanceId := int64(22)
 
        resp := &models.SubscriptionResponse{
                SubscriptionID: &subscriptionId,
                SubscriptionInstances: []*models.SubscriptionInstance{
                        {
-                               RequestorID: &reqId,
-                               InstanceID:  &instanceId,
+                               XappEventInstanceID: &xappInstanceId,
+                               E2EventInstanceID:   &e2InstanceId,
                        },
                },
        }
@@ -167,15 +184,15 @@ func subscriptionHandler(params interface{}) (*models.SubscriptionResponse, erro
        assert.Equal(suite, clientEndpoint.HTTPPort, p.ClientEndpoint.HTTPPort)
        assert.Equal(suite, clientEndpoint.RMRPort, p.ClientEndpoint.RMRPort)
 
-       assert.Equal(suite, reqId, *p.SubscriptionDetails[0].RequestorID)
-       assert.Equal(suite, seqId, *p.SubscriptionDetails[0].InstanceID)
-       assert.Equal(suite, "1234", p.SubscriptionDetails[0].EventTriggers.OctetString)
+       assert.Equal(suite, xappEventInstanceId, *p.SubscriptionDetails[0].XappEventInstanceID)
+       et := []int64{00, 0x11, 0x12, 0x13, 0x00, 0x21, 0x22, 0x24, 0x1B, 0x80}
+       assert.ElementsMatch(suite, et, p.SubscriptionDetails[0].EventTriggers)
        assert.Equal(suite, actionId, *p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionID)
        assert.Equal(suite, actionType, *p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionType)
 
        assert.Equal(suite, subsequestActioType, *p.SubscriptionDetails[0].ActionToBeSetupList[0].SubsequentAction.SubsequentActionType)
        assert.Equal(suite, timeToWait, *p.SubscriptionDetails[0].ActionToBeSetupList[0].SubsequentAction.TimeToWait)
-       assert.Equal(suite, "5678", p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionDefinition.OctetString)
+       assert.ElementsMatch(suite, []int64{5, 6, 7, 8}, p.SubscriptionDetails[0].ActionToBeSetupList[0].ActionDefinition)
 
        // Generate a unique subscriptionId
        subscriptionId = fmt.Sprintf("%s-%s", meid, clientEndpoint.Host)