#include <privilege_db_manager.h>
#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()
{