CKM: added test for client app trying to add item to system DB [expected fail] 10/46710/3
authorMaciej J. Karpiuk <m.karpiuk2@samsung.com>
Tue, 25 Aug 2015 06:43:53 +0000 (08:43 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Tue, 25 Aug 2015 14:15:22 +0000 (16:15 +0200)
Change-Id: I1ed7359ac15ea5593ded8f77009454a1e517ea78

src/ckm/system-db.cpp

index d31e676..8304d48 100644 (file)
@@ -42,9 +42,10 @@ const uid_t GROUP_APP           = 5050;
 const char* APP_PASS            = "user-pass";
 
 const char* TEST_ALIAS          = "test-alias";
-const char* SYSTEM_LABEL        = "/";
-const char* TEST_SYSTEM_ALIAS   = "/ test-alias";
-const char* TEST_SYSTEM_ALIAS_2 = "/ test-alias-2";
+const char* SYSTEM_LABEL        = ckmc_label_shared_owner;
+const char* INVALID_LABEL       = "coco-jumbo";
+std::string TEST_SYSTEM_ALIAS   = aliasWithLabel(SYSTEM_LABEL, TEST_ALIAS);
+std::string TEST_SYSTEM_ALIAS_2 = aliasWithLabel(SYSTEM_LABEL, "test-alias-2");
 const char* TEST_LABEL          = "test-label";
 const char* TEST_LABEL_2        = "test-label-2";
 
@@ -74,8 +75,8 @@ RUNNER_TEST(T5010_CLIENT_APP_LOCKED_PRIVATE_DB)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
-    allow_access(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_READ);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
+    allow_access(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_READ);
 
     // [test]
     {
@@ -108,6 +109,27 @@ RUNNER_TEST(T5020_CLIENT_APP_ADD_TO_PRIVATE_DB)
     }
 }
 
+RUNNER_TEST(T5030_CLIENT_APP_TRY_ADDING_SYSTEM_ITEM)
+{
+    // [test]
+    // switch to user app, unlock DB
+    // try to add item to system DB  - expect fail
+
+    // [prepare]
+    remove_user_data(USER_APP);
+
+    // [test]
+    {
+        ScopedDBUnlock unlock(USER_APP, APP_PASS);
+        ScopedAccessProvider ap(TEST_LABEL);
+        ap.allowAPI("key-manager::api-storage", "rw");
+        ap.applyAndSwithToUser(USER_APP, GROUP_APP);
+
+        save_data(aliasWithLabel(SYSTEM_LABEL, TEST_ALIAS).c_str(), TEST_DATA, CKMC_ERROR_PERMISSION_DENIED);
+        check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA, CKMC_ERROR_DB_ALIAS_UNKNOWN);
+    }
+}
+
 RUNNER_TEST(T5031_CLIENT_APP_ACCESS_WITH_PERMISSION)
 {
     // [prepare]
@@ -121,8 +143,8 @@ RUNNER_TEST(T5031_CLIENT_APP_ACCESS_WITH_PERMISSION)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
-    allow_access(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_READ);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
+    allow_access(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_READ);
 
     // [test]
     {
@@ -147,7 +169,7 @@ RUNNER_TEST(T5032_CLIENT_APP_ACCESS_NO_PERMISSION)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
     {
@@ -179,8 +201,8 @@ RUNNER_TEST(T5033_CLIENT_APP_PERMISSION_REMOVAL)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
-    allow_access(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_READ);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
+    allow_access(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_READ);
 
     // [test]
     {
@@ -193,7 +215,7 @@ RUNNER_TEST(T5033_CLIENT_APP_PERMISSION_REMOVAL)
     }
 
     // [prepare2]
-    check_remove_allowed(TEST_SYSTEM_ALIAS);
+    check_remove_allowed(TEST_SYSTEM_ALIAS.c_str());
 
     // [test2]
     {
@@ -222,7 +244,7 @@ RUNNER_TEST(T5034_CLIENT_APP_SET_READ_ACCESS)
         ap.applyAndSwithToUser(USER_APP, GROUP_APP);
 
         ScopedSaveData ssdsystem_user(TEST_ALIAS, TEST_DATA);
-        ScopedSaveData ssdsystem_system(TEST_SYSTEM_ALIAS, TEST_DATA, CKMC_ERROR_PERMISSION_DENIED);
+        ScopedSaveData ssdsystem_system(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA, CKMC_ERROR_PERMISSION_DENIED);
         check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA, CKMC_ERROR_DB_ALIAS_UNKNOWN);
     }
 }
@@ -240,8 +262,8 @@ RUNNER_TEST(T5035_CLIENT_APP_TRY_REMOVING_SYSTEM_ITEM)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
-    allow_access(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_READ);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
+    allow_access(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_READ);
 
     // [test]
     {
@@ -250,7 +272,7 @@ RUNNER_TEST(T5035_CLIENT_APP_TRY_REMOVING_SYSTEM_ITEM)
         ap.applyAndSwithToUser(USER_APP, GROUP_APP);
         ScopedDBUnlock unlock(USER_APP, APP_PASS);
 
-        check_remove_denied(TEST_SYSTEM_ALIAS);
+        check_remove_denied(TEST_SYSTEM_ALIAS.c_str());
     }
 }
 
