Add tests for perm_app_get_permissions().
authorDamian Chromejko <d.chromejko@samsung.com>
Fri, 22 Nov 2013 12:00:31 +0000 (13:00 +0100)
committerMarcin Niesluchowski <m.niesluchow@samsung.com>
Thu, 23 Jan 2014 14:21:36 +0000 (15:21 +0100)
[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

tests/libprivilege-control-tests/common/libprivilege-control_test_common.h
tests/libprivilege-control-tests/test_cases.cpp

index 7e6c5a5..998359d 100644 (file)
@@ -121,9 +121,9 @@ struct free_deleter {
 };
 typedef std::unique_ptr<char, free_deleter> CStringPtr;
 
-struct list_deleter {
+template<typename T> 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<char*, list_deleter> CStringListPtr;
+typedef std::unique_ptr<char*, list_deleter<char> > CStringListPtr;
 
 class Directory
 {
index e0a0712..43bf2c8 100644 (file)
@@ -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;