/*
- * 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.
/**
* @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
*/
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 */
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}