@@ -271,12 +293,12 @@ RUNNER_TEST(T5036_CLIENT_LIST_ACCESSIBLE_ITEMS)
     // [prepare]
     remove_user_data(USER_APP);
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
-    gc.save(TEST_SYSTEM_ALIAS_2, TEST_DATA);
-    allow_access(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_READ);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS_2.c_str(), TEST_DATA);
+    allow_access(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_READ);
 
     // [test]
-    check_alias_list({TEST_SYSTEM_ALIAS, TEST_SYSTEM_ALIAS_2});
+    check_alias_list({TEST_SYSTEM_ALIAS.c_str(), TEST_SYSTEM_ALIAS_2.c_str()});
 
     // [test2]
     {
@@ -286,7 +308,7 @@ RUNNER_TEST(T5036_CLIENT_LIST_ACCESSIBLE_ITEMS)
         ap.applyAndSwithToUser(USER_APP, GROUP_APP);
         ScopedSaveData user_data(TEST_ALIAS, TEST_DATA);
 
-        check_alias_list({TEST_SYSTEM_ALIAS,
+        check_alias_list({TEST_SYSTEM_ALIAS.c_str(),
                           aliasWithLabel(TEST_LABEL, TEST_ALIAS)});
     }
 }
@@ -421,10 +443,10 @@ RUNNER_TEST(T5039_SYSTEM_APP_SET_REMOVE_ACCESS)
 
     // [prepare]
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
-    allow_access_negative(TEST_SYSTEM_ALIAS, TEST_LABEL, CKMC_PERMISSION_REMOVE, CKMC_ERROR_INVALID_PARAMETER);
+    allow_access_negative(TEST_SYSTEM_ALIAS.c_str(), TEST_LABEL, CKMC_PERMISSION_REMOVE, CKMC_ERROR_INVALID_PARAMETER);
 }
 
 RUNNER_TEST(T5040_SYSTEM_SVC_ACCESS_DB)
@@ -437,7 +459,7 @@ RUNNER_TEST(T5040_SYSTEM_SVC_ACCESS_DB)
 
     // [prepare]
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
     check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA);
@@ -454,7 +476,7 @@ RUNNER_TEST(T5041_SYSTEM_SVC_1234_ACCESS_DB)
 
     // [prepare]
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
     {
@@ -482,7 +504,7 @@ RUNNER_TEST(T5042_SYSTEM_SVC_1234_ADD_ITEM_TO_DB)
         ap.applyAndSwithToUser(USER_SERVICE_2, GROUP_SERVICE_2);
 
         // [test]
-        ScopedSaveData ssd(TEST_SYSTEM_ALIAS, TEST_DATA);
+        ScopedSaveData ssd(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
         check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA);
     }
 }
@@ -498,7 +520,7 @@ RUNNER_TEST(T5043_SYSTEM_SVC_4999_ACCESS_DB)
 
     // [prepare]
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
     {
@@ -523,7 +545,7 @@ RUNNER_TEST(T5044_SYSTEM_SVC_5000_ACCESS_DB)
 
     // [prepare]
     GarbageCollector gc;
-    gc.save(TEST_SYSTEM_ALIAS, TEST_DATA);
+    gc.save(TEST_SYSTEM_ALIAS.c_str(), TEST_DATA);
 
     // [test]
     {
@@ -534,3 +556,22 @@ RUNNER_TEST(T5044_SYSTEM_SVC_5000_ACCESS_DB)
         check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA, CKMC_ERROR_DB_LOCKED);
     }
 }
+
+RUNNER_TEST(T5045_SYSTEM_DB_ADD_WITH_INVALID_LABEL)
+{
+    // [prepare]
+    // start as system service
+    // [test]
+    // try to add item to system DB using wrong label - expect fail
+    // try to add item using explicit system label - expect success
+
+    // [prepare]
+    remove_user_data(USER_APP);
+
+    // [test]
+    save_data(aliasWithLabel(INVALID_LABEL, TEST_ALIAS).c_str(), TEST_DATA, CKMC_ERROR_INVALID_PARAMETER);
+    check_read(TEST_ALIAS, INVALID_LABEL, TEST_DATA, CKMC_ERROR_DB_ALIAS_UNKNOWN);
+
+    save_data(aliasWithLabel(SYSTEM_LABEL, TEST_ALIAS).c_str(), TEST_DATA);
+    check_read(TEST_ALIAS, SYSTEM_LABEL, TEST_DATA);
+}