Test async check before and after data insertion 57/29357/15
authorLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Fri, 24 Oct 2014 17:24:34 +0000 (19:24 +0200)
committerLukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Mon, 8 Dec 2014 10:18:34 +0000 (11:18 +0100)
This test:
* checks access in cynara with empty database;
* verifies that after response is received cache holds result;
* sets new policy (that should cause client disconnection);
* verifies that cache was cleared after disconnection;
* runs async checks on filled database.

Change-Id: If5ab19d51f83faaa802e02dae1e7526e6a9d5c61

tests/cynara-tests/test_cases_async.cpp

index f3f4265..0e04b33 100644 (file)
@@ -21,6 +21,7 @@
  * @brief       Tests for libcynara-client-async
  */
 
+#include <cynara_test_admin.h>
 #include <cynara_test_commons.h>
 #include <cynara_test_client_async_client.h>
 
@@ -167,6 +168,55 @@ void tca06_cancel_fail_func()
     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)
@@ -177,3 +227,4 @@ RUN_CYNARA_TEST(tca05_request_and_cancel1)
 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)