X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=E2Manager%2Fcontrollers%2Fnodeb_controller_test.go;h=7ee44d74edad16de7f230a501fbe0f13ba6e942c;hb=refs%2Fchanges%2F55%2F4355%2F1;hp=c63d36b16e3218aee12761bb3fdb27e7435ac3d0;hpb=13fff61e6062b16507c6419d3db7a293c50f6225;p=ric-plt%2Fe2mgr.git diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index c63d36b..7ee44d7 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -54,6 +54,7 @@ import ( const ( RanName = "test" AssociatedE2TInstanceAddress = "10.0.2.15:38000" + CorruptedJson = "{\"errorCode\":401,\"errorMessage\":\"corrupted json\"}" ValidationFailureJson = "{\"errorCode\":402,\"errorMessage\":\"Validation error\"}" ResourceNotFoundJson = "{\"errorCode\":404,\"errorMessage\":\"Resource not found\"}" NodebExistsJson = "{\"errorCode\":406,\"errorMessage\":\"Nodeb already exists\"}" @@ -66,6 +67,7 @@ var ( ServedNrCellInformationRequiredFields = []string{"cellId", "choiceNrMode", "nrMode", "servedPlmns"} NrNeighbourInformationRequiredFields = []string{"nrCgi", "choiceNrMode", "nrMode"} AddEnbRequestRequiredFields = []string{"ranName", "enb", "globalNbId"} + GlobalIdRequiredFields = []string{"plmnId", "nbId"} EnbRequiredFields = []string{"enbType", "servedCells"} ServedCellRequiredFields = []string{"broadcastPlmns", "cellId", "choiceEutraMode", "eutraMode", "tac"} ) @@ -203,12 +205,9 @@ func buildServedCell(propToOmit string) map[string]interface{} { func getAddEnbRequest(propToOmit string) map[string]interface{} { ret := map[string]interface{}{ - "ranName": RanName, - "globalNbId": map[string]interface{}{ - "plmnId": "whatever", - "nbId": "whatever2", - }, - "enb": buildEnb(""), + "ranName": RanName, + "globalNbId": buildGlobalNbId(""), + "enb": buildEnb(""), } if len(propToOmit) != 0 { @@ -232,6 +231,19 @@ func buildEnb(propToOmit string) map[string]interface{} { return ret } +func buildGlobalNbId(propToOmit string) map[string]interface{} { + ret := map[string]interface{}{ + "plmnId": "whatever", + "nbId": "whatever2", + } + + if len(propToOmit) != 0 { + delete(ret, propToOmit) + } + + return ret +} + func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock) { log := initLog(t) config := configuration.ParseConfiguration() @@ -250,7 +262,9 @@ func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, ranAlarmService := &mocks.RanAlarmServiceMock{} ranConnectStatusChangeManager := managers.NewRanConnectStatusChangeManager(log, rnibDataService, ranListManager, ranAlarmService) nodebValidator := managers.NewNodebValidator() - handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator) + updateEnbManager := managers.NewUpdateEnbManager(log, rnibDataService, nodebValidator) + + handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient, ranConnectStatusChangeManager, nodebValidator, updateEnbManager) controller := NewNodebController(log, handlerProvider) return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager } @@ -396,6 +410,7 @@ func activateControllerAddEnbMocks(context *controllerAddEnbTestContext, readerM RanName: addEnbRequest.RanName, Ip: addEnbRequest.Ip, Port: addEnbRequest.Port, + NodeType: entities.Node_ENB, GlobalNbId: addEnbRequest.GlobalNbId, Configuration: &entities.NodebInfo_Enb{Enb: addEnbRequest.Enb}, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, @@ -767,6 +782,38 @@ func TestControllerAddEnbMissingRequiredRequestProps(t *testing.T) { } } +func TestControllerAddEnbInvalidRequest(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + + // Invalid json: attribute name without quotes (should be "cause":). + invalidJson := strings.NewReader("{ranName:\"whatever\"") + req, _ := http.NewRequest(http.MethodPost, AddEnbUrl, invalidJson) + + controller.AddEnb(writer, req) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + bodyBytes, _ := ioutil.ReadAll(writer.Body) + assert.Equal(t, CorruptedJson, string(bodyBytes)) + +} + +func TestControllerAddEnbMissingRequiredGlobalNbIdProps(t *testing.T) { + + r := getAddEnbRequest("") + + for _, v := range GlobalIdRequiredFields { + r["globalNbId"] = buildGlobalNbId(v) + + context := controllerAddEnbTestContext{ + requestBody: r, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerAddEnbTestExecuter(t, &context) + } +} + func TestControllerAddEnbMissingRequiredEnbProps(t *testing.T) { r := getAddEnbRequest("") @@ -830,7 +877,7 @@ func TestControllerAddEnbSuccess(t *testing.T) { }, }, expectedStatusCode: http.StatusCreated, - expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"DISCONNECTED\",\"globalNbId\":{\"plmnId\":\"whatever\",\"nbId\":\"whatever2\"},\"enb\":{\"enbType\":\"MACRO_ENB\",\"servedCells\":[{\"pci\":1,\"cellId\":\"whatever\",\"tac\":\"whatever3\",\"broadcastPlmns\":[\"whatever\"],\"choiceEutraMode\":{\"fdd\":{}},\"eutraMode\":\"FDD\"}]}}", + expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"DISCONNECTED\",\"globalNbId\":{\"plmnId\":\"whatever\",\"nbId\":\"whatever2\"},\"nodeType\":\"ENB\",\"enb\":{\"enbType\":\"MACRO_ENB\",\"servedCells\":[{\"pci\":1,\"cellId\":\"whatever\",\"tac\":\"whatever3\",\"broadcastPlmns\":[\"whatever\"],\"choiceEutraMode\":{\"fdd\":{}},\"eutraMode\":\"FDD\"}]}}", } controllerAddEnbTestExecuter(t, &context) @@ -904,7 +951,7 @@ func TestControllerGetNodebIdListSuccess(t *testing.T) { func TestControllerGetNodebIdListEmptySuccess(t *testing.T) { var rnibError error - nodebIdList := []*entities.NbIdentity{} + var nodebIdList []*entities.NbIdentity context := controllerGetNodebIdListTestContext{ nodebIdList: nodebIdList,