[RICPLT-2527] Fix according to acceptance comments
[ric-plt/e2mgr.git] / E2Manager / handlers / httpmsghandlers / setup_request_handler_test.go
index 2fc1c5c..b27b54e 100644 (file)
@@ -88,7 +88,7 @@ func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2Applicatio
 }
 
 func mockHttpClientAssociateRan(httpClientMock *mocks.HttpClientMock) {
-       data := models.NewRoutingManagerE2TData(E2TAddress, RanName)
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
        marshaled, _ := json.Marshal(data)
        body := bytes.NewBuffer(marshaled)
        url := BaseRMUrl + clients.AssociateRanToE2TInstanceApiSuffix
@@ -169,10 +169,15 @@ func TestSetupNewRanAssociateRanFailure(t *testing.T) {
        readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
        e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
-       nbIdentity := &entities.NbIdentity{InventoryName: RanName}
+       e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
+       setupRequest := &models.SetupRequest{"127.0.0.1", 8080, RanName,}
+       nb, nbIdentity := createInitialNodeInfo(setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        writerMock.On("SaveNodeb", nbIdentity, mock.Anything).Return(nil)
-       _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
-       assert.IsType(t, &common.ResourceNotFoundError{}, err)
+       nb.AssociatedE2TInstanceAddress = E2TAddress
+       nb.ConnectionAttempts = 0
+       writerMock.On("UpdateNodebInfo", nb).Return(nil)
+       _, err := handler.Handle(*setupRequest)
+       assert.IsType(t, &e2managererrors.RnibDbError{}, err)
        writerMock.AssertExpectations(t)
        readerMock.AssertExpectations(t)
        e2tInstancesManagerMock.AssertExpectations(t)
@@ -186,7 +191,7 @@ func TestSetupNewRanSaveNodebFailure(t *testing.T) {
        e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
        e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil)
        setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
-       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf("")))
        _, err := handler.Handle(setupRequest)
        assert.IsType(t, &e2managererrors.RnibDbError{}, err)
@@ -197,13 +202,19 @@ func TestSetupNewRanSetupDbError(t *testing.T) {
        readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(""))
        e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
-       e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil)
+       e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(e2managererrors.NewRnibDbError())
        setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
-       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
-       ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError())
+       updatedNb := *nodebInfo
+       updatedNb.ConnectionAttempts = 0
+       updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+       writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
        _, err := handler.Handle(setupRequest)
-       assert.IsType(t, &common.ResourceNotFoundError{}, err)
+       assert.IsType(t, &e2managererrors.RnibDbError{}, err)
+       readerMock.AssertExpectations(t)
+       writerMock.AssertExpectations(t)
+       ranSetupManagerMock.AssertExpectations(t)
 }
 
 func TestSetupNewRanSetupRmrError(t *testing.T) {
@@ -212,11 +223,15 @@ func TestSetupNewRanSetupRmrError(t *testing.T) {
        e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
        e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil)
        setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
-       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
-       ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError())
+       updatedNb := *nodebInfo
+       updatedNb.ConnectionAttempts = 0
+       updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+       writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+       ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError())
        _, err := handler.Handle(setupRequest)
-       assert.IsType(t, /* &e2managererrors.RmrError{} */ &common.ResourceNotFoundError{}, err)
+       assert.IsType(t, &e2managererrors.RmrError{}, err)
 }
 
 func TestSetupNewRanSetupSuccess(t *testing.T) {
@@ -225,12 +240,15 @@ func TestSetupNewRanSetupSuccess(t *testing.T) {
        e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil)
        e2tInstancesManagerMock.On("AddRanToInstance", RanName, E2TAddress).Return(nil)
        setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,}
-       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, E2TAddress)
+       nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
        writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil)
-       ranSetupManagerMock.On("ExecuteSetup", nodebInfo, entities.ConnectionStatus_CONNECTING).Return(nil)
+       updatedNb := *nodebInfo
+       updatedNb.ConnectionAttempts = 0
+       updatedNb.AssociatedE2TInstanceAddress = E2TAddress
+       writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil)
+       ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil)
        _, err := handler.Handle(setupRequest)
-       //assert.Nil(t, err)
-       assert.IsType(t, /* &e2managererrors.RnibDbError{} */ &common.ResourceNotFoundError{}, err)
+       assert.Nil(t, err)
 }
 
 func TestX2SetupExistingRanShuttingDown(t *testing.T) {
@@ -416,3 +434,25 @@ func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) {
        e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance")
        e2tInstancesManagerMock.AssertNotCalled(t, "AddRanToInstance")
 }
+
+func TestSetupExistingRanWithoutAssocE2TInstanceExecuteRoutingManagerError(t *testing.T) {
+       readerMock, writerMock, handler, _, httpClientMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST)
+       nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST}
+       readerMock.On("GetNodeb", RanName).Return(nb, nil)
+       addresses := []string{E2TAddress}
+       readerMock.On("GetE2TAddresses").Return(addresses, nil)
+       e2tInstance := &entities.E2TInstance{Address: E2TAddress, State: entities.Active}
+       readerMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance}, nil)
+
+       data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)}
+       marshaled, _ := json.Marshal(data)
+       body := bytes.NewBuffer(marshaled)
+       respBody := ioutil.NopCloser(bytes.NewBufferString(""))
+       httpClientMock.On("Post", clients.AssociateRanToE2TInstanceApiSuffix, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil)
+
+       _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,})
+       assert.IsType(t, &e2managererrors.RoutingManagerError{}, err)
+       writerMock.AssertExpectations(t)
+       readerMock.AssertExpectations(t)
+       httpClientMock.AssertExpectations(t)
+}