Improve unit test coverage
[ric-plt/e2mgr.git] / E2Manager / clients / routing_manager_client_test.go
index 2d02cfd..686733e 100644 (file)
 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
 //  platform project (RICP).
 
-
 package clients
 
 import (
        "bytes"
        "e2mgr/configuration"
+       "e2mgr/e2managererrors"
        "e2mgr/logger"
        "e2mgr/mocks"
        "e2mgr/models"
@@ -35,9 +35,9 @@ import (
 )
 
 const E2TAddress = "10.0.2.15:38000"
+const E2TAddress2 = "10.0.2.15:38001"
 const RanName = "test1"
 
-
 func initRoutingManagerClientTest(t *testing.T) (*RoutingManagerClient, *mocks.HttpClientMock, *configuration.Configuration) {
        logger := initLog(t)
        config := &configuration.Configuration{}
@@ -47,6 +47,44 @@ func initRoutingManagerClientTest(t *testing.T) (*RoutingManagerClient, *mocks.H
        return rmClient, httpClientMock, config
 }
 
+func TestDeleteE2TInstanceSuccess(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil)
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + "e2t"
+       respBody := ioutil.NopCloser(bytes.NewBufferString(""))
+       httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusOK, Body: respBody}, nil)
+       err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"})
+       assert.Nil(t, err)
+}
+
+func TestDeleteE2TInstanceFailure(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil)
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + "e2t"
+       respBody := ioutil.NopCloser(bytes.NewBufferString(""))
+       httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
+       err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"})
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
+}
+
+func TestDeleteE2TInstanceDeleteFailure(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil)
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + "e2t"
+       httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{}, errors.New("error"))
+       err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"})
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
+}
+
 func TestAddE2TInstanceSuccess(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
@@ -69,7 +107,7 @@ func TestAddE2TInstanceHttpPostFailure(t *testing.T) {
        url := config.RoutingManager.BaseUrl + "e2t"
        httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error"))
        err := rmClient.AddE2TInstance(E2TAddress)
-       assert.NotNil(t, err)
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
 }
 
 func TestAddE2TInstanceFailure(t *testing.T) {
@@ -80,7 +118,7 @@ func TestAddE2TInstanceFailure(t *testing.T) {
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + "e2t"
        respBody := ioutil.NopCloser(bytes.NewBufferString(""))
-       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body:respBody}, nil)
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
        err := rmClient.AddE2TInstance(E2TAddress)
        assert.NotNil(t, err)
 }
@@ -88,7 +126,7 @@ func TestAddE2TInstanceFailure(t *testing.T) {
 func TestAssociateRanToE2TInstance_Success(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix
@@ -101,32 +139,32 @@ func TestAssociateRanToE2TInstance_Success(t *testing.T) {
 func TestAssociateRanToE2TInstance_RoutingManagerError(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix
        httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error"))
        err := rmClient.AssociateRanToE2TInstance(E2TAddress, RanName)
-       assert.NotNil(t, err)
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
 }
 
 func TestAssociateRanToE2TInstance_RoutingManager_400(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix
        respBody := ioutil.NopCloser(bytes.NewBufferString(""))
-       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body:respBody}, nil)
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
        err := rmClient.AssociateRanToE2TInstance(E2TAddress, RanName)
-       assert.NotNil(t, err)
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
 }
 
 func TestDissociateRanE2TInstance_Success(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
@@ -139,26 +177,73 @@ func TestDissociateRanE2TInstance_Success(t *testing.T) {
 func TestDissociateRanE2TInstance_RoutingManagerError(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
        httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error"))
        err := rmClient.DissociateRanE2TInstance(E2TAddress, RanName)
-       assert.NotNil(t, err)
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
 }
 
 func TestDissociateRanE2TInstance_RoutingManager_400(t *testing.T) {
        rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
 
-       data := models.NewRoutingManagerE2TData(E2TAddress,RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
        respBody := ioutil.NopCloser(bytes.NewBufferString(""))
-       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body:respBody}, nil)
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
        err := rmClient.DissociateRanE2TInstance(E2TAddress, RanName)
-       assert.NotNil(t, err)
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
+}
+
+func TestDissociateAllRans_Success(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.RoutingManagerE2TDataList{
+               models.NewRoutingManagerE2TData(E2TAddress),
+               models.NewRoutingManagerE2TData(E2TAddress2),
+       }
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
+       respBody := ioutil.NopCloser(bytes.NewBufferString(""))
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil)
+       err := rmClient.DissociateAllRans([]string{E2TAddress, E2TAddress2})
+       assert.Nil(t, err)
+}
+
+func TestDissociateAllRans_RoutingManagerError(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.RoutingManagerE2TDataList{
+               models.NewRoutingManagerE2TData(E2TAddress),
+               models.NewRoutingManagerE2TData(E2TAddress2),
+       }
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error"))
+       err := rmClient.DissociateAllRans([]string{E2TAddress, E2TAddress2})
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
+}
+
+func TestDissociateAllRans_RoutingManager_400(t *testing.T) {
+       rmClient, httpClientMock, config := initRoutingManagerClientTest(t)
+
+       data := models.RoutingManagerE2TDataList{
+               models.NewRoutingManagerE2TData(E2TAddress),
+               models.NewRoutingManagerE2TData(E2TAddress2),
+       }
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix
+       respBody := ioutil.NopCloser(bytes.NewBufferString(""))
+       httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
+       err := rmClient.DissociateAllRans([]string{E2TAddress, E2TAddress2})
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
 }
 
 // TODO: extract to test_utils