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);
+}