UT for Get Policy instance Meta data
[ric-plt/a1.git] / a1-go / pkg / resthooks / resthooks_test.go
index deffc4b..a9fcc1e 100644 (file)
@@ -51,13 +51,24 @@ func TestMain(m *testing.M) {
                "a1.policy_type.20000",
                "a1.policy_inst_metadata.1006001.qos",
        }, nil)
-       RMRclient = new(RMRClientMock)
+       rmrSenderInst = new(RmrSenderMock)
        a1.Init()
-       rh = createResthook(sdlInst, RMRclient)
+       rh = createResthook(sdlInst, rmrSenderInst)
        code := m.Run()
        os.Exit(code)
 }
 
+func TestHealth(t *testing.T) {
+       resp := rh.GetA1Health()
+       if resp == true {
+               a1.Logger.Debug("A1 is healthy ")
+               assert.Equal(t, true, resp)
+       } else {
+               a1.Logger.Debug("A1 is unhealthy")
+               assert.Equal(t, false, resp)
+       }
+}
+
 func TestGetAllPolicyType(t *testing.T) {
        resp := rh.GetAllPolicyType()
        assert.Equal(t, 2, len(resp))
@@ -144,7 +155,7 @@ func TestCreatePolicyTypeInstance(t *testing.T) {
        a1.Logger.Debug("metadatainstancekey   : %+v", metadatainstancekey)
        metadatainstancearr := []interface{}{metadatainstancekey, string(metadata)}
        sdlInst.On("Set", "A1m_ns", metadatainstancearr).Return(nil)
-       rmrSenderInst.On("RmrSendToXapp", "httpBodyString").Return(true)
+       rmrSenderInst.On("RmrSendToXapp", "httpBodyString", 20010).Return(true)
 
        errresp := rh.CreatePolicyInstance(policyTypeId, policyInstanceID, instancedata)
 
@@ -287,13 +298,56 @@ func TestDeletePolicyInstance(t *testing.T) {
 
        httpBodyString := `{"operation":"DELETE","payload":"","policy_instance_id":"123456","policy_type_id":"20001"}`
 
-       rmrSenderInst.On("RmrSendToXapp", httpBodyString).Return(true)
+       rmrSenderInst.On("RmrSendToXapp", httpBodyString, 20010).Return(true)
 
        errresp := rh.DeletePolicyInstance(policyTypeId, policyInstanceID)
 
        assert.Nil(t, errresp)
        sdlInst.AssertExpectations(t)
 }
+func TestDataDelivery(t *testing.T) {
+
+       httpBody := `{
+               "job":"1",
+               "payload":"payload"
+               }
+               `
+       var instancedata interface{}
+
+       json.Unmarshal([]byte(httpBody), &instancedata)
+       a1.Logger.Debug("Marshaled data : %+v", (instancedata))
+       httpBodyString := `{"ei_job_id":"1","payload":"payload"}`
+       rmrSenderInst.On("RmrSendToXapp", httpBodyString, 20017).Return(true)
+       errresp := rh.DataDelivery(instancedata)
+
+       assert.Nil(t, errresp)
+       sdlInst.AssertExpectations(t)
+}
+
+func TestGetMetaData(t *testing.T) {
+       var policyTypeId models.PolicyTypeID
+       policyTypeId = 20001
+       var policyInstanceID models.PolicyInstanceID
+       policyInstanceID = "123456"
+       instanceMetadataKey := a1InstanceMetadataPrefix + strconv.FormatInt((int64(policyTypeId)), 10) + "." + string(policyInstanceID)
+       a1.Logger.Debug("key : %+v", instanceMetadataKey)
+
+       var keys [1]string
+       keys[0] = instanceMetadataKey
+
+       policySchemaString := `{
+               "created_at":"2022-11-02 10:30:20",
+               "instance_status":"NOT IN EFFECT"
+               }`
+
+       sdlInst.On("Get", a1MediatorNs, keys[:]).Return(map[string]interface{}{instanceMetadataKey: policySchemaString}, nil)
+
+       resp, errresp := rh.getMetaData(policyTypeId, policyInstanceID)
+
+       assert.Nil(t, errresp)
+       assert.NotNil(t, resp)
+       sdlInst.AssertExpectations(t)
+}
 
 type SdlMock struct {
        mock.Mock
@@ -353,9 +407,15 @@ func (s *SdlMock) SetIf(ns string, key string, oldData, newData interface{}) (bo
        return args.Bool(0), args.Error(1)
 }
 
-func (rmr *RmrSenderMock) RmrSendToXapp(httpBodyString string) bool {
-       args := rmr.MethodCalled("RmrSendToXapp", httpBodyString)
-       return args.Bool(0)
+func (rmr *RmrSenderMock) RmrSendToXapp(httpBodyString string, mtype int) bool {
+       if httpBodyString == `{"blocking_rate":20,"enforce":true,"trigger_threshold":10,"window_length":20}` {
+               args := rmr.MethodCalled("RmrSendToXapp", httpBodyString, mtype)
+               return args.Bool(0)
+       } else if httpBodyString == `{"ei_job_id":"1","payload":"payload"}` {
+               args := rmr.MethodCalled("RmrSendToXapp", httpBodyString, mtype)
+               return args.Bool(0)
+       }
+       return true
 }
 
 func (s *SdlMock) Remove(ns string, keys []string) error {