diff options
author | Veronica Veremjova <VVeremjova@luxoft.com> | 2015-12-23 15:42:48 +0200 |
---|---|---|
committer | Veronica Veremjova <VVeremjova@luxoft.com> | 2015-12-25 11:34:13 +0200 |
commit | 9a81ef55b6e96ba42dde5deda9804f1d31126116 (patch) | |
tree | 7ef791aa50193d15f82ff1bcfb7aba08cb7b39a6 /src/components/formatters/test/formatter_json_rpc_test.cc | |
parent | cc166d8a26bf4f612cace366f51f805a297d72f9 (diff) | |
download | sdl_core-9a81ef55b6e96ba42dde5deda9804f1d31126116.tar.gz |
Add unit tests for formatter json
Added tests for converting smart object with response and error response
types into string
Relates: APPLINK-20090
Diffstat (limited to 'src/components/formatters/test/formatter_json_rpc_test.cc')
-rw-r--r-- | src/components/formatters/test/formatter_json_rpc_test.cc | 219 |
1 files changed, 169 insertions, 50 deletions
diff --git a/src/components/formatters/test/formatter_json_rpc_test.cc b/src/components/formatters/test/formatter_json_rpc_test.cc index 24bdc2fa3f..e4bef19cae 100644 --- a/src/components/formatters/test/formatter_json_rpc_test.cc +++ b/src/components/formatters/test/formatter_json_rpc_test.cc @@ -30,9 +30,10 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <algorithm> -#include "gtest/gtest.h" #include "formatters/formatter_json_rpc.h" +#include <string> +#include <set> +#include "gtest/gtest.h" #include "formatters/CSmartFactory.hpp" #include "HMI_API_schema.h" #include "MOBILE_API_schema.h" @@ -45,7 +46,7 @@ using namespace NsSmartDeviceLink::NsSmartObjects; using namespace NsSmartDeviceLink::NsJSONHandler::Formatters; using namespace NsSmartDeviceLink::NsJSONHandler::strings; -TEST(FormatterJsonRPCTest, CorrectRPCv1_request_SmartObjectToString_EXPECT_SUCCESS) { +TEST(FormatterJsonRPCTest, CorrectRPCv1Request_ToString_Success) { // Create SmartObject SmartObject obj; obj[S_PARAMS][S_FUNCTION_ID] = hmi_apis::FunctionID::VR_IsReady; @@ -59,15 +60,15 @@ TEST(FormatterJsonRPCTest, CorrectRPCv1_request_SmartObjectToString_EXPECT_SUCCE EXPECT_TRUE(factory.attachSchema(obj)); std::string result; - // Convert SmrtObject to Json string + // Convert SmartObject to Json string EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); - EXPECT_EQ( - std::string( - "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"VR.IsReady\"\n}\n"), - result); + EXPECT_EQ(std::string( + "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n " + "\"method\" : \"VR.IsReady\"\n}\n"), + result); } -TEST(FormatterJsonRPCTest, CorrectRPCv2_request_SmartObjectToString_EXPECT_SUCCESS) { +TEST(FormatterJsonRPCTest, CorrectRPCv2Request_ToString_Success) { // Create SmartObject SmartObject obj; obj[S_PARAMS][S_FUNCTION_ID] = mobile_apis::FunctionID::AddCommandID; @@ -79,15 +80,15 @@ TEST(FormatterJsonRPCTest, CorrectRPCv2_request_SmartObjectToString_EXPECT_SUCCE EXPECT_TRUE(factory.attachSchema(obj)); std::string result; - // Convert SmrtObject to Json string + // Convert SmartObject to Json string EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); - EXPECT_EQ( - std::string( - "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"AddCommandID\"\n}\n"), - result); + EXPECT_EQ(std::string( + "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n " + "\"method\" : \"AddCommandID\"\n}\n"), + result); } -TEST(FormatterJsonRPCTest, CorrectRPCv1_notification_SmartObjectToString_EXPECT_SUCCESS) { +TEST(FormatterJsonRPCTest, CorrectRPCv1Notification_ToString_Success) { // Create SmartObject SmartObject obj; std::string result; @@ -100,20 +101,137 @@ TEST(FormatterJsonRPCTest, CorrectRPCv1_notification_SmartObjectToString_EXPECT_ // Attach Schema hmi_apis::HMI_API factory; EXPECT_TRUE(factory.attachSchema(obj)); - // Convert SmrtObject to Json string + // Convert SmartObject to Json string + EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); + EXPECT_EQ(std::string( + "{\n \"jsonrpc\" : \"2.0\",\n \"method\" : " + "\"Buttons.OnButtonPress\",\n \"params\" : {}\n}\n"), + result); +} + +TEST(FormatterJsonRPCTest, CorrectResponseToString_Success) { + // Create SmartObject + SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = hmi_apis::FunctionID::VR_AddCommand; + obj[S_PARAMS][S_MESSAGE_TYPE] = hmi_apis::messageType::response; + obj[S_PARAMS][S_CORRELATION_ID] = 4440; + obj[S_PARAMS][kCode] = hmi_apis::Common_Result::SUCCESS; + obj[S_MSG_PARAMS] = SmartObject(SmartType::SmartType_Map); + // Attach Schema + hmi_apis::HMI_API factory; + EXPECT_TRUE(factory.attachSchema(obj)); + + std::string result; + // Convert SmartObject to Json string + EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); + EXPECT_EQ(std::string( + "{\n \"id\" : 4440,\n \"jsonrpc\" : \"2.0\",\n " + "\"result\" : {\n \"code\" : 0,\n \"method\" : " + "\"VR.AddCommand\"\n }\n}\n"), + result); +} + +TEST(FormatterJsonRPCTest, ErrorResponse_ToString_Success) { + // Create SmartObject + SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = hmi_apis::FunctionID::VR_AddCommand; + obj[S_PARAMS][S_MESSAGE_TYPE] = hmi_apis::messageType::error_response; + obj[S_PARAMS][S_CORRELATION_ID] = 4440; + obj[S_PARAMS][kCode] = hmi_apis::Common_Result::GENERIC_ERROR; + obj[S_PARAMS][kMessage] = "Some error"; + obj[S_MSG_PARAMS] = SmartObject(SmartType::SmartType_Map); + // Attach Schema + hmi_apis::HMI_API factory; + EXPECT_TRUE(factory.attachSchema(obj)); + + std::string result; + // Convert SmartObject to Json string + EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); + EXPECT_EQ(std::string( + "{\n \"error\" : {\n \"code\" : 22,\n \"data\" : " + "{\n \"method\" : \"VR.AddCommand\"\n },\n " + "\"message\" : \"Some error\"\n },\n \"id\" : 4440,\n " + "\"jsonrpc\" : \"2.0\"\n}\n"), + result); +} + +TEST(FormatterJsonRPCTest, ResponseWithoutCode_ToString_Success) { + // Create SmartObject + SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = hmi_apis::FunctionID::VR_AddCommand; + obj[S_PARAMS][S_MESSAGE_TYPE] = hmi_apis::messageType::response; + obj[S_PARAMS][S_PROTOCOL_VERSION] = 2; + obj[S_PARAMS][S_PROTOCOL_TYPE] = 1; + obj[S_PARAMS][S_CORRELATION_ID] = 4444; + obj[S_MSG_PARAMS] = SmartObject(SmartType::SmartType_Map); + // Attach Schema + hmi_apis::HMI_API factory; + EXPECT_TRUE(factory.attachSchema(obj)); + + std::string result; + // Convert SmartObject to Json string will finish wrong + EXPECT_FALSE(FormatterJsonRpc::ToString(obj, result)); +} + +TEST(FormatterJsonRPCTest, RequestWithoutMSGParams_ToString_Success) { + // Create SmartObject + SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = mobile_apis::FunctionID::AddCommandID; + obj[S_PARAMS][S_MESSAGE_TYPE] = mobile_apis::messageType::request; + obj[S_PARAMS][S_CORRELATION_ID] = 4444; + // Attach Schema + mobile_apis::MOBILE_API factory; + EXPECT_TRUE(factory.attachSchema(obj)); + + std::string result; + // Convert SmartObject to Json string EXPECT_TRUE(FormatterJsonRpc::ToString(obj, result)); - EXPECT_EQ( - std::string( - "{\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"Buttons.OnButtonPress\",\n \"params\" : {}\n}\n"), - result); + EXPECT_EQ(std::string( + "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n " + "\"method\" : \"AddCommandID\"\n}\n"), + result); } -TEST(FormatterJsonRPCTest, InvalidRPC_SmartObjectToString_EXPECT_FALSE) { +TEST(FormatterJsonRPCTest, RequestWithoutCorID_ToString_Fail) { // Create SmartObject SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = mobile_apis::FunctionID::AddCommandID; + obj[S_PARAMS][S_MESSAGE_TYPE] = mobile_apis::messageType::request; + obj[S_MSG_PARAMS] = SmartObject(SmartType::SmartType_Map); + // Attach Schema + mobile_apis::MOBILE_API factory; + EXPECT_TRUE(factory.attachSchema(obj)); + + std::string result; + // Converting SmartObject to Json string is failed + EXPECT_FALSE(FormatterJsonRpc::ToString(obj, result)); + EXPECT_EQ(std::string( + "{\n \"jsonrpc\" : \"2.0\",\n \"method\" : " + "\"AddCommandID\"\n}\n"), + result); +} + +TEST(FormatterJsonRPCTest, RequestWithoutType_ToString_Fail) { + // Create SmartObject + SmartObject obj; + obj[S_PARAMS][S_FUNCTION_ID] = mobile_apis::FunctionID::AddCommandID; + obj[S_MSG_PARAMS] = SmartObject(SmartType::SmartType_Map); + // Attach Schema is impossible + mobile_apis::MOBILE_API factory; + EXPECT_FALSE(factory.attachSchema(obj)); + + std::string result; + // Converting SmartObject to Json string is failed + EXPECT_FALSE(FormatterJsonRpc::ToString(obj, result)); + EXPECT_EQ(std::string("{\n \"jsonrpc\" : \"2.0\"\n}\n"), result); +} + +TEST(FormatterJsonRPCTest, InvalidRPC_ToString_False) { + // Create SmartObject with notification id and response message type + SmartObject obj; std::string result; obj[S_PARAMS][S_FUNCTION_ID] = - hmi_apis::FunctionID::BasicCommunication_OnReady; + hmi_apis::FunctionID::BasicCommunication_OnReady; obj[S_PARAMS][S_MESSAGE_TYPE] = hmi_apis::messageType::response; obj[S_PARAMS][S_PROTOCOL_VERSION] = 2; obj[S_PARAMS][S_PROTOCOL_TYPE] = 1; @@ -122,78 +240,79 @@ TEST(FormatterJsonRPCTest, InvalidRPC_SmartObjectToString_EXPECT_FALSE) { // Attach Schema hmi_apis::HMI_API factory; EXPECT_FALSE(factory.attachSchema(obj)); - // Convert SmrtObject to Json string + // Convert SmartObject to Json string EXPECT_FALSE(FormatterJsonRpc::ToString(obj, result)); // Expect result with default value. No correct conversion was done EXPECT_EQ(std::string("{\n \"jsonrpc\" : \"2.0\"\n}\n"), result); } -TEST(FormatterJsonRPCTest, FromStringNotificationToSmartObj_ExpectSuccess) { +TEST(FormatterJsonRPCTest, Notification_ToSmartObject_Success) { // Source Json string const std::string json_string( - "{\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"BasicCommunication.OnReady\",\n \"params\" : {}\n}\n"); + "{\n \"jsonrpc\" : \"2.0\",\n \"method\" : " + "\"BasicCommunication.OnReady\",\n \"params\" : {}\n}\n"); // Smart Object to keep result SmartObject obj; // Convert json string to smart object - EXPECT_EQ( - 0, - (FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, - hmi_apis::messageType::eType>(json_string, obj))); + int32_t result = FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, + hmi_apis::messageType::eType>( + json_string, obj); + EXPECT_EQ(0, result); // Get keys collection from Smart Object std::set<std::string> keys = obj["params"].enumerate(); EXPECT_EQ(4u, keys.size()); } -TEST(FormatterJsonRPCTest, FromStringToSmartObjInvalidFormat_ExpectFalse) { +TEST(FormatterJsonRPCTest, InvalidFormatToSmartObject_False) { // Source Json string const std::string json_string( - "{\n \"method\" : \"BasicCommunication.OnReady\",\n \"params\" : {}\n}\n"); + "{\n \"method\" : \"BasicCommunication.OnReady\",\n \"params\" : " + "{}\n}\n"); // Smart Object to keep result SmartObject obj; // Convert json string to smart object - EXPECT_EQ( - 2, - (FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, - hmi_apis::messageType::eType>(json_string, obj))); + int32_t result = FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, + hmi_apis::messageType::eType>( + json_string, obj); + EXPECT_EQ(2, result); // Get keys collection from Smart Object std::set<std::string> keys = obj["params"].enumerate(); EXPECT_EQ(4u, keys.size()); } -TEST(FormatterJsonRPCTest, FromStringRequestToSmartObj_ExpectSuccess) { +TEST(FormatterJsonRPCTest, RequestToSmartObject_Success) { // Source Json string const std::string json_string( - "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"VR.IsReady\"\n}\n"); + "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : " + "\"VR.IsReady\"\n}\n"); // Smart Object to keep result SmartObject obj; // Convert json string to smart object - EXPECT_EQ( - 0, - (FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, - hmi_apis::messageType::eType>(json_string, obj))); + int32_t result = FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, + hmi_apis::messageType::eType>( + json_string, obj); + EXPECT_EQ(0, result); // Get keys collection from Smart Object std::set<std::string> keys = obj["params"].enumerate(); - std::set<std::string>::iterator it1 = keys.begin(); EXPECT_EQ(5u, keys.size()); } -TEST(FormatterJsonRPCTest, FromStringResponseToSmartObj_ExpectSuccess) { +TEST(FormatterJsonRPCTest, ResponseToSmartObject_Success) { // Source Json string const std::string json_string( - "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : \"VR.IsReady\"\n}\n"); + "{\n \"id\" : 4444,\n \"jsonrpc\" : \"2.0\",\n \"method\" : " + "\"VR.IsReady\"\n}\n"); // Smart Object to keep result SmartObject obj; // Convert json string to smart object - EXPECT_EQ( - 0, - (FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, - hmi_apis::messageType::eType>(json_string, obj))); + int32_t result = FormatterJsonRpc::FromString<hmi_apis::FunctionID::eType, + hmi_apis::messageType::eType>( + json_string, obj); + EXPECT_EQ(0, result); // Get keys collection from Smart Object std::set<std::string> keys = obj["params"].enumerate(); - std::set<std::string>::iterator it1 = keys.begin(); EXPECT_EQ(5u, keys.size()); } - } // namespace formatters } // namespace components } // namespace test |