From: Shuky Har-Noy Date: Wed, 17 Jun 2020 13:08:49 +0000 (+0000) Subject: Merge "[RIC-395] - E2M new REST API - E2M Set Parameters - Automation + Decoder" X-Git-Tag: R5_RC~71 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=67b5aa5e2f37db23fb7d1c086e9c540a61f43917;hp=76709204dfd7968156b5fa81190f146a8991812d;p=ric-plt%2Fe2mgr.git Merge "[RIC-395] - E2M new REST API - E2M Set Parameters - Automation + Decoder" --- diff --git a/Automation/Tests/SetGeneralConfiguration/set_general_configuration.robot b/Automation/Tests/SetGeneralConfiguration/set_general_configuration.robot index da7356b..c6f74c1 100644 --- a/Automation/Tests/SetGeneralConfiguration/set_general_configuration.robot +++ b/Automation/Tests/SetGeneralConfiguration/set_general_configuration.robot @@ -23,8 +23,10 @@ *** Settings *** Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot Resource ../Resource/resource.robot Resource ../Resource/Keywords.robot +Library ../Scripts/find_error_script.py Library OperatingSystem Library REST ${url} @@ -33,16 +35,16 @@ Library REST ${url} *** Test Cases *** -prepare logs for tests - Remove log files - Save logs - Set General Configuration Sleep 2s Set General Configuration request Integer response status 200 - String response body enableRic false + Boolean response body enableRic false + +prepare logs for tests + Remove log files + Save logs -Verify e2mgr logs - Third retry to retrieve from db - ${result} find_error_script.find_error ${EXECDIR} ${e2mgr_log_filename} ${save_general_configuration} +Verify e2mgr logs - Save General Configuration + ${result} find_error_script.find_error ${EXECDIR} ${e2mgr_log_filename} ${save_general_configuration} Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/E2Manager/controllers/nodeb_controller.go b/E2Manager/controllers/nodeb_controller.go index 45fdb3f..5bc2a2c 100644 --- a/E2Manager/controllers/nodeb_controller.go +++ b/E2Manager/controllers/nodeb_controller.go @@ -101,7 +101,7 @@ func (c *NodebController) SetGeneralConfiguration(writer http.ResponseWriter, r request := models.GeneralConfigurationRequest{} - if !c.extractJsonBody(r, &request, writer){ + if !c.extractJsonBodyDisallowUnknownFields(r, &request, writer){ return } c.handleRequest(writer, &r.Header, httpmsghandlerprovider.SetGeneralConfigurationRequest, request, false) @@ -139,6 +139,21 @@ func (c *NodebController) extractRequestBodyToProto(r *http.Request, pb proto.Me return true } +func (c *NodebController) extractJsonBodyDisallowUnknownFields(r *http.Request, request models.Request, writer http.ResponseWriter) bool { + defer r.Body.Close() + + decoder := json.NewDecoder(r.Body) + decoder.DisallowUnknownFields() + + if err := decoder.Decode(&request); err != nil { + c.logger.Errorf("[Client -> E2 Manager] #NodebController.extractJsonBody - unable to extract json body - error: %s", err) + c.handleErrorResponse(e2managererrors.NewInvalidJsonError(), writer) + return false + } + + return true +} + func (c *NodebController) extractJsonBody(r *http.Request, request models.Request, writer http.ResponseWriter) bool { defer r.Body.Close() body, err := ioutil.ReadAll(io.LimitReader(r.Body, LimitRequest)) diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go index 5541517..d68ac51 100644 --- a/E2Manager/controllers/nodeb_controller_test.go +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -223,7 +223,7 @@ func TestSetGeneralConfigurationInvalidJson(t *testing.T) { writer := httptest.NewRecorder() - httpRequest, _ := http.NewRequest("PUT", "https://localhost:3800/v1/nodeb/parameters", strings.NewReader("{}{}")) + httpRequest, _ := http.NewRequest("PUT", "https://localhost:3800/v1/nodeb/parameters", strings.NewReader("{\"enableRic\":false, \"someValue\":false}")) controller.SetGeneralConfiguration(writer, httpRequest)