From 71b74aee838bf3f1bc2e89ea00b8bad68cff0408 Mon Sep 17 00:00:00 2001 From: Damian Chromejko Date: Fri, 22 Nov 2013 13:00:31 +0100 Subject: [PATCH] Add tests for perm_app_get_permissions(). [Issue#] SSDWSSP-669 [Feature/Bug] N/A [Cause] Extension of libprivilege-control API. [Solution] Added tests for new methods. [Verification] Build, install and run libprivilege-control-test. Change-Id: Ia8cc9aa9fe2eb7d8d6421b1cd54a1847333dd061 --- .../common/libprivilege-control_test_common.h | 6 +- tests/libprivilege-control-tests/test_cases.cpp | 77 ++++++++++++++++++++++ 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/tests/libprivilege-control-tests/common/libprivilege-control_test_common.h b/tests/libprivilege-control-tests/common/libprivilege-control_test_common.h index 7e6c5a5..998359d 100644 --- a/tests/libprivilege-control-tests/common/libprivilege-control_test_common.h +++ b/tests/libprivilege-control-tests/common/libprivilege-control_test_common.h @@ -121,9 +121,9 @@ struct free_deleter { }; typedef std::unique_ptr CStringPtr; -struct list_deleter { +template struct list_deleter { void operator()(void* p) { - char** list = (char**) p; + T** list = (T**) p; for (int i = 0; list[i] != NULL; ++i) { free(list[i]); @@ -132,7 +132,7 @@ struct list_deleter { free(p); } }; -typedef std::unique_ptr CStringListPtr; +typedef std::unique_ptr > CStringListPtr; class Directory { diff --git a/tests/libprivilege-control-tests/test_cases.cpp b/tests/libprivilege-control-tests/test_cases.cpp index e0a0712..43bf2c8 100644 --- a/tests/libprivilege-control-tests/test_cases.cpp +++ b/tests/libprivilege-control-tests/test_cases.cpp @@ -1869,6 +1869,83 @@ RUNNER_TEST(privilege_control25_test_libprivilege_strerror) { "Bad message returned for invalid error code: \"" << result << "\""); } +RUNNER_TEST(privilege_control27_perm_app_get_privileges_empty) +{ + char** pp_privileges = NULL; + int result; + CStringListPtr privileges; + + DB_BEGIN + + result = perm_app_uninstall(APP_ID); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_uninstall failed: " << perm_strerror(result)); + + result = perm_app_install(APP_ID); + + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_install failed: " << perm_strerror(result)); + + DB_END + + result = perm_app_get_permissions(APP_ID, PERM_APP_TYPE_WGT, &pp_privileges); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_get_permissions failed: " << perm_strerror(result)); + privileges.reset(pp_privileges); + + RUNNER_ASSERT_MSG(pp_privileges != NULL, + "perm_app_get_permissions failed to set pointer to cstring array"); + RUNNER_ASSERT_MSG(*pp_privileges == NULL, + "perm_app_get_permissions found permissions when not supposed to"); +} + +RUNNER_TEST(privilege_control27_perm_app_get_privileges) +{ + char** pp_privileges = NULL; + int result; + size_t i; + CStringListPtr privileges; + + DB_BEGIN + + result = perm_app_uninstall(APP_ID); + + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_uninstall failed: " << perm_strerror(result)); + + result = perm_app_install(APP_ID); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_install failed: " << perm_strerror(result)); + + result = perm_app_setup_permissions(APP_ID, PERM_APP_TYPE_WGT, PRIVS); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_register_permissions failed: " << perm_strerror(result)); + + result = perm_app_setup_permissions(APP_ID, PERM_APP_TYPE_WGT, PRIVS2); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_register_permissions failed: " << perm_strerror(result)); + + result = perm_app_disable_permissions(APP_ID, PERM_APP_TYPE_WGT, PRIVS2); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_disable_permissions failed: " << perm_strerror(result)); + DB_END + + result = perm_app_get_permissions(APP_ID, PERM_APP_TYPE_WGT, &pp_privileges); + RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, + "perm_app_get_permissions returned " << result << ": " << perm_strerror(result)); + privileges.reset(pp_privileges); + + for(i = 0; pp_privileges[i] != NULL; ++i) { + RUNNER_ASSERT_MSG(PRIVS[i] != NULL, + "perm_app_get_permissions returned too many permissions"); + RUNNER_ASSERT_MSG(strcmp(pp_privileges[i], PRIVS[i]) == 0, + "perm_app_get_permissions returned wrong permission, " << pp_privileges[i] << + " != " << PRIVS[i]); + } + RUNNER_ASSERT_MSG(PRIVS[i] == NULL, + "perm_app_get_permissions returned too few enabled permissions"); +} + RUNNER_TEST(privilege_control28_perm_app_get_paths_empty) { char **pp_paths = NULL; -- 2.7.4