From a58d78479064e7e903f029b4811ab9acf118abf8 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Mon, 22 Sep 2014 16:03:36 +0200 Subject: [PATCH] Enhance CynaraTestAdmin with adminCheck() method 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 | 54 +++++++++++++++++++++++++ tests/cynara-tests/common/cynara_test_admin.h | 5 +++ 2 files changed, 59 insertions(+) diff --git a/tests/cynara-tests/common/cynara_test_admin.cpp b/tests/cynara-tests/common/cynara_test_admin.cpp index 0270510..d08263a 100644 --- a/tests/cynara-tests/common/cynara_test_admin.cpp +++ b/tests/cynara-tests/common/cynara_test_admin.cpp @@ -1,7 +1,10 @@ #include +#include #include #include +#include +#include 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()); +} + diff --git a/tests/cynara-tests/common/cynara_test_admin.h b/tests/cynara-tests/common/cynara_test_admin.h index f6b34f9..66efe6f 100644 --- a/tests/cynara-tests/common/cynara_test_admin.h +++ b/tests/cynara-tests/common/cynara_test_admin.h @@ -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; }; -- 2.7.4