Automation fixes
[ric-plt/e2mgr.git] / E2Manager / controllers / controller_test.go
index b869252..fe833cf 100644 (file)
@@ -22,6 +22,7 @@ import (
        "e2mgr/configuration"
        "e2mgr/e2managererrors"
        "e2mgr/logger"
+       "e2mgr/managers"
        "e2mgr/mocks"
        "e2mgr/models"
        "e2mgr/providers/httpmsghandlerprovider"
@@ -33,7 +34,7 @@ import (
        "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
        "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
        "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
-       "github.com/julienschmidt/httprouter"
+       "github.com/gorilla/mux"
        "github.com/stretchr/testify/assert"
        "github.com/stretchr/testify/mock"
        "io"
@@ -44,6 +45,34 @@ import (
        "testing"
 )
 
+func TestX2SetupSuccess(t *testing.T) {
+/*     log := initLog(t)
+
+       rmrMessengerMock := &mocks.RmrMessengerMock{}
+       readerMock := &mocks.RnibReaderMock{}
+       readerProvider := func() reader.RNibReader {
+               return readerMock
+       }
+       writerMock := &mocks.RnibWriterMock{}
+       writerProvider := func() rNibWriter.RNibWriter {
+               return writerMock
+       }
+       config := configuration.ParseConfiguration()
+
+       header := http.Header{}
+       header.Set("Content-Type", "application/json")
+
+       writer := httptest.NewRecorder()
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
+
+       httpRequest := tests.GetHttpRequest()
+       httpRequest.Header = header
+       controller.X2SetupHandler(writer, httpRequest)
+
+       assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)*/
+}
+
 func TestShutdownHandlerRnibError(t *testing.T) {
        log := initLog(t)
        config := configuration.ParseConfiguration()
@@ -58,18 +87,19 @@ func TestShutdownHandlerRnibError(t *testing.T) {
                return writerMock
        }
 
-       rnibErr := &common.RNibError{}
+       rnibErr := &common.ResourceNotFoundError{}
        var nbIdentityList []*entities.NbIdentity
        readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibErr)
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
-       controller.ShutdownHandler(writer, tests.GetHttpRequest(), nil)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
+       controller.ShutdownHandler(writer, tests.GetHttpRequest())
 
        var errorResponse = parseJsonRequest(t, writer.Body)
 
        assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
-       assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Err.Code)
+       assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Code)
 }
 
 func TestHeaderValidationFailed(t *testing.T) {
@@ -87,19 +117,19 @@ func TestHeaderValidationFailed(t *testing.T) {
        }
 
        writer := httptest.NewRecorder()
-
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
 
        header := &http.Header{}
 
-       controller.handleRequest(writer, header, httpmsghandlerprovider.ShutdownRequest, nil, true, http.StatusNoContent)
+       controller.handleRequest(writer, header, httpmsghandlerprovider.ShutdownRequest, nil, true)
 
        var errorResponse = parseJsonRequest(t, writer.Body)
        err := e2managererrors.NewHeaderValidationError()
 
        assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode)
-       assert.Equal(t, errorResponse.Code, err.Err.Code)
-       assert.Equal(t, errorResponse.Message, err.Err.Message)
+       assert.Equal(t, errorResponse.Code, err.Code)
+       assert.Equal(t, errorResponse.Message, err.Message)
 }
 
 func TestShutdownStatusNoContent(t *testing.T) {
@@ -116,13 +146,14 @@ func TestShutdownStatusNoContent(t *testing.T) {
        }
        config := configuration.ParseConfiguration()
 
-       var rnibError common.IRNibError
+       var rnibError error
        nbIdentityList := []*entities.NbIdentity{}
        readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibError)
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
-       controller.ShutdownHandler(writer, tests.GetHttpRequest(), nil)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
+       controller.ShutdownHandler(writer, tests.GetHttpRequest())
 
        assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)
 }
@@ -142,15 +173,16 @@ func TestHandleInternalError(t *testing.T) {
        }
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
        err := e2managererrors.NewInternalError()
 
        controller.handleErrorResponse(err, writer)
        var errorResponse = parseJsonRequest(t, writer.Body)
 
        assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode)
