From 6735de81675f996ea5ddf94c9fdf0427cbb108fa Mon Sep 17 00:00:00 2001 From: Krzysztof Jackiewicz Date: Thu, 7 May 2020 22:05:04 +0200 Subject: [PATCH] Fix smack privilege tests policy management Because TEST_RUNNER_CHILD is used, the security-manager's policy is being modified in individual processes. This leads to redundant security-manager restarts and could leave security-manager with improper policy after the test. Manage the security-manager policy in the main process only. Change-Id: I5d9924806f9ecdd28007f9cfd3ea3668e1a47a33 --- .../test_cases_smack_privileges.cpp | 93 ++++++++-------------- 1 file changed, 35 insertions(+), 58 deletions(-) diff --git a/src/security-manager-tests/test_cases_smack_privileges.cpp b/src/security-manager-tests/test_cases_smack_privileges.cpp index 3fa120e..2878da3 100644 --- a/src/security-manager-tests/test_cases_smack_privileges.cpp +++ b/src/security-manager-tests/test_cases_smack_privileges.cpp @@ -137,13 +137,13 @@ private: const std::map m_setupMap; }; - static std::unique_ptr m_setupMgr; + static SmackPrivSetupMgr* m_setupMgr; public: void Init() override { assert(!m_setupMgr); - m_setupMgr.reset(new SmackPrivSetupMgr()); + m_setupMgr = new SmackPrivSetupMgr(); } static void Install(SmackPrivSetup setup) @@ -156,20 +156,31 @@ public: void Finish() override { assert(m_setupMgr); - m_setupMgr.reset(); + delete(m_setupMgr); + m_setupMgr = nullptr; } }; -std::unique_ptr SmackPrivGroupEnv::m_setupMgr; +SmackPrivGroupEnv::SmackPrivSetupMgr* SmackPrivGroupEnv::m_setupMgr = nullptr; + +template +class TestSetup +{ +public: + void init(const std::string &) { + SmackPrivGroupEnv::Install(T); + } + void finish() {} +}; + +typedef TestSetup InternetOnlySetup; } // namespace anonymous RUNNER_TEST_GROUP_INIT_ENV(SECURITY_MANAGER_SMACK_PRIVILEGES, SmackPrivGroupEnv) -RUNNER_CHILD_TEST(smack_privileges_10_no_privileges) +RUNNER_CHILD_TEST(smack_privileges_10_no_privileges, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_10_app"); { ScopedInstaller appInstall(app); @@ -184,10 +195,8 @@ RUNNER_CHILD_TEST(smack_privileges_10_no_privileges) app.checkAfterUninstall(); } -RUNNER_CHILD_TEST(smack_privileges_20_internet_privilege) +RUNNER_CHILD_TEST(smack_privileges_20_internet_privilege, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_20_app"); app.addPrivileges({PRIV_INTERNET}); { @@ -208,10 +217,8 @@ RUNNER_CHILD_TEST(smack_privileges_20_internet_privilege) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_30_one_after_another) +RUNNER_CHILD_TEST(smack_privileges_30_one_after_another, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_30_app"); app.addPrivileges({PRIV_INTERNET}); { @@ -239,10 +246,8 @@ RUNNER_CHILD_TEST(smack_privileges_30_one_after_another) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_40_different_users_one_after_another) +RUNNER_CHILD_TEST(smack_privileges_40_different_users_one_after_another, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_40_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -277,10 +282,8 @@ RUNNER_CHILD_TEST(smack_privileges_40_different_users_one_after_another) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_50_same_user_simultaneously) +RUNNER_CHILD_TEST(smack_privileges_50_same_user_simultaneously, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_50_app", OWNER_ID); app.addPrivileges({PRIV_INTERNET}); { @@ -303,10 +306,8 @@ RUNNER_CHILD_TEST(smack_privileges_50_same_user_simultaneously) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_60_same_user_interchangeably) +RUNNER_CHILD_TEST(smack_privileges_60_same_user_interchangeably, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_60_app", OWNER_ID); app.addPrivileges({PRIV_INTERNET}); { @@ -338,10 +339,8 @@ RUNNER_CHILD_TEST(smack_privileges_60_same_user_interchangeably) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_70_different_users_simultaneously) +RUNNER_CHILD_TEST(smack_privileges_70_different_users_simultaneously, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_70_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -385,10 +384,8 @@ RUNNER_CHILD_TEST(smack_privileges_70_different_users_simultaneously) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_80_uninstall_local_while_running) +RUNNER_CHILD_TEST(smack_privileges_80_uninstall_local_while_running, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_80_app"); app.addPrivileges({PRIV_INTERNET}); { @@ -416,10 +413,8 @@ RUNNER_CHILD_TEST(smack_privileges_80_uninstall_local_while_running) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_90_user_removal) +RUNNER_CHILD_TEST(smack_privileges_90_user_removal, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_90_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -448,10 +443,8 @@ RUNNER_CHILD_TEST(smack_privileges_90_user_removal) } } -RUNNER_CHILD_TEST(smack_privileges_100_hybrid_app) +RUNNER_CHILD_TEST(smack_privileges_100_hybrid_app, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_100_app"); app.addPrivileges({PRIV_INTERNET}); app.setHybrid(); @@ -473,10 +466,8 @@ RUNNER_CHILD_TEST(smack_privileges_100_hybrid_app) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_110_hybridity_change) +RUNNER_CHILD_TEST(smack_privileges_110_hybridity_change, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - AppInstallHelperExt app("sm_test_sp_110_app"); app.addPrivileges({PRIV_INTERNET}); { @@ -520,10 +511,8 @@ RUNNER_CHILD_TEST(smack_privileges_110_hybridity_change) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_120_policy_change_while_running) +RUNNER_CHILD_TEST(smack_privileges_120_policy_change_while_running, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_120_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -556,10 +545,8 @@ RUNNER_CHILD_TEST(smack_privileges_120_policy_change_while_running) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_130_different_users_and_policies) +RUNNER_CHILD_TEST(smack_privileges_130_different_users_and_policies, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_130_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -595,10 +582,8 @@ RUNNER_CHILD_TEST(smack_privileges_130_different_users_and_policies) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_140_two_users_sequence) +RUNNER_CHILD_TEST(smack_privileges_140_two_users_sequence, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_140_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -640,10 +625,8 @@ RUNNER_CHILD_TEST(smack_privileges_140_two_users_sequence) app.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_150_independent_apps) +RUNNER_CHILD_TEST(smack_privileges_150_independent_apps, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_150_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -675,10 +658,8 @@ RUNNER_CHILD_TEST(smack_privileges_150_independent_apps) app2.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_160_nonhybrid_package) +RUNNER_CHILD_TEST(smack_privileges_160_nonhybrid_package, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_160_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -728,10 +709,8 @@ RUNNER_CHILD_TEST(smack_privileges_160_nonhybrid_package) } -RUNNER_CHILD_TEST(smack_privileges_170_hybrid_package) +RUNNER_CHILD_TEST(smack_privileges_170_hybrid_package, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_170_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); @@ -781,10 +760,8 @@ RUNNER_CHILD_TEST(smack_privileges_170_hybrid_package) app2.checkSmackPrivileges({}, {PRIV_INTERNET}); } -RUNNER_CHILD_TEST(smack_privileges_180_hybrid_package_both_apps_privileged) +RUNNER_CHILD_TEST(smack_privileges_180_hybrid_package_both_apps_privileged, InternetOnlySetup) { - SmackPrivGroupEnv::Install(SmackPrivSetup::INTERNET_ONLY); - TemporaryTestUser testUser("sm_test_180_user_name", GUM_USERTYPE_NORMAL, true); testUser.create(); -- 2.7.4