Enhance CynaraTestAdmin with adminCheck() method 73/27973/3
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Mon, 22 Sep 2014 14:03:36 +0000 (16:03 +0200)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Mon, 29 Sep 2014 08:03:51 +0000 (10:03 +0200)
adminCheck() method allows running and checking result of
cynara_admin_check() form libcynara-admin API.

It asserts result of cynara_admin_check() function call
and values of check results with expected values.

Change-Id: Id2a35b3b1f43f2802ccee14355b6efb8a5f5c511

tests/cynara-tests/common/cynara_test_admin.cpp
tests/cynara-tests/common/cynara_test_admin.h

index 0270510..d08263a 100644 (file)
@@ -1,7 +1,10 @@
 #include <cynara_test_admin.h>
+#include <memory.h>
 #include <tests_common.h>
 
 #include <fstream>
+#include <string>
+#include <sstream>
 
 namespace
 {
@@ -108,3 +111,54 @@ void CynaraTestAdmin::setBucket(const char *bucket, int operation, const char *e
                              << " operation: " << operation << ","
                              << " extra: " << formatCstr(extra));
 }
+
+void CynaraTestAdmin::adminCheck(const char *startBucket, int recursive,
+                                 const char *client, const char *user, const char *privilege,
+                                 int expectedCheckResult, const char *expectedCheckResultExtra,
+                                 int expectedResult)
+{
+    int checkResult;
+    char *checkResultExtra = nullptr;
+
+    int ret = cynara_admin_check(m_admin,
+                                 startBucket, recursive,
+                                 client, user, privilege,
+                                 &checkResult, &checkResultExtra);
+    CStringPtr extra(checkResultExtra);
+
+    auto dump = [&]() -> std::string
+    {
+        std::stringstream s;
+        s  << " functionReturn: " << ret << ","
+           << " functionExpectedReturn: " << expectedResult << ",";
+
+        s  << " startBucket: " << formatCstr(startBucket) << ","
+           << " recursive: " << recursive << ","
+           << " client: " << formatCstr(client) << ","
+           << " user: " << formatCstr(user) << ","
+           << " privilege: " << formatCstr(privilege) << ",";
+
+        s  << " checkResult: " << checkResult << ","
+           << " expectedCheckResult: " << expectedCheckResult << ","
+           << " checkResultExtra: " << formatCstr(checkResultExtra) << ","
+           << " expectedCheckResultExtra: " << formatCstr(expectedCheckResultExtra);
+        return s.str();
+    };
+
+    RUNNER_ASSERT_MSG(ret == expectedResult,
+                         "cynara_admin_check returned wrong value: "
+                             << ret << " != " << expectedResult << "."
+                             << dump());
+
+    RUNNER_ASSERT_MSG(checkResult == expectedCheckResult,
+                         "cynara_admin_check returned wrong check result: "
+                             << checkResult << " != " << expectedCheckResult << "."
+                             << dump());
+
+    RUNNER_ASSERT_MSG(formatCstr(checkResultExtra) == formatCstr(expectedCheckResultExtra),
+                         "cynara_admin_check returned wrong check result extra: "
+                             << formatCstr(checkResultExtra) << " != "
+                             << formatCstr(expectedCheckResultExtra) << "."
+                             << dump());
+}
+
index f6b34f9..66efe6f 100644 (file)
@@ -34,6 +34,11 @@ public:
                      int expectedResult = CYNARA_ADMIN_API_SUCCESS);
     void setBucket(const char *bucket, int operation, const char *extra,
                    int expectedResult = CYNARA_ADMIN_API_SUCCESS);
+    void adminCheck(const char *startBucket, int recursive,
+                    const char *client, const char *user, const char *privilege,
+                    int expectedCheckResult, const char *expectedCheckResultExtra,
+                    int expectedResult = CYNARA_ADMIN_API_SUCCESS);
+
 private:
     struct cynara_admin *m_admin;
 };