summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-08-05 21:01:36 -0400
committerJackLivio <jack@livio.io>2018-08-05 21:01:36 -0400
commit1c57b4f323f513b6e21b0ad69570dd27e8a1f956 (patch)
tree589b8e9df7f5e94ceae9dd94103b16c7675b08be
parentbb7175f67985b5595f0b21968a8c3c6db27995db (diff)
downloadsdl_core-1c57b4f323f513b6e21b0ad69570dd27e8a1f956.tar.gz
Add history unit test for CObjectSchemaItem
-rw-r--r--src/components/smart_objects/test/CObjectSchemaItem_test.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/components/smart_objects/test/CObjectSchemaItem_test.cc b/src/components/smart_objects/test/CObjectSchemaItem_test.cc
index 523b25a8d8..c49a1bb302 100644
--- a/src/components/smart_objects/test/CObjectSchemaItem_test.cc
+++ b/src/components/smart_objects/test/CObjectSchemaItem_test.cc
@@ -44,6 +44,7 @@
#include "smart_objects/object_schema_item.h"
#include "formatters/generic_json_formatter.h"
#include "formatters/CSmartFactory.h"
+#include "utils/semantic_version.h"
namespace formatters = NsSmartDeviceLink::NsJSONHandler::Formatters;
namespace smartobj = NsSmartDeviceLink::NsSmartObjects;
@@ -136,6 +137,16 @@ class ObjectSchemaItemTest : public ::testing::Test {
schemaMembersMap[Keys::SUCCESS] =
CObjectSchemaItem::SMember(CBoolSchemaItem::create(), false);
+ // Create fake param that has breaking history changes
+ std::vector<CObjectSchemaItem::SMember> fake_param_history_vector;
+
+ std::shared_ptr<ISchemaItem> fake_param_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100));
+
+ std::shared_ptr<ISchemaItem> fake_param_history_v1_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100));
+
+ fake_param_history_vector.push_back(CObjectSchemaItem::SMember(fake_param_history_v1_SchemaItem, true, "", "4.5.0", false, false));
+ schemaMembersMap["fakeParam"] = CObjectSchemaItem::SMember(fake_param_SchemaItem, false, "4.5.0", "", false, false, fake_param_history_vector);
+
CObjectSchemaItem::Members rootMembersMap;
rootMembersMap[S_PARAMS] = CObjectSchemaItem::SMember(
CObjectSchemaItem::create(paramsMembersMap), true);
@@ -160,6 +171,35 @@ TEST_F(ObjectSchemaItemTest, validation_correct) {
EXPECT_EQ(std::string(""), rpc::PrettyFormat(report));
}
+TEST_F(ObjectSchemaItemTest, validation_correct_with_new_version) {
+ SmartObject obj;
+ obj[S_PARAMS][S_FUNCTION_ID] = 0;
+ obj[S_PARAMS][S_CORRELATION_ID] = 0XFF0;
+ obj[S_PARAMS][S_PROTOCOL_VERSION] = 1;
+ obj[S_MSG_PARAMS][Keys::RESULT_CODE] = 0;
+ obj[S_MSG_PARAMS][Keys::INFO] = "0123456789";
+ obj[S_MSG_PARAMS][Keys::SUCCESS] = true;
+
+ utils::SemanticVersion messageVersion(4,5,0);
+ rpc::ValidationReport report("RPC");
+ EXPECT_EQ(Errors::OK, schema_item->validate(obj, &report, messageVersion));
+ EXPECT_EQ(std::string(""), rpc::PrettyFormat(report));
+}
+
+TEST_F(ObjectSchemaItemTest, validation_invalid_data_with_old_version) {
+ SmartObject obj;
+ obj[S_PARAMS][S_FUNCTION_ID] = 0;
+ obj[S_PARAMS][S_CORRELATION_ID] = 0XFF0;
+ obj[S_PARAMS][S_PROTOCOL_VERSION] = 1;
+ obj[S_MSG_PARAMS][Keys::RESULT_CODE] = 0;
+ obj[S_MSG_PARAMS][Keys::INFO] = "0123456789";
+ obj[S_MSG_PARAMS][Keys::SUCCESS] = true;
+
+ utils::SemanticVersion messageVersion(3,0,0);
+ rpc::ValidationReport report("RPC");
+ EXPECT_EQ(Errors::MISSING_MANDATORY_PARAMETER, schema_item->validate(obj, &report, messageVersion));
+}
+
TEST_F(ObjectSchemaItemTest, validation_correct_skip_not_mandatory) {
SmartObject obj;
obj[S_PARAMS][S_FUNCTION_ID] = 1;