X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tests%2Fsecurity-manager-tests%2Fsecurity_manager_tests.cpp;h=df0f46cee105e20157e8c87ce96199ceed423602;hb=8956650ff14e7d7367206c39d74024b78b4bc842;hp=58d1b7499af92b168a3f961bdf098e69db2c6f9a;hpb=889712bb4bf60c214296fc7b022f202b44bcb274;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git diff --git a/tests/security-manager-tests/security_manager_tests.cpp b/tests/security-manager-tests/security_manager_tests.cpp index 58d1b74..df0f46c 100644 --- a/tests/security-manager-tests/security_manager_tests.cpp +++ b/tests/security-manager-tests/security_manager_tests.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -250,12 +252,12 @@ static void check_app_after_uninstall(const char *const app_id, const char *cons dbtest.test_db_after__app_uninstall(app_id, pkg_id, is_pkg_removed); } -static void install_app(const char *app_id, const char *pkg_id) +static void install_app(const char *app_id, const char *pkg_id, uid_t uid = 0) { InstallRequest request; request.setAppId(app_id); request.setPkgId(pkg_id); - + request.setUid(uid); Api::install(request); check_app_after_install(app_id, pkg_id); @@ -502,12 +504,13 @@ static struct passwd* get_app_pw() static void install_and_check(const char *const sm_app_id, const char *const sm_pkg_id, - const std::string &user, uid_t uid) + const std::string &user, uid_t uid, + const std::string &user_path = SM_PRIVATE_PATH_FOR_USER) { InstallRequest requestPublic; //install app for non-root user and try to register public path (should fail) - prepare_request(requestPublic, sm_app_id, sm_pkg_id, SECURITY_MANAGER_PATH_PUBLIC, SM_PRIVATE_PATH_FOR_USER, uid); + prepare_request(requestPublic, sm_app_id, sm_pkg_id, SECURITY_MANAGER_PATH_PUBLIC, user_path.c_str(), uid); Api::install(requestPublic, SECURITY_MANAGER_ERROR_AUTHENTICATION_FAILED); @@ -523,7 +526,7 @@ static void install_and_check(const char *const sm_app_id, //install app for non-root user //should succeed - this time i register folder inside user's home dir - prepare_request(requestPrivateUser, sm_app_id, sm_pkg_id, SECURITY_MANAGER_PATH_PRIVATE, SM_PRIVATE_PATH_FOR_USER, uid); + prepare_request(requestPrivateUser, sm_app_id, sm_pkg_id, SECURITY_MANAGER_PATH_PRIVATE, user_path.c_str(), uid); for (auto &privilege : SM_ALLOWED_PRIVILEGES) requestPrivateUser.addPrivilege(privilege.c_str()); @@ -621,6 +624,84 @@ RUNNER_CHILD_TEST(security_manager_06_install_app_offline) uninstall_app(app_id, pkg_id, true); } +RUNNER_CHILD_TEST(security_manager_07_user_add_app_install) +{ + const char *const sm_app_id = "sm_test_07_app_id_user"; + const char *const sm_pkg_id = "sm_test_07_pkg_id_user"; + const std::string new_user_name = "sm_test_07_user_name"; + std::string uid_string; + TemporaryTestUser test_user(new_user_name, GUM_USERTYPE_NORMAL, false); + uid_string = std::to_string(static_cast(test_user.getUid())); + + install_app(sm_app_id, sm_pkg_id, test_user.getUid()); + + check_app_after_install(sm_app_id, sm_pkg_id); + + test_user.remove(); + + check_app_permissions(sm_app_id, sm_pkg_id, uid_string.c_str(), SM_NO_PRIVILEGES, SM_ALLOWED_PRIVILEGES); + + check_app_after_uninstall(sm_app_id, sm_pkg_id, true); +} + +RUNNER_CHILD_TEST(security_manager_08_user_double_add_double_remove) +{ + UserRequest addUserRequest; + + const char *const sm_app_id = "sm_test_08_app_id_user"; + const char *const sm_pkg_id = "sm_test_08_pkg_id_user"; + const char *const new_user_name = "sm_test_08_user_name"; + std::string uid_string; + + // gumd user add + TemporaryTestUser test_user(new_user_name, GUM_USERTYPE_NORMAL, false); + uid_string = std::to_string(static_cast(test_user.getUid())); + + addUserRequest.setUid(test_user.getUid()); + addUserRequest.setUserType(SM_USER_TYPE_NORMAL); + + //sm user add + Api::addUser(addUserRequest); + + install_app(sm_app_id, sm_pkg_id, test_user.getUid()); + + check_app_after_install(sm_app_id, sm_pkg_id); + + test_user.remove(); + + UserRequest deleteUserRequest; + deleteUserRequest.setUid(test_user.getUid()); + + Api::deleteUser(deleteUserRequest); + + check_app_permissions(sm_app_id, sm_pkg_id, uid_string.c_str(), SM_NO_PRIVILEGES, SM_ALLOWED_PRIVILEGES); + + check_app_after_uninstall(sm_app_id, sm_pkg_id, true); +} + +RUNNER_CHILD_TEST(security_manager_09_add_user_offline) +{ + const char *const app_id = "security_manager_09_add_user_offline_app"; + const char *const pkg_id = "security_manager_09_add_user_offline_pkg"; + const std::string username("sm_test_09_user_name"); + DBusAccess dbusAccess("security-manager.service"); + dbusAccess.maskService(); + dbusAccess.stopService(); + + TemporaryTestUser user(username, GUM_USERTYPE_NORMAL, true); + + install_app(app_id, pkg_id, user.getUid()); + + check_app_after_install(app_id, pkg_id); + + dbusAccess.unmaskService(); + dbusAccess.startService(); + + user.remove(); + + check_app_after_uninstall(app_id, pkg_id, true); +} + int main(int argc, char *argv[]) { return DPL::Test::TestRunnerSingleton::Instance().ExecTestRunner(argc, argv);