Add cynara test client class 79/24279/20
authorMarcin Niesluchowski <m.niesluchow@samsung.com>
Wed, 9 Jul 2014 13:52:12 +0000 (15:52 +0200)
committerZofia Abramowska <z.abramowska@samsung.com>
Fri, 1 Aug 2014 11:49:11 +0000 (13:49 +0200)
Change-Id: I8ef613c06d5fbe2a3764aaac7fa1b0b1009a860b

tests/common/tests_common.cpp
tests/common/tests_common.h
tests/cynara-tests/CMakeLists.txt
tests/cynara-tests/common/cynara_test_admin.cpp
tests/cynara-tests/common/cynara_test_client.cpp [new file with mode: 0644]
tests/cynara-tests/common/cynara_test_client.h [new file with mode: 0644]

index 77b838e0038ff45a4a496e469d5de6d2f62372e0..e55ec75f6e4b7c80ec6790cfe87ded7e98bc1adf 100644 (file)
@@ -130,3 +130,10 @@ void remove_process_group(const char* group_name)
         RUNNER_ASSERT_MSG_BT(ret == 0, "setgroups() failed. " << strerror(error));
     }
 }
+
+std::string formatCstr(const char *cstr)
+{
+    if (!cstr)
+        return std::string("nullptr");
+    return std::string("\"") + cstr + "\"";
+}
index 2f6ea2cb0d87b7105e118941c9c88010a75fefe9..98e6a5b664a9007033d963285a3c3e16f97b65d7 100644 (file)
@@ -30,6 +30,7 @@
 #include <dpl/test/test_runner_multiprocess.h>
 #include <privilege-control.h>
 #include <sys/smack.h>
+#include <string>
 
 #include "gdbbacktrace.h"
 
@@ -44,6 +45,7 @@ int drop_root_privileges(void);
 void setLabelForSelf(const int line, const char *label);
 void add_process_group(const char* group_name);
 void remove_process_group(const char* group_name);
+std::string formatCstr(const char *cstr);
 
 #define RUNNER_TEST_SMACK(Proc)                                                     \
     void Proc();                                                                    \
index 56a0a3cccbe1a8c4b36a4dce05c06990958bcf8f..4214770819e7d76f4cba61300247c191e2ab2dd1 100644 (file)
@@ -14,6 +14,7 @@ PKG_CHECK_MODULES(CYNARA_TARGET_DEP
 #files to compile
 SET(CYNARA_TARGET_TEST_SOURCES
     ${PROJECT_SOURCE_DIR}/tests/cynara-tests/common/cynara_test_admin.cpp
+    ${PROJECT_SOURCE_DIR}/tests/cynara-tests/common/cynara_test_client.cpp
     ${PROJECT_SOURCE_DIR}/tests/cynara-tests/cynara-test.cpp
     ${PROJECT_SOURCE_DIR}/tests/cynara-tests/cynara_client.cpp
     )
index a3ad1404e51a9f9a412fa044876c949611f39665..2c4c45876bafd0f7f12082bf6bd65d6e45546de6 100644 (file)
@@ -6,13 +6,6 @@
 namespace
 {
 
-std::string formatCstr(const char *cstr)
-{
-    if (!cstr)
-        return std::string("nullptr");
-    return std::string("\"") + cstr + "\"";
-}
-
 std::ostream& operator<<(std::ostream& os, const cynara_admin_policy *const *policies)
 {
 
diff --git a/tests/cynara-tests/common/cynara_test_client.cpp b/tests/cynara-tests/common/cynara_test_client.cpp
new file mode 100644 (file)
index 0000000..4ac7a79
--- /dev/null
@@ -0,0 +1,31 @@
+#include <cynara_test_client.h>
+
+#include <tests_common.h>
+
+CynaraTestClient::CynaraTestClient()
+    : m_cynara(nullptr)
+{
+    int ret = cynara_initialize(&m_cynara, nullptr);
+    RUNNER_ASSERT_MSG_BT(ret == CYNARA_API_SUCCESS,
+                         "cynara_initialize failed. ret: " << ret);
+    RUNNER_ASSERT_MSG_BT(m_cynara != nullptr, "cynara struct was not initialized");
+}
+
+CynaraTestClient::~CynaraTestClient()
+{
+    cynara_finish(m_cynara);
+}
+
+void CynaraTestClient::check(const char *client, const char *session,
+                             const char *user, const char *privilege,
+                             int expectedResult)
+{
+    int ret = cynara_check(m_cynara, client, session, user, privilege);
+    RUNNER_ASSERT_MSG_BT(ret == expectedResult,
+                         "cynara_check returned wrong value: "
+                             << ret << " != " << expectedResult << "."
+                             << " client: " << formatCstr(client) << ","
+                             << " session: " << formatCstr(session) << ","
+                             << " user: " << formatCstr(user) << ","
+                             << " privilege: " << formatCstr(privilege));
+}
diff --git a/tests/cynara-tests/common/cynara_test_client.h b/tests/cynara-tests/common/cynara_test_client.h
new file mode 100644 (file)
index 0000000..dd33fa3
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef CYNARA_TEST_CLIENT_H
+#define CYNARA_TEST_CLIENT_H
+
+#include <cynara-client.h>
+
+class CynaraTestClient
+{
+public:
+    CynaraTestClient();
+    virtual ~CynaraTestClient();
+
+    void check(const char *client, const char *session,
+               const char *user, const char *privilege,
+               int expectedResult);
+
+private:
+    struct cynara *m_cynara;
+};
+
+#endif // CYNARA_TEST_CLIENT_H