-       assert.Equal(t, errorResponse.Code, err.Err.Code)
-       assert.Equal(t, errorResponse.Message, err.Err.Message)
+       assert.Equal(t, errorResponse.Code, err.Code)
+       assert.Equal(t, errorResponse.Message, err.Message)
 }
 
 func TestHandleCommandAlreadyInProgressError(t *testing.T) {
@@ -167,15 +199,16 @@ func TestHandleCommandAlreadyInProgressError(t *testing.T) {
                return writerMock
        }
        writer := httptest.NewRecorder()
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
        err := e2managererrors.NewCommandAlreadyInProgressError()
 
        controller.handleErrorResponse(err, writer)
        var errorResponse = parseJsonRequest(t, writer.Body)
 
        assert.Equal(t, http.StatusMethodNotAllowed, writer.Result().StatusCode)
-       assert.Equal(t, errorResponse.Code, err.Err.Code)
-       assert.Equal(t, errorResponse.Message, err.Err.Message)
+       assert.Equal(t, errorResponse.Code, err.Code)
+       assert.Equal(t, errorResponse.Message, err.Message)
 }
 
 func TestValidateHeaders(t *testing.T) {
@@ -191,8 +224,8 @@ func TestValidateHeaders(t *testing.T) {
                return writerMock
        }
        config := configuration.ParseConfiguration()
-
-       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, getRmrService(rmrMessengerMock, log), readerProvider, writerProvider, config, ranSetupManager)
 
        header := http.Header{}
        header.Set("Content-Type", "application/json")
@@ -244,7 +277,8 @@ func TestX2ResetHandleSuccessfulRequestedCause(t *testing.T) {
        rmrService := getRmrService(rmrMessengerMock, log)
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, rmrService, readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, rmrService, readerProvider, writerProvider, config, ranSetupManager)
 
        var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
        readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
@@ -253,9 +287,9 @@ func TestX2ResetHandleSuccessfulRequestedCause(t *testing.T) {
        b := new(bytes.Buffer)
        _ = json.NewEncoder(b).Encode(data4Req)
        req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b)
+       req = mux.SetURLVars(req, map[string]string{"ranName": ranName})
 
-       param := httprouter.Param{Key: "ranName", Value: ranName}
-       controller.X2ResetHandler(writer, req, []httprouter.Param{param})
+       controller.X2ResetHandler(writer, req)
        assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)
 
 }
@@ -284,7 +318,8 @@ func TestX2ResetHandleSuccessfulRequestedDefault(t *testing.T) {
        rmrService := getRmrService(rmrMessengerMock, log)
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, rmrService, readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, rmrService, readerProvider, writerProvider, config, ranSetupManager)
 
        var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED}
        readerMock.On("GetNodeb", ranName).Return(nodeb, nil)
@@ -292,9 +327,9 @@ func TestX2ResetHandleSuccessfulRequestedDefault(t *testing.T) {
        // no body
        b := new(bytes.Buffer)
        req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b)
+       req = mux.SetURLVars(req, map[string]string{"ranName": ranName})
 
-       param := httprouter.Param{Key: "ranName", Value: ranName}
-       controller.X2ResetHandler(writer, req, []httprouter.Param{param})
+       controller.X2ResetHandler(writer, req)
        assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode)
 
 }
@@ -318,19 +353,16 @@ func TestX2ResetHandleFailureInvalidBody(t *testing.T) {
        rmrService := getRmrService(rmrMessengerMock, log)
 
        writer := httptest.NewRecorder()
-       controller := NewController(log, rmrService, readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, rmrService, readerProvider, writerProvider, config, ranSetupManager)
 
        // Invalid json: attribute name without quotes (should be "cause":).
        b := strings.NewReader("{cause:\"protocol:transfer-syntax-error\"")
        req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b)
+       req = mux.SetURLVars(req, map[string]string{"ranName": ranName})
 
-       param := httprouter.Param{Key: "ranName", Value: ranName}
-       controller.X2ResetHandler(writer, req, []httprouter.Param{param})
+       controller.X2ResetHandler(writer, req)
        assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode)
-
-       _, ok := rmrService.E2sessions[ranName]
-       assert.False(t, ok)
-
 }
 
 func TestHandleErrorResponse(t *testing.T) {
@@ -348,8 +380,8 @@ func TestHandleErrorResponse(t *testing.T) {
 
        config := configuration.ParseConfiguration()
        rmrService := getRmrService(rmrMessengerMock, log)
-
-       controller := NewController(log, rmrService, readerProvider, writerProvider, config)
+       ranSetupManager := managers.NewRanSetupManager(log, getRmrService(rmrMessengerMock, log), rNibWriter.GetRNibWriter)
+       controller := NewController(log, rmrService, readerProvider, writerProvider, config, ranSetupManager)
 
        writer := httptest.NewRecorder()
        controller.handleErrorResponse(e2managererrors.NewRnibDbError(), writer)