Loading docs/meepctl/meepctl_lint.md +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ Valid Targets: * meep-iot * meep-sss * meep-iot-mgr * meep-sss-mgr * meep-wais * meep-watchdog * meep-webhook Loading go-apps/meep-iot/server/meep-iot.go +3 −8 Original line number Diff line number Diff line Loading @@ -932,20 +932,15 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesPOST: ", r) // Read JSON input stream provided in the Request, and stores it in the bodyBytes as bytes var registeredDevicesRegisteredDeviceIdBody RegisteredDevicesRegisteredDeviceIdBody var deviceInfo DeviceInfo bodyBytes, _ := ioutil.ReadAll(r.Body) // Unmarshal function to converts a JSON-formatted string into a SubscriptionCommon struct and store it in extractSubType err := json.Unmarshal(bodyBytes, ®isteredDevicesRegisteredDeviceIdBody) err := json.Unmarshal(bodyBytes, &deviceInfo) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } else if registeredDevicesRegisteredDeviceIdBody.DeviceInfo == nil { err = errors.New("Failed to decode body") errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } deviceInfo := *registeredDevicesRegisteredDeviceIdBody.DeviceInfo log.Info("registereddevicesPOST: ", deviceInfo) // Sanity checks Loading Loading @@ -981,7 +976,7 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { } log.Info("registereddevicesPOST: jsonResponse: ", string(jsonResponse)) w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusCreated) fmt.Fprint(w, string(jsonResponse)) } Loading go-apps/meep-iot/server/meep-iot_test.go +557 −24 Original line number Diff line number Diff line Loading @@ -656,7 +656,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) rr, err := sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) if err != nil { t.Fatalf(err.Error()) } Loading @@ -667,7 +667,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validateIotPlatformInfo(resp, iotPlatformInfo) { if !validate_iot_platform_info(resp, iotPlatformInfo) { t.Errorf("handler returned unexpected body: got %v want %v", rr, expected_iotPlatformInfo_str) } Loading @@ -675,7 +675,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(resp.IotPlatformId) _ = delete_registered_iot_platforms(resp.IotPlatformId) terminateScenario() } Loading Loading @@ -761,7 +761,7 @@ func TestRegisterediotplatformsPOSTFail_1(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to Security missing field") } Loading Loading @@ -855,7 +855,7 @@ func TestRegisterediotplatformsPOSTFail_2(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to ImplSpecificInfo missing field") } Loading Loading @@ -949,7 +949,7 @@ func TestRegisterediotplatformsPOSTFail_3(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to TransportType missing field") } Loading Loading @@ -980,7 +980,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -993,7 +993,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, nil, nil, http.StatusOK, RegisterediotplatformsGET) rr, err := sendRequest(http.MethodGet, "/registered_iot_platforms", nil, nil, nil, nil, http.StatusOK, RegisterediotplatformsGET) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1007,7 +1007,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { if len(resp) != 1 { t.Fatalf("Invalid response length") } if !validateIotPlatformInfo(resp[0], expected_iotPlatformInfo) { if !validate_iot_platform_info(resp[0], expected_iotPlatformInfo) { t.Errorf("Response mismatch") } Loading @@ -1015,7 +1015,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(expected_iotPlatformInfo.IotPlatformId) _ = delete_registered_iot_platforms(expected_iotPlatformInfo.IotPlatformId) terminateScenario() } Loading @@ -1039,7 +1039,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -1058,7 +1058,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, vars, nil, nil, http.StatusOK, RegisterediotplatformsByIdGET) rr, err := sendRequest(http.MethodGet, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusOK, RegisterediotplatformsByIdGET) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1069,7 +1069,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validateIotPlatformInfo(resp, expected_iotPlatformInfo) { if !validate_iot_platform_info(resp, expected_iotPlatformInfo) { t.Errorf("Response mismatch") } Loading @@ -1077,7 +1077,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(expected_iotPlatformInfo.IotPlatformId) _ = delete_registered_iot_platforms(expected_iotPlatformInfo.IotPlatformId) terminateScenario() } Loading @@ -1101,7 +1101,7 @@ func TestRegisterediotplatformsDelete(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -1120,7 +1120,7 @@ func TestRegisterediotplatformsDelete(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) _, err = sendRequest(http.MethodDelete, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1132,7 +1132,348 @@ func TestRegisterediotplatformsDelete(t *testing.T) { terminateScenario() } func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { func TestRegistereddevicesPOST(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_requestedIotPlatformId := iotPlatformInfo.IotPlatformId expected_deviceMetadata := make([]KeyValuePair, 2) expected_deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } expected_deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } var expected_device = DeviceInfo{ DeviceMetadata: expected_deviceMetadata, RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, Imsi: "12345", Enabled: true, } expected_device_str, err := json.Marshal(expected_device) if err != nil { t.Fatalf(err.Error()) } fmt.Println("expected_device: ", string(expected_device_str)) /****************************** * request body section ******************************/ var device = DeviceInfo{ RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, Enabled: true, } fmt.Println("Create a device: ", device) body, err := json.Marshal(device) if err != nil { t.Fatalf(err.Error()) } fmt.Println("body: ", string(body)) /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validate_device_info(resp, expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesDELETE(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request vars section ******************************/ vars := make(map[string]string) vars["registeredDeviceId"] = device.DeviceId /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegistereddevicesByIdDELETE) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesGET(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, nil, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp []DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesGET_withFiltering(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_devices, err := create_set_of_devices(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } // Filter on RequestedUserTransportId and its complement queryParam := make(map[string]string) queryParam["filter"] = "(eq," + expected_devices[2].RequestedUserTransportId + ", requestedUserTransportId)" rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp []DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device[2]) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesByIdGET(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request vars section ******************************/ vars := make(map[string]string) vars["registeredDeviceId"] = expected_device.DeviceId /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, vars, nil, nil, http.StatusOK, RegistereddevicesByIdGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validate_device_info(resp, expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func create_registered_iot_platforms() (resp IotPlatformInfo, err error) { var mb_transportInfo TransportType mb_transportInfo = MB_TOPIC_BASED var security = SecurityInfo{} Loading Loading @@ -1191,7 +1532,7 @@ func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { } fmt.Println("body: ", string(body)) rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) rr, err := sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) if err != nil { return resp, err } Loading @@ -1204,10 +1545,10 @@ func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { return resp, nil } func deleteRegisterediotplatforms(iotPlatformId string) (err error) { func delete_registered_iot_platforms(iotPlatformId string) (err error) { vars := make(map[string]string) vars["registeredIotPlatformId"] = iotPlatformId _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) _, err = sendRequest(http.MethodDelete, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) if err != nil { return err } Loading @@ -1215,9 +1556,9 @@ func deleteRegisterediotplatforms(iotPlatformId string) (err error) { return nil } func validateIotPlatformInfo(received IotPlatformInfo, expected IotPlatformInfo) bool { fmt.Println("validateIotPlatformInfo: received: ", received) fmt.Println("validateIotPlatformInfo: expected: ", expected) func validate_iot_platform_info(received IotPlatformInfo, expected IotPlatformInfo) bool { fmt.Println("validate_iot_platform_info: received: ", received) fmt.Println("validate_iot_platform_info: expected: ", expected) if received.IotPlatformId != expected.IotPlatformId { fmt.Println("received.IotPlatformId != IotPlatformId") Loading @@ -1241,7 +1582,199 @@ func validateIotPlatformInfo(received IotPlatformInfo, expected IotPlatformInfo) return false } fmt.Println("validateIotPlatformInfo: succeed") fmt.Println("validate_iot_platform_info: succeed") return true } func create_device(iotPlatformInfo IotPlatformInfo) (device DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } device = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: requestedIotPlatformId, Imsi: "12345", Enabled: true, } body, err := json.Marshal(device) if err != nil { return device, err } /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { return device, err } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { return device, err } return device, nil } func create_set_device(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } devices = make([]DeviceInfo, 3) devices[0] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "0", Gpsi: "12345", Enabled: true, } deviceMetadata[0].Key = "Key11" devices[1] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "1", Msisdn: "345", Enabled: true, } deviceMetadata[0].Key = "Key12" devices[2] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "2", RequestedUserTransportId: "987", Imsi: "12345", Enabled: true, } /****************************** * request execution section ******************************/ resp_devices := devices // Same format for i, val := range devices { body, err := json.Marshal(val) if err != nil { return nil, err } rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { return nil, err } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { return nil, err } resp_devices[i] = resp } // End of 'for' statement return resp_devices, nil } func delete_device(deviceId string) (err error) { vars := make(map[string]string) vars["registeredDeviceId"] = deviceId _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegistereddevicesByIdDELETE) return err } func validate_device_info(expected_device DeviceInfo, received_deviceResp DeviceInfo) bool { if expected_device.DeviceId != received_deviceResp.DeviceId { fmt.Println("received_deviceResp.DeviceId != DeviceId") return false } if expected_device.Enabled != received_deviceResp.Enabled { fmt.Println("received_deviceResp.Enabled != Enabled") return false } if expected_device.DeviceAuthenticationInfo != received_deviceResp.DeviceAuthenticationInfo { fmt.Println("received_deviceResp.DeviceAuthenticationInfo != DeviceAuthenticationInfo") return false } if expected_device.Gpsi != received_deviceResp.Gpsi { fmt.Println("received_deviceResp.Gpsi != Gpsi") return false } if expected_device.Pei != received_deviceResp.Pei { fmt.Println("received_deviceResp.Pei != Pei") return false } if expected_device.Supi != received_deviceResp.Supi { fmt.Println("received_deviceResp.Supi != Supi") return false } if expected_device.Msisdn != received_deviceResp.Msisdn { fmt.Println("received_deviceResp.Msisdn != Msisdn") return false } if expected_device.Imei != received_deviceResp.Imei { fmt.Println("received_deviceResp.Imei != Imei") return false } if expected_device.Imsi != received_deviceResp.Imsi { fmt.Println("received_deviceResp.Imsi != Imsi") return false } if expected_device.Iccid != received_deviceResp.Iccid { fmt.Println("received_deviceResp.Iccid != Iccid") return false } if expected_device.RequestedIotPlatformId != received_deviceResp.RequestedIotPlatformId { fmt.Println("received_deviceResp.RequestedIotPlatformId != RequestedIotPlatformId") return false } if expected_device.RequestedUserTransportId != received_deviceResp.RequestedUserTransportId { fmt.Println("received_deviceResp.RequestedUserTransportId != RequestedUserTransportId") return false } if expected_device.ClientCertificate != received_deviceResp.ClientCertificate { fmt.Println("received_deviceResp.ClientCertificate != ClientCertificate") return false } if len(expected_device.DeviceMetadata) != len(received_deviceResp.DeviceMetadata) { fmt.Println("received_deviceResp.DeviceMetadata != DeviceMetadata") return false } else { for i, val := range expected_device.DeviceMetadata { if val.Key != received_deviceResp.DeviceMetadata[i].Key { fmt.Println("item #", i, ":received_deviceResp.DeviceMetadata.Key != DeviceMetadata.Key") return false } if val.Value != received_deviceResp.DeviceMetadata[i].Value { fmt.Println("item #", i, ":received_deviceResp.DeviceMetadata.Value != DeviceMetadata.Value") return false } } // End of 'for' statement } if len(expected_device.RequestedMecTrafficRule) != len(received_deviceResp.RequestedMecTrafficRule) { fmt.Println("received_deviceResp.RequestedMecTrafficRule != RequestedMecTrafficRule") return false } else { // for i, val := range expected_device.RequestedMecTrafficRule { // } // End of 'for' statement // TODO To be continued //RequestedMecTrafficRule []TrafficRuleDescriptor } // TODO To be continued return true } Loading Loading
docs/meepctl/meepctl_lint.md +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ Valid Targets: * meep-iot * meep-sss * meep-iot-mgr * meep-sss-mgr * meep-wais * meep-watchdog * meep-webhook Loading
go-apps/meep-iot/server/meep-iot.go +3 −8 Original line number Diff line number Diff line Loading @@ -932,20 +932,15 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { log.Debug(">>> registereddevicesPOST: ", r) // Read JSON input stream provided in the Request, and stores it in the bodyBytes as bytes var registeredDevicesRegisteredDeviceIdBody RegisteredDevicesRegisteredDeviceIdBody var deviceInfo DeviceInfo bodyBytes, _ := ioutil.ReadAll(r.Body) // Unmarshal function to converts a JSON-formatted string into a SubscriptionCommon struct and store it in extractSubType err := json.Unmarshal(bodyBytes, ®isteredDevicesRegisteredDeviceIdBody) err := json.Unmarshal(bodyBytes, &deviceInfo) if err != nil { log.Error(err.Error()) errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } else if registeredDevicesRegisteredDeviceIdBody.DeviceInfo == nil { err = errors.New("Failed to decode body") errHandlerProblemDetails(w, err.Error(), http.StatusInternalServerError) return } deviceInfo := *registeredDevicesRegisteredDeviceIdBody.DeviceInfo log.Info("registereddevicesPOST: ", deviceInfo) // Sanity checks Loading Loading @@ -981,7 +976,7 @@ func registereddevicesPOST(w http.ResponseWriter, r *http.Request) { } log.Info("registereddevicesPOST: jsonResponse: ", string(jsonResponse)) w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusCreated) fmt.Fprint(w, string(jsonResponse)) } Loading
go-apps/meep-iot/server/meep-iot_test.go +557 −24 Original line number Diff line number Diff line Loading @@ -656,7 +656,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) rr, err := sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) if err != nil { t.Fatalf(err.Error()) } Loading @@ -667,7 +667,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validateIotPlatformInfo(resp, iotPlatformInfo) { if !validate_iot_platform_info(resp, iotPlatformInfo) { t.Errorf("handler returned unexpected body: got %v want %v", rr, expected_iotPlatformInfo_str) } Loading @@ -675,7 +675,7 @@ func TestRegisterediotplatformsPOST(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(resp.IotPlatformId) _ = delete_registered_iot_platforms(resp.IotPlatformId) terminateScenario() } Loading Loading @@ -761,7 +761,7 @@ func TestRegisterediotplatformsPOSTFail_1(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to Security missing field") } Loading Loading @@ -855,7 +855,7 @@ func TestRegisterediotplatformsPOSTFail_2(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to ImplSpecificInfo missing field") } Loading Loading @@ -949,7 +949,7 @@ func TestRegisterediotplatformsPOSTFail_3(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) _, err = sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusBadRequest, RegisterediotplatformsPOST) if err != nil { t.Fatalf("Shall received 400 Bad Request due to TransportType missing field") } Loading Loading @@ -980,7 +980,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -993,7 +993,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, nil, nil, http.StatusOK, RegisterediotplatformsGET) rr, err := sendRequest(http.MethodGet, "/registered_iot_platforms", nil, nil, nil, nil, http.StatusOK, RegisterediotplatformsGET) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1007,7 +1007,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { if len(resp) != 1 { t.Fatalf("Invalid response length") } if !validateIotPlatformInfo(resp[0], expected_iotPlatformInfo) { if !validate_iot_platform_info(resp[0], expected_iotPlatformInfo) { t.Errorf("Response mismatch") } Loading @@ -1015,7 +1015,7 @@ func TestRegisterediotplatformsGET(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(expected_iotPlatformInfo.IotPlatformId) _ = delete_registered_iot_platforms(expected_iotPlatformInfo.IotPlatformId) terminateScenario() } Loading @@ -1039,7 +1039,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -1058,7 +1058,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, vars, nil, nil, http.StatusOK, RegisterediotplatformsByIdGET) rr, err := sendRequest(http.MethodGet, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusOK, RegisterediotplatformsByIdGET) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1069,7 +1069,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validateIotPlatformInfo(resp, expected_iotPlatformInfo) { if !validate_iot_platform_info(resp, expected_iotPlatformInfo) { t.Errorf("Response mismatch") } Loading @@ -1077,7 +1077,7 @@ func TestRegisterediotplatformsByIdGET(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = deleteRegisterediotplatforms(expected_iotPlatformInfo.IotPlatformId) _ = delete_registered_iot_platforms(expected_iotPlatformInfo.IotPlatformId) terminateScenario() } Loading @@ -1101,7 +1101,7 @@ func TestRegisterediotplatformsDelete(t *testing.T) { /****************************** * expected response section ******************************/ expected_iotPlatformInfo, err := createRegisterediotplatforms() expected_iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } Loading @@ -1120,7 +1120,7 @@ func TestRegisterediotplatformsDelete(t *testing.T) { /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) _, err = sendRequest(http.MethodDelete, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) if err != nil { t.Fatalf(err.Error()) } Loading @@ -1132,7 +1132,348 @@ func TestRegisterediotplatformsDelete(t *testing.T) { terminateScenario() } func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { func TestRegistereddevicesPOST(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_requestedIotPlatformId := iotPlatformInfo.IotPlatformId expected_deviceMetadata := make([]KeyValuePair, 2) expected_deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } expected_deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } var expected_device = DeviceInfo{ DeviceMetadata: expected_deviceMetadata, RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, Imsi: "12345", Enabled: true, } expected_device_str, err := json.Marshal(expected_device) if err != nil { t.Fatalf(err.Error()) } fmt.Println("expected_device: ", string(expected_device_str)) /****************************** * request body section ******************************/ var device = DeviceInfo{ RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, Enabled: true, } fmt.Println("Create a device: ", device) body, err := json.Marshal(device) if err != nil { t.Fatalf(err.Error()) } fmt.Println("body: ", string(body)) /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validate_device_info(resp, expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesDELETE(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request vars section ******************************/ vars := make(map[string]string) vars["registeredDeviceId"] = device.DeviceId /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegistereddevicesByIdDELETE) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesGET(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, nil, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp []DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesGET_withFiltering(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_devices, err := create_set_of_devices(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } // Filter on RequestedUserTransportId and its complement queryParam := make(map[string]string) queryParam["filter"] = "(eq," + expected_devices[2].RequestedUserTransportId + ", requestedUserTransportId)" rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp []DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device[2]) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func TestRegistereddevicesByIdGET(t *testing.T) { fmt.Println("--- ", t.Name()) log.MeepTextLogInit(t.Name()) initializeVars() err := Init() if err != nil { t.Fatalf("Error initializing test basic procedure") } err = Run() if err != nil { t.Fatalf("Error running test basic procedure") } fmt.Println("Set a scenario") initialiseScenario(testScenario) time.Sleep(1000 * time.Millisecond) updateScenario("mobility1") iotPlatformInfo, err := create_registered_iot_platforms() if err != nil { t.Fatalf("unexpected error: %v", err) } fmt.Println("iotPlatformInfo: ", iotPlatformInfo) /****************************** * expected response section ******************************/ expected_device, err := create_device(iotPlatformInfo) if err != nil { t.Fatalf("unexpected error: %v", err) } /****************************** * request vars section ******************************/ vars := make(map[string]string) vars["registeredDeviceId"] = expected_device.DeviceId /****************************** * request body section ******************************/ /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, vars, nil, nil, http.StatusOK, RegistereddevicesByIdGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if !validate_device_info(resp, expected_device) { t.Errorf("Response mismatch") } fmt.Println("Received expected response") /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } func create_registered_iot_platforms() (resp IotPlatformInfo, err error) { var mb_transportInfo TransportType mb_transportInfo = MB_TOPIC_BASED var security = SecurityInfo{} Loading Loading @@ -1191,7 +1532,7 @@ func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { } fmt.Println("body: ", string(body)) rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) rr, err := sendRequest(http.MethodPost, "/registered_iot_platforms", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegisterediotplatformsPOST) if err != nil { return resp, err } Loading @@ -1204,10 +1545,10 @@ func createRegisterediotplatforms() (resp IotPlatformInfo, err error) { return resp, nil } func deleteRegisterediotplatforms(iotPlatformId string) (err error) { func delete_registered_iot_platforms(iotPlatformId string) (err error) { vars := make(map[string]string) vars["registeredIotPlatformId"] = iotPlatformId _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) _, err = sendRequest(http.MethodDelete, "/registered_iot_platforms", nil, vars, nil, nil, http.StatusNoContent, RegisterediotplatformsByIdDELETE) if err != nil { return err } Loading @@ -1215,9 +1556,9 @@ func deleteRegisterediotplatforms(iotPlatformId string) (err error) { return nil } func validateIotPlatformInfo(received IotPlatformInfo, expected IotPlatformInfo) bool { fmt.Println("validateIotPlatformInfo: received: ", received) fmt.Println("validateIotPlatformInfo: expected: ", expected) func validate_iot_platform_info(received IotPlatformInfo, expected IotPlatformInfo) bool { fmt.Println("validate_iot_platform_info: received: ", received) fmt.Println("validate_iot_platform_info: expected: ", expected) if received.IotPlatformId != expected.IotPlatformId { fmt.Println("received.IotPlatformId != IotPlatformId") Loading @@ -1241,7 +1582,199 @@ func validateIotPlatformInfo(received IotPlatformInfo, expected IotPlatformInfo) return false } fmt.Println("validateIotPlatformInfo: succeed") fmt.Println("validate_iot_platform_info: succeed") return true } func create_device(iotPlatformInfo IotPlatformInfo) (device DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } device = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: requestedIotPlatformId, Imsi: "12345", Enabled: true, } body, err := json.Marshal(device) if err != nil { return device, err } /****************************** * request execution section ******************************/ rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { return device, err } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { return device, err } return device, nil } func create_set_device(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } devices = make([]DeviceInfo, 3) devices[0] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "0", Gpsi: "12345", Enabled: true, } deviceMetadata[0].Key = "Key11" devices[1] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "1", Msisdn: "345", Enabled: true, } deviceMetadata[0].Key = "Key12" devices[2] = DeviceInfo{ DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: "2", RequestedUserTransportId: "987", Imsi: "12345", Enabled: true, } /****************************** * request execution section ******************************/ resp_devices := devices // Same format for i, val := range devices { body, err := json.Marshal(val) if err != nil { return nil, err } rr, err := sendRequest(http.MethodPost, "/registered_devices", bytes.NewBuffer(body), nil, nil, nil, http.StatusCreated, RegistereddevicesPOST) if err != nil { return nil, err } fmt.Println("Respone: rr: ", rr) var resp DeviceInfo err = json.Unmarshal([]byte(rr), &resp) if err != nil { return nil, err } resp_devices[i] = resp } // End of 'for' statement return resp_devices, nil } func delete_device(deviceId string) (err error) { vars := make(map[string]string) vars["registeredDeviceId"] = deviceId _, err = sendRequest(http.MethodDelete, "/registered_devices", nil, vars, nil, nil, http.StatusNoContent, RegistereddevicesByIdDELETE) return err } func validate_device_info(expected_device DeviceInfo, received_deviceResp DeviceInfo) bool { if expected_device.DeviceId != received_deviceResp.DeviceId { fmt.Println("received_deviceResp.DeviceId != DeviceId") return false } if expected_device.Enabled != received_deviceResp.Enabled { fmt.Println("received_deviceResp.Enabled != Enabled") return false } if expected_device.DeviceAuthenticationInfo != received_deviceResp.DeviceAuthenticationInfo { fmt.Println("received_deviceResp.DeviceAuthenticationInfo != DeviceAuthenticationInfo") return false } if expected_device.Gpsi != received_deviceResp.Gpsi { fmt.Println("received_deviceResp.Gpsi != Gpsi") return false } if expected_device.Pei != received_deviceResp.Pei { fmt.Println("received_deviceResp.Pei != Pei") return false } if expected_device.Supi != received_deviceResp.Supi { fmt.Println("received_deviceResp.Supi != Supi") return false } if expected_device.Msisdn != received_deviceResp.Msisdn { fmt.Println("received_deviceResp.Msisdn != Msisdn") return false } if expected_device.Imei != received_deviceResp.Imei { fmt.Println("received_deviceResp.Imei != Imei") return false } if expected_device.Imsi != received_deviceResp.Imsi { fmt.Println("received_deviceResp.Imsi != Imsi") return false } if expected_device.Iccid != received_deviceResp.Iccid { fmt.Println("received_deviceResp.Iccid != Iccid") return false } if expected_device.RequestedIotPlatformId != received_deviceResp.RequestedIotPlatformId { fmt.Println("received_deviceResp.RequestedIotPlatformId != RequestedIotPlatformId") return false } if expected_device.RequestedUserTransportId != received_deviceResp.RequestedUserTransportId { fmt.Println("received_deviceResp.RequestedUserTransportId != RequestedUserTransportId") return false } if expected_device.ClientCertificate != received_deviceResp.ClientCertificate { fmt.Println("received_deviceResp.ClientCertificate != ClientCertificate") return false } if len(expected_device.DeviceMetadata) != len(received_deviceResp.DeviceMetadata) { fmt.Println("received_deviceResp.DeviceMetadata != DeviceMetadata") return false } else { for i, val := range expected_device.DeviceMetadata { if val.Key != received_deviceResp.DeviceMetadata[i].Key { fmt.Println("item #", i, ":received_deviceResp.DeviceMetadata.Key != DeviceMetadata.Key") return false } if val.Value != received_deviceResp.DeviceMetadata[i].Value { fmt.Println("item #", i, ":received_deviceResp.DeviceMetadata.Value != DeviceMetadata.Value") return false } } // End of 'for' statement } if len(expected_device.RequestedMecTrafficRule) != len(received_deviceResp.RequestedMecTrafficRule) { fmt.Println("received_deviceResp.RequestedMecTrafficRule != RequestedMecTrafficRule") return false } else { // for i, val := range expected_device.RequestedMecTrafficRule { // } // End of 'for' statement // TODO To be continued //RequestedMecTrafficRule []TrafficRuleDescriptor } // TODO To be continued return true } Loading