"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;