From: tranthanhtung2001 Date: Mon, 7 Oct 2024 06:51:03 +0000 (+0700) Subject: Refactoring and increasing negative test cases for __test_dpm_black_list_set_unset... X-Git-Tag: accepted/tizen/unified/20241109.031556~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9153e4c77cc0901fcbf959117c58ffef7ad28da5;p=platform%2Fcore%2Fsecurity%2Fprivilege-checker.git Refactoring and increasing negative test cases for __test_dpm_black_list_set_unset function in tc-privilege-black-list.c Change-Id: I9325663630b516b9a096c8106e94d1c39be065e0 Signed-off-by: tranthanhtung2001 --- diff --git a/test/tc-privilege-black-list.c b/test/tc-privilege-black-list.c index 8e9e215..c1e8841 100644 --- a/test/tc-privilege-black-list.c +++ b/test/tc-privilege-black-list.c @@ -7,100 +7,190 @@ #include #include "tc-common.h" -void __test_dpm_black_list_set_unset() +typedef struct { + char *name; + char *level; + char *comment; +} privilege_info; + +privilege_info __create_privilege_info(char *name, char *level, char *comment) { - int ret = 0; - GList *black_list; + privilege_info element; + element.name = name; + element.level = level; + element.comment = comment; + return element; +} - __color_to_bold_yellow(); - printf("\nTest black list set/unset/get\n\n"); - __color_to_origin(); +void __check_privilege_manager_set_black_list_return_code( + int uid, + privilege_manager_package_type_e package_type, + int expected_ret, + privilege_info *lists, + int len) +{ + printf("uid = %d\npackage_type = %d\n", uid, package_type); + if (len != 0) + printf("These privileges will be added into black list :\n"); + else + printf("These privileges will not be added into black list\n"); + for (int i = 0; i < len; i++) + __privinfo(lists[i].name, lists[i].level, lists[i].comment); - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Get wrt black list"); - ret = privilege_info_get_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, &black_list); - __tcinfo(expect, PRVMGR_ERR_NONE); - __print_result('m', ret); - __print_privilege_list(black_list); - __print_line(); - gfree(black_list); + int ret = privilege_manager_set_black_list(uid, package_type, privilege_list); + __check_the_return_code('m', expected_ret, ret); - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Add wrt privileges"); - __privinfo("http://tizen.org/privilege/filesystem.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/account.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/internet", NULL, NULL); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_manager_set_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, privilege_list); - __print_result('m', ret); __print_line(); gfree(privilege_list); +} + +GList * __privilege_info_get_black_list_and_check_return_code( + int uid, + privilege_manager_package_type_e package_type, + int expected_ret) +{ + GList *black_list = NULL; + + printf("uid = %d\npackage_type = %d\n", uid, package_type); + + int ret = privilege_info_get_black_list(uid, package_type, &black_list); + __check_the_return_code('m', expected_ret, ret); - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Get wrt black list"); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_info_get_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, &black_list); - __print_result('m', ret); __print_privilege_list(black_list); __print_line(); - gfree(black_list); - black_list = NULL; - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Add wrt privileges -- Add duplicated privileges"); - __privinfo("http://tizen.org/privilege/filesystem.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/account.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/internet", NULL, NULL); - __privinfo("http://tizen.org/privilege/mediacapture", NULL, NULL); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_manager_set_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, privilege_list); - __print_result('m', ret); + return black_list; +} + +void __privilege_info_remove_black_list_and_check_return_code( + int uid, + privilege_manager_package_type_e package_type, + int expected_ret, + privilege_info *lists, + int len) +{ + printf("uid = %d\npackage_type = %d\n", uid, package_type); + if (len != 0) + printf("These privileges will be removed in black list:\n"); + else + printf("These privileges will not be removed in black list\n"); + for (int i = 0; i < len; i++) + __privinfo(lists[i].name, lists[i].level, lists[i].comment); + + int ret = privilege_manager_unset_black_list(uid, package_type, privilege_list); + __check_the_return_code('m', expected_ret, ret); + __print_line(); gfree(privilege_list); +} + +void __test_dpm_black_list_set_unset() +{ + int uid = 0; + GList *black_list = NULL; + + __color_to_bold_yellow(); + printf("\nTest black list set/unset/get\n\n"); + __color_to_origin(); + + /* Add privileges into prevent_list table */ + __tcinfo(goal, POS_TC_PREFIX "uid = 0, Add wrt privileges"); + + privilege_info first_list[] = { + __create_privilege_info("http://tizen.org/privilege/filesystem.read", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/account.read", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/internet", NULL, NULL), + }; + + int len = sizeof(first_list) / sizeof(first_list[0]); + __check_privilege_manager_set_black_list_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE, first_list, len); + /* Get black list */ __tcinfo(goal, POS_TC_PREFIX "uid = 0, Get wrt black list"); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_info_get_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, &black_list); - __print_result('m', ret); - __print_privilege_list(black_list); - __print_line(); + black_list = __privilege_info_get_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE); + gfree(black_list); + + /* Add privileges which existed in prevent_list table */ + __tcinfo(goal, POS_TC_PREFIX "uid = 0, Add wrt privileges -- Add duplicated privileges"); + + privilege_info second_list[] = { + __create_privilege_info("http://tizen.org/privilege/filesystem.read", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/account.read", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/internet", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/mediacapture", NULL, NULL) + }; + + len = sizeof(second_list) / sizeof(second_list[0]); + __check_privilege_manager_set_black_list_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE, second_list, len); + + /* Get black list */ + black_list = __privilege_info_get_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE); gfree(black_list); - black_list = NULL; + /* Remove black list */ __tcinfo(goal, POS_TC_PREFIX "uid = 0, Remove wrt privileges"); - __privinfo("http://tizen.org/privilege/filesystem.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/account.read", NULL, NULL); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_manager_unset_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, privilege_list); - __print_result('m', ret); - __print_line(); - gfree(privilege_list); - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Get wrt black list"); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_info_get_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, &black_list); - __print_result('m', ret); - __print_privilege_list(black_list); - __print_line(); + privilege_info third_list[] = { + __create_privilege_info("http://tizen.org/privilege/filesystem.read", NULL, NULL), + __create_privilege_info("http://tizen.org/privilege/account.read", NULL, NULL), + }; + + len = sizeof(third_list) / sizeof(third_list[0]); + __privilege_info_remove_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE, third_list, len); + + /* Get black list */ + black_list = __privilege_info_get_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE); gfree(black_list); - black_list = NULL; + /* Remove privileges which dont exist in black list */ __tcinfo(goal, POS_TC_PREFIX "uid = 0, Remove wrt privileges -- Try to remove already removed privileges"); - __privinfo("http://tizen.org/privilege/filesystem.read", NULL, NULL); - __privinfo("http://tizen.org/privilege/account.read", NULL, NULL); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_manager_unset_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, privilege_list); - __print_result('m', ret); - __print_line(); - gfree(privilege_list); + __privilege_info_remove_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE, third_list, len); - __tcinfo(goal, POS_TC_PREFIX "uid = 0, Get wrt black list"); - __tcinfo(expect, PRVMGR_ERR_NONE); - ret = privilege_info_get_black_list(0, PRVMGR_PACKAGE_TYPE_WRT, &black_list); - __print_result('m', ret); - __print_privilege_list(black_list); - __print_line(); + /* Get black list */ + black_list = __privilege_info_get_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_WRT, PRVMGR_ERR_NONE); gfree(black_list); - black_list = NULL; -} + /* Add privileges when package_type is wrong */ + __tcinfo(goal, NEG_TC_PREFIX "uid = 0, Add wrt privileges when package_type is wrong"); + __check_privilege_manager_set_black_list_return_code( + uid, + PRVMGR_PACKAGE_TYPE_METADATA, + PRVMGR_ERR_INVALID_PARAMETER, + third_list, + len); + + /* Add privileges when privilege_list is empty */ + __tcinfo(goal, NEG_TC_PREFIX "uid = 0, Add wrt privileges when privilege_list is empty"); + __check_privilege_manager_set_black_list_return_code( + uid, + PRVMGR_PACKAGE_TYPE_METADATA, + PRVMGR_ERR_INVALID_PARAMETER, + third_list, + 0); + + /* Get black list when package_type is wrong */ + __tcinfo(goal, NEG_TC_PREFIX "uid = 0, Get black list when package_type is wrong"); + __privilege_info_get_black_list_and_check_return_code(uid, PRVMGR_PACKAGE_TYPE_METADATA, PRVMGR_ERR_INVALID_PARAMETER); + + /* Remove privileges when package_type is wrong */ + __tcinfo(goal, NEG_TC_PREFIX "uid = 0, Remove wrt privileges when package_type is wrong"); + __privilege_info_remove_black_list_and_check_return_code( + uid, + PRVMGR_PACKAGE_TYPE_METADATA, + PRVMGR_ERR_INVALID_PARAMETER, + third_list, + len); + + /* Remove privileges when privilege_list is empty */ + __tcinfo(goal, NEG_TC_PREFIX "uid = 0, Remove wrt privileges when privilege_list is empty"); + __privilege_info_remove_black_list_and_check_return_code( + uid, + PRVMGR_PACKAGE_TYPE_METADATA, + PRVMGR_ERR_INVALID_PARAMETER, + third_list, + 0); +} void __test_dpm_black_list_check() {