diff --git a/test/cmocka/icwmp_datamodel_interface_unit_test.c b/test/cmocka/icwmp_datamodel_interface_unit_test.c index af0e7b4..1da8ab5 100644 --- a/test/cmocka/icwmp_datamodel_interface_unit_test.c +++ b/test/cmocka/icwmp_datamodel_interface_unit_test.c @@ -27,6 +27,7 @@ static LIST_HEAD(list_set_param_value); static LIST_HEAD(faults_array); static LIST_HEAD(parameters_list); +static LIST_HEAD(xml_param_list); static int dm_iface_unit_tests_init(void **state) { @@ -41,6 +42,7 @@ static int dm_iface_unit_tests_clean(void **state) { cwmp_free_all_list_param_fault(&faults_array); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); cwmp_session_exit(); clean_cwmp_session_structure(); FREE(cwmp_main); @@ -97,6 +99,20 @@ static void dm_get_parameter_values_test(void **state) cwmp_free_all_dm_parameter_list(¶meters_list); } +static void add_param_to_xml_param_list(const char *param, const char *value, const char *type, struct list_head *xml_list) +{ + assert_non_null(xml_list); + + struct xml_list_data *xml_data = calloc(1, sizeof(struct xml_list_data)); + assert_non_null(xml_data); + + xml_data->param_name = strdup(param); + xml_data->param_value = strdup(value); + xml_data->param_type = type ? strdup(type) : NULL; + xml_data->notification = 0; + list_add(&(xml_data->list), xml_list); +} + static void dm_set_multiple_parameter_values_test(void **state) { int fault = 0; @@ -108,23 +124,32 @@ static void dm_set_multiple_parameter_values_test(void **state) /* * Test of one valid parameter */ - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.Alias", "wifi_alias_1", NULL, 0, false); - fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); - assert_int_equal(fault, 0); - icwmp_restart_services(RELOAD_END_SESSION, true, false); - cwmp_free_all_dm_parameter_list(&list_set_param_value); + add_param_to_xml_param_list("Device.WiFi.SSID.1.Alias", "wifi_alias_1", NULL, &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); - add_dm_parameter_to_list(&list_set_param_value, "Device.ManagementServer.Username", "iopsys_user", NULL, 0, false); fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); assert_int_equal(fault, 0); icwmp_restart_services(RELOAD_END_SESSION, true, false); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); + + add_param_to_xml_param_list("Device.ManagementServer.Username", "iopsys_user", NULL, &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); + assert_int_equal(fault, 0); + icwmp_restart_services(RELOAD_END_SESSION, true, false); + cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); + fault = 0; /* * Test of non valid parameter path */ - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.Alis", "wifi_alias_1", NULL, 0, false); + add_param_to_xml_param_list("Device.WiFi.SSID.1.Alis", "wifi_alias_1", NULL, &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); assert_non_null(fault); list_for_each_entry (param_fault, &faults_array, list) { @@ -137,6 +162,7 @@ static void dm_set_multiple_parameter_values_test(void **state) assert_non_null(fault_name); icwmp_restart_services(RELOAD_END_SESSION, false, false); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); cwmp_free_all_list_param_fault(&faults_array); fault_code = 0; fault_name = NULL; @@ -146,7 +172,9 @@ static void dm_set_multiple_parameter_values_test(void **state) /* * Test of non writable, valid parameter path */ - add_dm_parameter_to_list(&list_set_param_value, "Device.DeviceInfo.UpTime", "1234", NULL, 0, false); + add_param_to_xml_param_list("Device.DeviceInfo.UpTime", "1234", NULL, &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + fault = cwmp_set_multi_parameters_value(&list_set_param_value,&faults_array); assert_int_not_equal(fault, 0); list_for_each_entry (param_fault, &faults_array, list) { @@ -159,6 +187,7 @@ static void dm_set_multiple_parameter_values_test(void **state) assert_non_null(fault_name); icwmp_restart_services(RELOAD_END_SESSION, false, false); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); cwmp_free_all_list_param_fault(&faults_array); fault = 0; fault_code = 0; @@ -168,7 +197,9 @@ static void dm_set_multiple_parameter_values_test(void **state) /* * Test of writable, valid parameter path wrong value */ - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.Enable", "tre", NULL, 0, false); + add_param_to_xml_param_list("Device.WiFi.SSID.1.Enable", "tre", NULL, &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); assert_non_null(fault); list_for_each_entry (param_fault, &faults_array, list) { @@ -181,6 +212,32 @@ static void dm_set_multiple_parameter_values_test(void **state) assert_non_null(fault_name); icwmp_restart_services(RELOAD_END_SESSION, false, false); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); + cwmp_free_all_list_param_fault(&faults_array); + fault_code = 0; + fault_name = NULL; + param_fault = NULL; + fault = 0; + + /* + * Test of writable, valid parameter path wrong datatype + */ + add_param_to_xml_param_list("Device.WiFi.SSID.1.Enable", "true", "dateTime", &xml_param_list); + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); + assert_non_null(fault); + list_for_each_entry (param_fault, &faults_array, list) { + fault_code = param_fault->fault_code; + fault_name = param_fault->path_name; + break; + } + assert_int_not_equal(fault, 0); + assert_int_equal(fault_code, 9006); + assert_non_null(fault_name); + icwmp_restart_services(RELOAD_END_SESSION, false, false); + cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); cwmp_free_all_list_param_fault(&faults_array); fault_code = 0; fault_name = NULL; @@ -190,22 +247,34 @@ static void dm_set_multiple_parameter_values_test(void **state) /* * Test of list of valid parameters */ - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.Alias", "wifi_alias1_1", NULL, 0, false); - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.SSID", "wifi_ssid_2", NULL, 0, false); - add_dm_parameter_to_list(&list_set_param_value, "Device.ManagementServer.Username", "iopsys_user_1", NULL, 0, false); + char *valid_path[3] = {"Device.WiFi.SSID.1.Alias", "Device.WiFi.SSID.1.SSID", "Device.ManagementServer.Username"}; + char *valid_value[3] = {"wifi_alias1_1", "wifi_ssid_2", "iopsys_user_1"}; + + for (int i = 0; i < 3; i++) { + add_param_to_xml_param_list(valid_path[i], valid_value[i], NULL, &xml_param_list); + } + + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); assert_int_equal(fault, 0); icwmp_restart_services(RELOAD_END_SESSION, true, false); cwmp_free_all_list_param_fault(&faults_array); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); /* * Test of list wrong parameters values */ - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.SSID", "wifi_ssid_2", NULL, 0, false); - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.1.Enable", "tre", NULL, 0, false); - add_dm_parameter_to_list(&list_set_param_value, "Device.WiFi.SSID.2.Alis", "wifi_2", NULL, 0, false); - add_dm_parameter_to_list(&list_set_param_value, "Device.DeviceInfo.UpTime", "123", NULL, 0, false); + char *wrong_path[4] = {"Device.WiFi.SSID.1.SSID", "Device.WiFi.SSID.1.Enable", "Device.WiFi.SSID.2.Alis", "Device.DeviceInfo.UpTime"}; + char *wrong_value[4] = {"wifi_ssid_2", "tre", "wifi_2", "123"}; + + for (int i = 0; i < 4; i++) { + add_param_to_xml_param_list(wrong_path[i], wrong_value[i], NULL, &xml_param_list); + } + + xml_data_list_to_dm_parameter_list(&xml_param_list, &list_set_param_value); + fault = cwmp_set_multi_parameters_value(&list_set_param_value, &faults_array); assert_int_not_equal(fault, 0); list_for_each_entry (param_fault, &faults_array, list) { @@ -213,6 +282,7 @@ static void dm_set_multiple_parameter_values_test(void **state) } icwmp_restart_services(RELOAD_END_SESSION, true, false); cwmp_free_all_dm_parameter_list(&list_set_param_value); + cwmp_free_all_xml_data_list(&xml_param_list); } static void dm_add_object_test(void **state)