Fix smack privilege tests policy management 20/232820/1
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 7 May 2020 20:05:04 +0000 (22:05 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 7 May 2020 20:05:04 +0000 (22:05 +0200)
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

src/security-manager-tests/test_cases_smack_privileges.cpp

index 3fa120e..2878da3 100644 (file)
@@ -137,13 +137,13 @@ private:
         const std::map<SmackPrivSetup, std::string> m_setupMap;
     };
 
-    static std::unique_ptr<SmackPrivSetupMgr> 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::SmackPrivSetupMgr> SmackPrivGroupEnv::m_setupMgr;
+SmackPrivGroupEnv::SmackPrivSetupMgr* SmackPrivGroupEnv::m_setupMgr = nullptr;
+
+template<SmackPrivSetup T>
+class TestSetup
+{
+public:
+    void init(const std::string &) {
+        SmackPrivGroupEnv::Install(T);
+    }
+    void finish() {}
+};
+
+typedef TestSetup<SmackPrivSetup::INTERNET_ONLY> 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();