Prepare service for database corruption handling
[platform/core/security/cynara.git] / test / common / protocols / admin / listresponse.cpp
index fddd2ca..67ea03d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
  *    you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
 /**
  * @file        test/common/protocols/admin/listresponse.cpp
  * @author      Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
+ * @author      Pawel Wieczorek <p.wieczorek2@samsung.com>
  * @version     1.0
  * @brief       Tests for Cynara::ListResponse usage in Cynara::ProtocolAdmin
  */
@@ -37,10 +38,13 @@ template<>
 void compare(const Cynara::ListResponse &resp1, const Cynara::ListResponse &resp2) {
     EXPECT_EQ(resp1.policies(), resp2.policies());
     EXPECT_EQ(resp1.isBucketValid(), resp2.isBucketValid());
+    EXPECT_EQ(resp1.isDbCorrupted(), resp2.isDbCorrupted());
 }
 
 static const bool VALID_BUCKET = true;
 static const bool NO_BUCKET = false;
+static const bool DB_OK = false;
+static const bool DB_CORRUPTED = true;
 
 } /* namespace anonymous */
 
@@ -55,7 +59,7 @@ TEST(ProtocolAdmin, ListResponse01) {
         Policy(Keys::k_nun, Results::allow),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -65,7 +69,7 @@ TEST(ProtocolAdmin, ListResponse02) {
         Policy(Keys::k_cup, Results::deny),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -75,7 +79,7 @@ TEST(ProtocolAdmin, ListResponse03) {
         Policy(Keys::k_www, Results::bucket_empty),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_2);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_2);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -85,7 +89,7 @@ TEST(ProtocolAdmin, ListResponse04) {
         Policy(Keys::k_wuw, Results::bucket_not_empty),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -95,7 +99,7 @@ TEST(ProtocolAdmin, ListResponse05) {
         Policy(Keys::k_aaa, Results::none),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -105,7 +109,7 @@ TEST(ProtocolAdmin, ListResponse06) {
         Policy(Keys::k_wua, Results::plugin_1),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max_2);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max_2);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -115,7 +119,7 @@ TEST(ProtocolAdmin, ListResponse07) {
         Policy(Keys::k_nua, Results::plugin_2),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::mid);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::mid);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -131,7 +135,7 @@ TEST(ProtocolAdmin, ListResponseMultiplePolicies) {
         Policy(Keys::k_nua, Results::plugin_2),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -139,7 +143,7 @@ TEST(ProtocolAdmin, ListResponseMultiplePolicies) {
 TEST(ProtocolAdmin, ListResponseEmptyPolicies) {
     std::vector<Policy> policies;
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -147,7 +151,22 @@ TEST(ProtocolAdmin, ListResponseEmptyPolicies) {
 TEST(ProtocolAdmin, ListResponseNoBucket) {
     std::vector<Policy> policies;
 
-    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, SN::min_2);
+    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, DB_OK, SN::min_2);
+    auto protocol = std::make_shared<ProtocolAdmin>();
+    testResponse(response, protocol);
+}
+
+/**
+ * @brief   Verify if ListResponse is properly (de)serialized while database is corrupted
+ * @test    Expected result:
+ * - policies vector is empty
+ * - bucketValid flag set to false (NO_BUCKET)
+ * - dbCorrupted flag set to true (DB_CORRUPTED)
+ */
+TEST(ProtocolAdmin, ListResponseDatabaseCorrupted) {
+    std::vector<Policy> policies;
+
+    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, DB_CORRUPTED, SN::max);
     auto protocol = std::make_shared<ProtocolAdmin>();
     testResponse(response, protocol);
 }
@@ -159,7 +178,7 @@ TEST(ProtocolAdmin, ListResponseBinary01) {
         Policy(Keys::k_nun, Results::allow),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -169,7 +188,7 @@ TEST(ProtocolAdmin, ListResponseBinary02) {
         Policy(Keys::k_cup, Results::deny),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -179,7 +198,7 @@ TEST(ProtocolAdmin, ListResponseBinary03) {
         Policy(Keys::k_www, Results::bucket_empty),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_2);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_2);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -189,7 +208,7 @@ TEST(ProtocolAdmin, ListResponseBinary04) {
         Policy(Keys::k_wuw, Results::bucket_not_empty),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -199,7 +218,7 @@ TEST(ProtocolAdmin, ListResponseBinary05) {
         Policy(Keys::k_aaa, Results::none),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -209,7 +228,7 @@ TEST(ProtocolAdmin, ListResponseBinary06) {
         Policy(Keys::k_wua, Results::plugin_1),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::max_2);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::max_2);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -219,7 +238,7 @@ TEST(ProtocolAdmin, ListResponseBinary07) {
         Policy(Keys::k_nua, Results::plugin_2),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::mid);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::mid);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -235,7 +254,7 @@ TEST(ProtocolAdmin, ListResponseBinaryMultiplePolicies) {
         Policy(Keys::k_nua, Results::plugin_2),
     };
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -243,7 +262,7 @@ TEST(ProtocolAdmin, ListResponseBinaryMultiplePolicies) {
 TEST(ProtocolAdmin, ListResponseBinaryEmptyPolicies) {
     std::vector<Policy> policies;
 
-    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, SN::min_1);
+    auto response = std::make_shared<ListResponse>(policies, VALID_BUCKET, DB_OK, SN::min_1);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }
@@ -251,7 +270,22 @@ TEST(ProtocolAdmin, ListResponseBinaryEmptyPolicies) {
 TEST(ProtocolAdmin, ListResponseBinaryNoBucket) {
     std::vector<Policy> policies;
 
-    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, SN::min_2);
+    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, DB_OK, SN::min_2);
+    auto protocol = std::make_shared<ProtocolAdmin>();
+    binaryTestResponse(response, protocol);
+}
+
+/**
+ * @brief   Verify if ListResponse is properly (de)serialized while database is corrupted
+ * @test    Expected result:
+ * - policies vector is empty
+ * - bucketValid flag set to false (NO_BUCKET)
+ * - dbCorrupted flag set to true (DB_CORRUPTED)
+ */
+TEST(ProtocolAdmin, ListResponseBinaryDatabaseCorrupted) {
+    std::vector<Policy> policies;
+
+    auto response = std::make_shared<ListResponse>(policies, NO_BUCKET, DB_CORRUPTED, SN::max);
     auto protocol = std::make_shared<ProtocolAdmin>();
     binaryTestResponse(response, protocol);
 }