Apply defer macros to callbacks in cynara async client
[platform/core/test/security-tests.git] / src / cynara-tests / common / cynara_test_client_async_request_monitor.cpp
index ee08c7e..3827797 100644 (file)
@@ -53,48 +53,50 @@ void RequestMonitor::registerRequest(cynara_check_id id, const RequestEntity &re
 void RequestMonitor::updateResponse(cynara_check_id checkId, cynara_async_call_cause cause,
                                     int response, void *data)
 {
-    RequestMonitor *monitor = reinterpret_cast<RequestMonitor*>(data);
-    if (!monitor) {
-        RUNNER_FAIL_MSG("Bad user data (nullptr) in response callback.");
-        return;
-    }
-
-    auto it = monitor->m_requests.find(checkId);
-    if (it == monitor->m_requests.end()) {
-        RUNNER_FAIL_MSG("Received unexpected callback for request:"
-                           << "id = " << checkId << ","
-                           << "response = " << response << ","
-                           << "cause = " << cause << ".");
-        return;
-    }
+    RUNNER_DEFER_TRYCATCH(
+        RequestMonitor *monitor = reinterpret_cast<RequestMonitor*>(data);
+        if (!monitor) {
+            RUNNER_FAIL_MSG("Bad user data (nullptr) in response callback.");
+            return;
+        }
 
-    //save request data and remove request from monitored requests
-    auto expectedResponse = it->second.m_expectedResponse;
-    auto expectedCause = it->second.m_expectedCause;
-    auto userFunction = it->second.m_userFunction;
-    monitor->m_requests.erase(it);
+        auto it = monitor->m_requests.find(checkId);
+        if (it == monitor->m_requests.end()) {
+            RUNNER_FAIL_MSG("Received unexpected callback for request:"
+                               << "id = " << checkId << ","
+                               << "response = " << response << ","
+                               << "cause = " << cause << ".");
+            return;
+        }
 
-    RUNNER_ASSERT_MSG(cause == expectedCause,
-                         "Unexpected cause in response callback:"
-                            << "id = " << checkId << ","
-                            << "received response = " << response << ","
-                            << "expected response = " << expectedResponse << ","
-                            << "received cause = " << cause << ","
-                            << "expected cause = " << expectedCause << ".");
+        //save request data and remove request from monitored requests
+        auto expectedResponse = it->second.m_expectedResponse;
+        auto expectedCause = it->second.m_expectedCause;
+        auto userFunction = it->second.m_userFunction;
+        monitor->m_requests.erase(it);
 
-    if (cause == CYNARA_CALL_CAUSE_ANSWER)
-    {
-        RUNNER_ASSERT_MSG(response == expectedResponse,
-                             "Unexpected response in response callback:"
+        RUNNER_ASSERT_MSG(cause == expectedCause,
+                             "Unexpected cause in response callback:"
                                 << "id = " << checkId << ","
                                 << "received response = " << response << ","
                                 << "expected response = " << expectedResponse << ","
                                 << "received cause = " << cause << ","
                                 << "expected cause = " << expectedCause << ".");
-    }
 
-    if (userFunction)
-        userFunction();
+        if (cause == CYNARA_CALL_CAUSE_ANSWER)
+        {
+            RUNNER_ASSERT_MSG(response == expectedResponse,
+                                 "Unexpected response in response callback:"
+                                    << "id = " << checkId << ","
+                                    << "received response = " << response << ","
+                                    << "expected response = " << expectedResponse << ","
+                                    << "received cause = " << cause << ","
+                                    << "expected cause = " << expectedCause << ".");
+        }
+
+        if (userFunction)
+            userFunction();
+    );
 }
 
 }// namespace CynaraTestClientAsync