From: Rafal Krypa Date: Thu, 26 Feb 2015 14:25:53 +0000 (+0100) Subject: security-manager-tests: use full proper path for applications X-Git-Tag: security-manager_5.5_testing~109^2~21 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Ftest%2Fsecurity-tests.git;a=commitdiff_plain;h=df6cc321de4cc5ba00735642910b41beed5f6626 security-manager-tests: use full proper path for applications Changing function appDirPath to generate proper application path using pkgId and appId values. Previous implementation tried to install all applications directly into TZ_USER_APP directory, which was incorrect. Change-Id: Iabdffd20ca37b6e2fb2c9ecb50d9ba58b16a857b Signed-off-by: Rafal Krypa --- diff --git a/tests/common/tests_common.cpp b/tests/common/tests_common.cpp index 8e60c2b..a8afc7b 100644 --- a/tests/common/tests_common.cpp +++ b/tests/common/tests_common.cpp @@ -187,10 +187,20 @@ int files_compare(int fd1, int fd2) void mkdirSafe(const std::string &path, mode_t mode) { - RUNNER_ASSERT_ERRNO_MSG(0 == mkdir(path.c_str(), mode), + RUNNER_ASSERT_ERRNO_MSG(0 == mkdir(path.c_str(), mode) || errno == EEXIST, "mkdir for <" << path << "> with mode <" << mode << "> failed"); } +void mktreeSafe(const std::string &path, mode_t mode) +{ + // Create subsequent parent directories + // Assume that path is absolute - i.e. starts with '/' + for (size_t pos = 0; (pos = path.find("/", pos + 1)) != std::string::npos; ) + mkdirSafe(path.substr(0, pos).c_str(), mode); + + mkdirSafe(path, mode); +} + void creatSafe(const std::string &path, mode_t mode) { RUNNER_ASSERT_ERRNO_MSG(-1 != creat(path.c_str(), mode), diff --git a/tests/common/tests_common.h b/tests/common/tests_common.h index 88c8205..52c0500 100644 --- a/tests/common/tests_common.h +++ b/tests/common/tests_common.h @@ -49,6 +49,7 @@ void remove_process_group(const char* group_name); std::string formatCstr(const char *cstr); int files_compare(int fd1, int fd2); void mkdirSafe(const std::string &path, mode_t mode); +void mktreeSafe(const std::string &path, mode_t mode); void creatSafe(const std::string &path, mode_t mode); void symlinkSafe(const std::string &targetPath, const std::string &linkPath); void removeDir(const std::string &path); diff --git a/tests/security-manager-tests/security_manager_tests.cpp b/tests/security-manager-tests/security_manager_tests.cpp index 7a23d2c..d7faca8 100644 --- a/tests/security-manager-tests/security_manager_tests.cpp +++ b/tests/security-manager-tests/security_manager_tests.cpp @@ -596,7 +596,8 @@ static uid_t getGlobalUserId(void) return tzplatform_getuid(TZ_SYS_GLOBALAPP_USER); } -static const std::string appDirPath(const TemporaryTestUser &user) +static const std::string appDirPath(const TemporaryTestUser &user, + const std::string &appId, const std::string &pkgId) { struct tzplatform_context *tzCtxPtr = nullptr; @@ -612,7 +613,7 @@ static const std::string appDirPath(const TemporaryTestUser &user) "tzplatform_context_getenv failed" << "for getting sys rw app of user <" << user.getUserName() << ">"); - return appDir; + return std::string(appDir) + "/" + pkgId + "/" + appId; } static const std::string nonAppDirPath(const TemporaryTestUser &user) @@ -674,7 +675,7 @@ static void createTestDir(const std::string &dir) mode_t execFileMode = S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH; mode_t normalFileMode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH; - mkdirSafe(dir, dirMode); + mktreeSafe(dir, dirMode); creatSafe(dir + "/" + EXEC_FILE, execFileMode); creatSafe(dir + "/" + NORMAL_FILE, normalFileMode); symlinkSafe(dir + "/" + EXEC_FILE, dir + "/" + LINK_PREFIX + EXEC_FILE); @@ -692,9 +693,10 @@ static void createInnerAppDir(const std::string &dir, const std::string &nonAppD dir + "/" + LINK_PREFIX + "non_app_" + NORMAL_FILE); } -static void generateAppDir(const TemporaryTestUser &user) +static void generateAppDir(const TemporaryTestUser &user, + const std::string &appId, const std::string &pkgId) { - const std::string dir = appDirPath(user); + const std::string dir = appDirPath(user, appId, pkgId); const std::string nonAppDir = nonAppDirPath(user); createInnerAppDir(dir, nonAppDir); @@ -711,15 +713,17 @@ static void generateNonAppDir(const TemporaryTestUser &user) createTestDir(dir + "/inner_dir"); } -static void createTestDirs(const TemporaryTestUser &user) +static void createTestDirs(const TemporaryTestUser &user, + const std::string &appId, const std::string &pkgId) { - generateAppDir(user); + generateAppDir(user, appId, pkgId); generateNonAppDir(user); } -static void removeTestDirs(const TemporaryTestUser &user) +static void removeTestDirs(const TemporaryTestUser &user, + const std::string &appId, const std::string &pkgId) { - removeDir(appDirPath(user)); + removeDir(appDirPath(user, appId, pkgId)); removeDir(nonAppDirPath(user)); } @@ -733,10 +737,10 @@ RUNNER_CHILD_TEST(security_manager_04a_app_install_uninstall_by_app_user_for_sel TemporaryTestUser testUser(new_user_name, GUM_USERTYPE_NORMAL, false); testUser.create(); - removeTestDirs(testUser); - createTestDirs(testUser); + removeTestDirs(testUser, sm_app_id, sm_pkg_id); + createTestDirs(testUser, sm_app_id, sm_pkg_id); - const std::string userAppDirPath = appDirPath(testUser); + const std::string userAppDirPath = appDirPath(testUser, sm_app_id, sm_pkg_id); //switch user to non-root result = drop_root_privileges(testUser.getUid(), testUser.getGid()); @@ -765,10 +769,10 @@ RUNNER_CHILD_TEST(security_manager_04b_app_install_by_root_for_app_user) TemporaryTestUser testUser(new_user_name, GUM_USERTYPE_NORMAL, false); testUser.create(); - removeTestDirs(testUser); - createTestDirs(testUser); + removeTestDirs(testUser, sm_app_id, sm_pkg_id); + createTestDirs(testUser, sm_app_id, sm_pkg_id); - install_and_check(sm_app_id, sm_pkg_id, testUser, appDirPath(testUser), true); + install_and_check(sm_app_id, sm_pkg_id, testUser, appDirPath(testUser, sm_app_id, sm_pkg_id), true); //switch user to non-root - root may not uninstall apps for specified users result = drop_root_privileges(testUser.getUid(), testUser.getGid()); @@ -835,8 +839,8 @@ RUNNER_CHILD_TEST(security_manager_07_user_add_app_install) test_user.create(); test_user.getUidString(uid_string); - removeTestDirs(test_user); - createTestDirs(test_user); + removeTestDirs(test_user, sm_app_id, sm_pkg_id); + createTestDirs(test_user, sm_app_id, sm_pkg_id); install_app(sm_app_id, sm_pkg_id, test_user.getUid()); @@ -863,8 +867,8 @@ RUNNER_CHILD_TEST(security_manager_08_user_double_add_double_remove) test_user.create(); test_user.getUidString(uid_string); - removeTestDirs(test_user); - createTestDirs(test_user); + removeTestDirs(test_user, sm_app_id, sm_pkg_id); + createTestDirs(test_user, sm_app_id, sm_pkg_id); addUserRequest.setUid(test_user.getUid()); addUserRequest.setUserType(SM_USER_TYPE_NORMAL); @@ -900,8 +904,8 @@ RUNNER_CHILD_TEST(security_manager_09_add_user_offline) TemporaryTestUser test_user(new_user_name, GUM_USERTYPE_NORMAL, true); test_user.create(); - removeTestDirs(test_user); - createTestDirs(test_user); + removeTestDirs(test_user, app_id, pkg_id); + createTestDirs(test_user, app_id, pkg_id); install_app(app_id, pkg_id, test_user.getUid());