CKM: no more "empty password for lockscreen" logics.
[platform/core/test/security-tests.git] / tests / ckm / ckm-common.h
index 279bcd4..822a064 100644 (file)
 #include <unordered_set>
 #include <memory>
 #include <ckm/ckm-type.h>
+#include <ckmc/ckmc-error.h>
+#include <tests_common.h>
 
-void switch_to_app(const char* label);
+void switch_to_storage_user(const char* label);
+void switch_to_storage_ocsp_user(const char* label);
+
+
+// RUNNER_ASSERT wrappers
+template <typename F, typename... Args>
+void assert_result(int expected, F&& func, Args... args)
+{
+    int ret = func(args...);
+    RUNNER_ASSERT_MSG(ret == expected, "Expected " << expected << " got: " << ret);
+}
+
+template <typename F, typename... Args>
+void assert_positive(F&& func, Args... args)
+{
+    assert_result(CKMC_ERROR_NONE, std::move(func), args...);
+}
+
+template <typename F, typename... Args>
+void assert_invalid_param(F&& func, Args... args)
+{
+    assert_result(CKMC_ERROR_INVALID_PARAMETER, std::move(func), args...);
+}
+
+
+// list operations
+template <typename T>
+size_t list_size(const T* list)
+{
+    size_t size = 0;
+    while(list) {
+        list = list->next;
+        size++;
+    }
+    return size;
+}
+
+
+// service lifecycle management
+enum ServiceIdx {
+    LISTENER,
+    MANAGER
+};
+void start_service(ServiceIdx idx);
+void stop_service(ServiceIdx idx);
+
+// support for error printing
+const char * CKMCErrorToString(int error);
+std::string CKMCReadableError(int error);
 
 // Class responsible for db cleanup after positive tests. Will remove all used aliases in destructor
 class DBCleanup
@@ -33,27 +83,15 @@ class DBCleanup
 public:
     DBCleanup() {}
 
-    const char* key(const char* alias)
-    {
-        return m_keys.insert(CKM::Alias(alias)).first->c_str();
-    }
-
-    const char* cert(const char* alias)
+    const char* alias(const char* alias)
     {
-        return m_certs.insert(CKM::Alias(alias)).first->c_str();
-    }
-
-    const char* data(const char* alias)
-    {
-        return m_data.insert(CKM::Alias(alias)).first->c_str();
+        return m_aliases.insert(CKM::Alias(alias)).first->c_str();
     }
 
     ~DBCleanup();
 
 private:
-    std::unordered_set<CKM::Alias> m_keys;
-    std::unordered_set<CKM::Alias> m_certs;
-    std::unordered_set<CKM::Alias> m_data;
+    std::unordered_set<CKM::Alias> m_aliases;
 };
 
 // scoped free
@@ -62,6 +100,8 @@ typedef std::unique_ptr<char, void (*)(void *)> CharPtr;
 // returns process label
 CharPtr get_label();
 
+std::string aliasWithLabel(const char *label, const char *alias);
+
 // changes process label
 void change_label(const char* label);
 
@@ -75,3 +115,7 @@ public:
 private:
     CharPtr m_original_label;
 };
+
+void unlock_user_data(uid_t user_id, const char *passwd);
+void remove_user_data(uid_t user_id);
+void reset_user_data(uid_t user_id, const char *passwd);