#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
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
// returns process label
CharPtr get_label();
+std::string aliasWithLabel(const char *label, const char *alias);
+
// changes process label
void change_label(const char* label);
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);