Add security_manager_identify_privilege_provider() tests 94/118894/2
authorDariusz Michaluk <d.michaluk@samsung.com>
Mon, 13 Mar 2017 16:32:12 +0000 (17:32 +0100)
committerDariusz Michaluk <d.michaluk@samsung.com>
Thu, 16 Mar 2017 09:12:46 +0000 (10:12 +0100)
Change-Id: I56533a6e4675b1764597b22100f483e6ba8c9ec8

src/security-manager-tests/test_cases_app_defined_privilege.cpp

index e6b89b1..fe2a811 100644 (file)
@@ -252,3 +252,50 @@ RUNNER_CHILD_TEST(app_defined_05_global_local_install)
     cynara.check(consumerGlobalLabel, session, ownerId, privilegeB, CYNARA_API_ACCESS_DENIED);
     cynara.check(consumerGlobalLabel, session, ownerId, privilegeC, CYNARA_API_ACCESS_ALLOWED);
 }
+
+RUNNER_CHILD_TEST(app_defined_06_get_provider)
+{
+    int result;
+    char *pkgId = nullptr;
+    char *appId = nullptr;
+    const std::string privilege = "http://tizen.org/applicationDefinedPrivilege/app_defined_06";
+    const app_defined_privilege_type type = SM_APP_DEFINED_PRIVILEGE_TYPE_UNTRUSTED;
+    const std::string providerId = "app_def_06_provider";
+    uid_t uid = 5001;
+
+    AppInstallHelper provider(providerId, uid);
+    provider.addAppDefinedPrivilege(std::make_pair(privilege, type));
+    ScopedInstaller req1(provider);
+
+    result = security_manager_identify_privilege_provider("noExistingPrivilege", uid, &pkgId, &appId);
+    RUNNER_ASSERT(result == SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT);
+    RUNNER_ASSERT(appId == nullptr);
+    RUNNER_ASSERT(pkgId == nullptr);
+
+    result = security_manager_identify_privilege_provider(privilege.c_str(), uid+1, &pkgId, &appId);
+    RUNNER_ASSERT(result == SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT);
+    RUNNER_ASSERT(appId == nullptr);
+    RUNNER_ASSERT(pkgId == nullptr);
+
+    result = security_manager_identify_privilege_provider(privilege.c_str(), uid, nullptr, nullptr);
+    RUNNER_ASSERT(result == SECURITY_MANAGER_ERROR_INPUT_PARAM);
+
+    result = security_manager_identify_privilege_provider(privilege.c_str(), uid, &pkgId, nullptr);
+    RUNNER_ASSERT_MSG(result == SECURITY_MANAGER_SUCCESS, "getting privilege provider failed");
+    RUNNER_ASSERT(pkgId && std::string(pkgId) == provider.getPkgId());
+    free(pkgId);
+    pkgId = nullptr;
+
+    result = security_manager_identify_privilege_provider(privilege.c_str(), uid, nullptr, &appId);
+    RUNNER_ASSERT_MSG(result == SECURITY_MANAGER_SUCCESS, "getting privilege provider failed");
+    RUNNER_ASSERT(appId && std::string(appId) == provider.getAppId());
+    free(appId);
+    appId = nullptr;
+
+    result = security_manager_identify_privilege_provider(privilege.c_str(), uid, &pkgId, &appId);
+    RUNNER_ASSERT_MSG(result == SECURITY_MANAGER_SUCCESS, "getting privilege provider failed");
+    RUNNER_ASSERT(appId && std::string(appId) == provider.getAppId());
+    RUNNER_ASSERT(pkgId && std::string(pkgId) == provider.getPkgId());
+    free(appId);
+    free(pkgId);
+}