* @brief Tests for libcynara-client-async
*/
+#include <cynara_test_admin.h>
#include <cynara_test_commons.h>
#include <cynara_test_client_async_client.h>
client.cancel(id, CYNARA_API_INVALID_PARAM);
}
+void tca07_request_with_data_insertion_func()
+{
+ std::string testNo("07");
+ CynaraTestAdmin admin;
+ const char *bucket = CYNARA_ADMIN_DEFAULT_BUCKET;
+ const int resultAllow = CYNARA_ADMIN_ALLOW;
+ CheckData data[2] = {{testNo, 1}, {testNo, 2}};
+ RequestEntity callbackAllow = {RequestFunction(),
+ CYNARA_API_ACCESS_ALLOWED,
+ CYNARA_CALL_CAUSE_ANSWER};
+ RequestEntity callbackDeny = {RequestFunction(),
+ CYNARA_API_ACCESS_DENIED,
+ CYNARA_CALL_CAUSE_ANSWER};
+ cynara_check_id id;
+ Client client;
+
+ client.checkCache(data[0], CYNARA_API_CACHE_MISS);
+ client.checkCache(data[1], CYNARA_API_CACHE_MISS);
+
+ client.createRequest(data[0], id, callbackDeny);
+ client.assertStatus(READWRITE);
+ client.process();
+ client.assertStatus(READ);
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+ client.assertStatus(READ);
+
+ client.checkCache(data[0], CYNARA_API_ACCESS_DENIED);
+ client.checkCache(data[1], CYNARA_API_CACHE_MISS);
+
+ {
+ CynaraPoliciesContainer cp;
+ cp.add(bucket, data[0].toAdminPolicy(), resultAllow);
+ admin.setPolicies(cp);
+ }
+
+ client.checkCache(data[0], CYNARA_API_CACHE_MISS);
+ client.checkCache(data[1], CYNARA_API_CACHE_MISS);
+
+ client.createRequest(data[0], id, callbackAllow);
+ client.assertStatus(READWRITE);
+ client.process();
+ client.assertStatus(READ);
+ client.process(CYNARA_API_SUCCESS, Client::IGNORE_TIMEOUT);
+ client.assertStatus(READ);
+
+ client.checkCache(data[0], CYNARA_API_ACCESS_ALLOWED);
+ client.checkCache(data[1], CYNARA_API_CACHE_MISS);
+}
+
RUNNER_TEST_GROUP_INIT(cynara_async_tests)
RUN_CYNARA_TEST(tca01_initialize)
RUN_CYNARA_TEST(tca05_request_and_cancel2)
RUN_CYNARA_TEST(tca05_request_and_cancel3)
RUN_CYNARA_TEST(tca06_cancel_fail)
+RUN_CYNARA_TEST(tca07_request_with_data_insertion)