Adjust tests to allow change of hybrid flag 48/174148/6
authorPawel Kowalski <p.kowalski2@partner.samsung.com>
Wed, 28 Mar 2018 12:08:59 +0000 (14:08 +0200)
committerPawel Kowalski <p.kowalski2@partner.samsung.com>
Tue, 24 Apr 2018 13:21:06 +0000 (15:21 +0200)
Change-Id: I37f387e79a07cf1a5b16d673693d01c3932b781b

src/common/sm_api.cpp
src/common/sm_api.h
src/security-manager-tests/test_cases.cpp

index 7f07a86..ec1d817 100644 (file)
@@ -32,6 +32,16 @@ void install(const InstallRequest &request, lib_retcode expectedResult)
                           << " Expected result: " << expectedResult);
 }
 
+void update(const InstallRequest &request, lib_retcode expectedResult)
+{
+    int result = security_manager_app_update(request.get());
+    RUNNER_ASSERT_MSG((lib_retcode)result == expectedResult,
+                      "installing app returned wrong value."
+                          << " InstallRequest: [ " << request << "];"
+                          << " Result: " << result << ";"
+                          << " Expected result: " << expectedResult);
+}
+
 void uninstall(const InstallRequest &request, lib_retcode expectedResult)
 {
     int result = security_manager_app_uninstall(request.get());
index e1c8efe..cef222c 100644 (file)
@@ -30,6 +30,7 @@ namespace SecurityManagerTest {
 namespace Api {
 
 void install(const InstallRequest &request, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
+void update(const InstallRequest &request, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
 void uninstall(const InstallRequest &request, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
 std::string getPkgId(const std::string &appId, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
 void setProcessLabel(const std::string &appId, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
index c87399d..05c52c4 100644 (file)
@@ -446,6 +446,30 @@ RUNNER_TEST(security_manager_09_app_install_constraint_check)
         }
     };
 
+    auto update = [](const TemporaryTestUser& user,
+                     const char *pkgId,
+                     const char *appId,
+                     const char *version,
+                     const char *author,
+                     bool isHybrid,
+                     enum lib_retcode expected,
+                     bool uninstall = true)
+    {
+        InstallRequest request;
+        request.setAppId(appId);
+        request.setPkgId(pkgId);
+        request.setAppTizenVersion(version);
+        request.setAuthorId(author);
+        request.setUid(user.getUid());
+        if (isHybrid)
+            request.setHybrid();
+        Api::update(request, expected);
+
+        if(expected == SECURITY_MANAGER_SUCCESS && uninstall) {
+            Api::uninstall(request);
+        }
+    };
+
     std::vector<TemporaryTestUser> users = {
             {"sm_test_09_user_name_0", GUM_USERTYPE_NORMAL, false},
             {"sm_test_09_user_name_1", GUM_USERTYPE_NORMAL, false}
@@ -464,16 +488,18 @@ RUNNER_TEST(security_manager_09_app_install_constraint_check)
     install(users[0], pkgId[0], appId[0], version[0], author[0], hybrid[0], SECURITY_MANAGER_SUCCESS, false);
     // uid_1, pkg_0, app_0, version_0, author_0, not hybrid -> ok (different uid)
     install(users[1], pkgId[0], appId[0], version[0], author[0], hybrid[0], SECURITY_MANAGER_SUCCESS);
-    // uid_0, pkg_0, app_0, version_0, author_0, hybrid -> fail (different hybrid setting)
+    // uid_0, pkg_0, app_0, version_0, author_0, hybrid -> ok for update (different hybrid setting)
     install(users[0], pkgId[0], appId[0], version[0], author[0], hybrid[1], SECURITY_MANAGER_ERROR_INPUT_PARAM);
-    // uid_0, pkg_0, app_1, version_0, author_0, hybrid -> fail (different hybrid setting)
-    install(users[0], pkgId[0], appId[1], version[0], author[0], hybrid[1],  SECURITY_MANAGER_ERROR_INPUT_PARAM);
-    // uid_1, pkg_0, app_0, version_0, author_0, hybrid -> fail (different hybrid setting)
-    install(users[1], pkgId[0], appId[0], version[0], author[0], hybrid[1], SECURITY_MANAGER_ERROR_INPUT_PARAM);
+    update(users[0], pkgId[0], appId[0], version[0], author[0], hybrid[1], SECURITY_MANAGER_SUCCESS, false);
+    // uid_0, pkg_0, app_1, version_0, author_0, hybrid -> ok (new app id)
+    install(users[0], pkgId[0], appId[1], version[0], author[0], hybrid[1], SECURITY_MANAGER_SUCCESS, false);
+    // uid_1, pkg_0, app_0, version_0, author_0, hybrid -> ok (different hybrid setting)
+    install(users[1], pkgId[0], appId[0], version[0], author[0], hybrid[1], SECURITY_MANAGER_SUCCESS, false);
     // uid_1, pkg_0, app_0, version_0, author_1, not hybrid -> fail (author of app_0 must be the same)
     install(users[1], pkgId[0], appId[0], version[0], author[1], hybrid[0], SECURITY_MANAGER_ERROR_INPUT_PARAM);
-    // uid_1, pkg_0, app_0, version_1, author_0, not hybrid -> ok (version upgrade)
-    install(users[1], pkgId[0], appId[0], version[1], author[0], hybrid[0], SECURITY_MANAGER_SUCCESS);
+    // uid_1, pkg_0, app_0, version_1, author_0, not hybrid -> ok (version upgrade and different hybrid setting)
+    install(users[1], pkgId[0], appId[0], version[1], author[0], hybrid[0], SECURITY_MANAGER_ERROR_INPUT_PARAM);
+    update(users[1], pkgId[0], appId[0], version[1], author[0], hybrid[0], SECURITY_MANAGER_SUCCESS);
     // uid_1, pkg_1, app_0, version_0, author_0, not hybrid -> fail (pkg of app_0 must be the same)
     install(users[1], pkgId[1], appId[0], version[0], author[0], hybrid[0], SECURITY_MANAGER_ERROR_INPUT_PARAM);
     // uid_0, pkg_0, app_0, version_0, author_0, not hybrid -> ok (the same app again)