summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerhii Niukalov (GitHub) <36993782+SNiukalov@users.noreply.github.com>2020-08-10 22:34:26 +0300
committerGitHub <noreply@github.com>2020-08-10 15:34:26 -0400
commitcb42c627b837df0ce184ba849c232dd36bd92c91 (patch)
tree8dd21d73aba2ab48649afac45c9093aa40dfbbe3
parent6e5ef3dd422f8da25d224928979a8c7e59d54723 (diff)
downloadsdl_core-cb42c627b837df0ce184ba849c232dd36bd92c91.tar.gz
Feature/Removing url parameter max length (#3259)
* Add unit tests to cover a test case * Removing maxlength attribute for OnSystemRequest,StartStream and StartAudioStream Sometimes, it is necessary to provide a URL which is very large and thus cannot fit in the current 1,000 or 500 character limit. * Update path length for video and audio streaming files * fixup! Update path length for video and audio streaming files * fixup! Add unit tests to cover a test case * fixup! Add unit tests to cover a test case * fixup! Removing maxlength attribute for OnSystemRequest,StartStream and StartAudioStream Co-authored-by: sniukalov <sniukaov@luxoft.com> Co-authored-by: LitvinenkoIra <ilytvynenko@luxoft.com>
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_audio_start_stream_request_test.cc56
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_start_stream_request_test.cc56
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/on_system_request_notification_test.cc65
-rw-r--r--src/components/application_manager/src/message_helper/message_helper.cc54
-rw-r--r--src/components/application_manager/test/message_helper/message_helper_test.cc172
-rw-r--r--src/components/config_profile/src/profile.cc12
-rw-r--r--src/components/interfaces/HMI_API.xml6
m---------tools/rpc_spec0
8 files changed, 362 insertions, 59 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_audio_start_stream_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_audio_start_stream_request_test.cc
index 926e51446f..00c95b5425 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_audio_start_stream_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_audio_start_stream_request_test.cc
@@ -60,6 +60,7 @@ using sdl_rpc_plugin::commands::AudioStartStreamRequest;
namespace {
const uint32_t kHmiAppId = 13u;
+const uint32_t kCorrelationId = 2u;
const am::HmiInterfaces::InterfaceID kHmiInterface =
am::HmiInterfaces::HMI_INTERFACE_Navigation;
} // namespace
@@ -74,11 +75,24 @@ class AudioStartStreamRequestTest
command_ = CreateCommand<AudioStartStreamRequest>(msg_);
}
+ void UpdateMsgParams(MessageSharedPtr& message) {
+ (*message)[am::strings::params][am::strings::correlation_id] =
+ kCorrelationId;
+ (*message)[am::strings::params][am::strings::message_type] =
+ am::MessageType::kRequest;
+ (*message)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(hmi_apis::FunctionID::Navigation_StartAudioStream);
+ (*message)[am::strings::msg_params][am::strings::app_id] = kHmiAppId;
+ }
+
std::pair<uint32_t, int32_t> start_stream_retry_amount_;
MessageSharedPtr msg_;
std::shared_ptr<AudioStartStreamRequest> command_;
+ static const std::string big_url_;
};
+const std::string AudioStartStreamRequestTest::big_url_(20000u, 'a');
+
TEST_F(AudioStartStreamRequestTest, Run_HmiInterfaceNotAvailable_NoRequest) {
EXPECT_CALL(mock_hmi_interfaces_, GetInterfaceState(kHmiInterface))
.WillOnce(Return(am::HmiInterfaces::STATE_NOT_AVAILABLE));
@@ -114,6 +128,48 @@ TEST_F(AudioStartStreamRequestTest, Run_HmiInterfaceAvailable_SentRequest) {
command_->Run();
}
+TEST_F(AudioStartStreamRequestTest, Run_HmiHugeUrl_SentRequest_SUCCESS) {
+ UpdateMsgParams(msg_);
+
+ (*msg_)[am::strings::msg_params][am::strings::url] = big_url_;
+
+ ON_CALL(mock_hmi_interfaces_, GetInterfaceState(kHmiInterface))
+ .WillByDefault(Return(am::HmiInterfaces::STATE_AVAILABLE));
+ MockAppPtr mock_app = CreateMockApp();
+ ON_CALL(app_mngr_, application_by_hmi_app(kHmiAppId))
+ .WillByDefault(Return(mock_app));
+
+ ON_CALL(app_mngr_, application(kHmiAppId)).WillByDefault(Return(mock_app));
+ ON_CALL(*mock_app, hmi_app_id()).WillByDefault(Return(kHmiAppId));
+
+ EXPECT_CALL(*mock_app, set_audio_streaming_allowed(true));
+ EXPECT_CALL(mock_rpc_service_, SendMessageToHMI(msg_));
+
+ ASSERT_TRUE(command_->Init());
+ command_->Run();
+}
+
+TEST_F(AudioStartStreamRequestTest, ValidateSchema_HmiHugeUrl_SUCCESS) {
+ UpdateMsgParams(msg_);
+
+ (*msg_)[am::strings::params][am::strings::protocol_type] =
+ am::commands::CommandImpl::hmi_protocol_type_;
+ (*msg_)[am::strings::params][am::strings::protocol_version] =
+ am::commands::CommandImpl::protocol_version_;
+
+ (*msg_)[am::strings::msg_params][am::strings::url] = big_url_;
+
+ hmi_apis::HMI_API hmi_so_factory;
+ ns_smart_device_link::ns_smart_objects::CSmartSchema schema;
+ hmi_so_factory.GetSchema(hmi_apis::FunctionID::Navigation_StartAudioStream,
+ hmi_apis::messageType::eType::request,
+ schema);
+
+ rpc::ValidationReport report("RPC");
+ EXPECT_EQ(smart_objects::errors::eType::OK, schema.validate(*msg_, &report));
+ EXPECT_EQ("", rpc::PrettyFormat(report));
+}
+
} // namespace navi_audio_start_stream_request
} // namespace hmi_commands_test
} // namespace commands_test
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_start_stream_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_start_stream_request_test.cc
index 232d5ab628..ba4eefeee1 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_start_stream_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/hmi/navi_start_stream_request_test.cc
@@ -59,6 +59,7 @@ using sdl_rpc_plugin::commands::NaviStartStreamRequest;
namespace {
const uint32_t kHmiAppId = 13u;
+const uint32_t kCorrelationId = 2u;
const am::HmiInterfaces::InterfaceID kHmiInterface =
am::HmiInterfaces::HMI_INTERFACE_Navigation;
} // namespace
@@ -73,11 +74,24 @@ class NaviStartStreamRequestTest
command_ = CreateCommand<NaviStartStreamRequest>(msg_);
}
+ void UpdateMsgParams(MessageSharedPtr& message) {
+ (*message)[am::strings::params][am::strings::correlation_id] =
+ kCorrelationId;
+ (*message)[am::strings::params][am::strings::message_type] =
+ am::MessageType::kRequest;
+ (*message)[am::strings::params][am::strings::function_id] =
+ static_cast<int32_t>(hmi_apis::FunctionID::Navigation_StartStream);
+ (*message)[am::strings::msg_params][am::strings::app_id] = kHmiAppId;
+ }
+
std::pair<uint32_t, int32_t> start_stream_retry_amount_;
MessageSharedPtr msg_;
std::shared_ptr<NaviStartStreamRequest> command_;
+ static const std::string big_url_;
};
+const std::string NaviStartStreamRequestTest::big_url_(20000u, 'a');
+
TEST_F(NaviStartStreamRequestTest, Run_HmiInterfaceNotAvailable_NoRequest) {
EXPECT_CALL(mock_hmi_interfaces_, GetInterfaceState(kHmiInterface))
.WillOnce(Return(am::HmiInterfaces::STATE_NOT_AVAILABLE));
@@ -113,6 +127,48 @@ TEST_F(NaviStartStreamRequestTest, Run_HmiInterfaceAvailable_SentRequest) {
command_->Run();
}
+TEST_F(NaviStartStreamRequestTest, Run_HmiHugeUrl_SentRequest_SUCCESS) {
+ UpdateMsgParams(msg_);
+
+ (*msg_)[am::strings::msg_params][am::strings::url] = big_url_;
+
+ ON_CALL(mock_hmi_interfaces_, GetInterfaceState(kHmiInterface))
+ .WillByDefault(Return(am::HmiInterfaces::STATE_AVAILABLE));
+ MockAppPtr mock_app = CreateMockApp();
+ ON_CALL(app_mngr_, application_by_hmi_app(kHmiAppId))
+ .WillByDefault(Return(mock_app));
+
+ ON_CALL(app_mngr_, application(kHmiAppId)).WillByDefault(Return(mock_app));
+ ON_CALL(*mock_app, hmi_app_id()).WillByDefault(Return(kHmiAppId));
+
+ EXPECT_CALL(*mock_app, set_video_streaming_allowed(true));
+ EXPECT_CALL(mock_rpc_service_, SendMessageToHMI(msg_));
+
+ ASSERT_TRUE(command_->Init());
+ command_->Run();
+}
+
+TEST_F(NaviStartStreamRequestTest, ValidateSchema_HmiHugeUrl_SUCCESS) {
+ UpdateMsgParams(msg_);
+
+ (*msg_)[am::strings::params][am::strings::protocol_type] =
+ am::commands::CommandImpl::hmi_protocol_type_;
+ (*msg_)[am::strings::params][am::strings::protocol_version] =
+ am::commands::CommandImpl::protocol_version_;
+
+ (*msg_)[am::strings::msg_params][am::strings::url] = big_url_;
+
+ hmi_apis::HMI_API hmi_so_factory;
+ ns_smart_device_link::ns_smart_objects::CSmartSchema schema;
+ hmi_so_factory.GetSchema(hmi_apis::FunctionID::Navigation_StartStream,
+ hmi_apis::messageType::eType::request,
+ schema);
+
+ rpc::ValidationReport report("RPC");
+ EXPECT_EQ(smart_objects::errors::eType::OK, schema.validate(*msg_, &report));
+ EXPECT_EQ("", rpc::PrettyFormat(report));
+}
+
} // namespace navi_start_stream_request
} // namespace hmi_commands_test
} // namespace commands_test
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/on_system_request_notification_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/on_system_request_notification_test.cc
index ffa7203f1f..93ccf6c435 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/on_system_request_notification_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/on_system_request_notification_test.cc
@@ -77,10 +77,25 @@ class OnSystemRequestNotificationTest
ON_CALL(*mock_app_, device()).WillByDefault(Return(kDeviceId));
}
+ MessageSharedPtr CreateBasicMessage() {
+ MessageSharedPtr message = CreateMessage();
+ (*message)[strings::params][strings::connection_key] = kConnectionKey;
+ (*message)[strings::params][strings::function_id] =
+ static_cast<int32_t>(mobile_apis::FunctionID::eType::OnSystemRequestID);
+ const mobile_apis::RequestType::eType request_type =
+ RequestType::NAVIGATION;
+ (*message)[strings::msg_params][strings::request_type] = request_type;
+ return message;
+ }
+
+ static const std::string big_url_;
+
protected:
MockAppPtr mock_app_;
};
+const std::string OnSystemRequestNotificationTest::big_url_(20000u, 'a');
+
TEST_F(OnSystemRequestNotificationTest, Run_ProprietaryType_SUCCESS) {
const mobile_apis::RequestType::eType request_type =
mobile_apis::RequestType::PROPRIETARY;
@@ -160,6 +175,56 @@ TEST_F(OnSystemRequestNotificationTest, Run_HTTPType_SUCCESS) {
(*msg)[strings::params][strings::protocol_version].asInt());
}
+TEST_F(OnSystemRequestNotificationTest, Run_NavigationHugeUrl_SUCCESS) {
+ MessageSharedPtr msg = CreateBasicMessage();
+
+ (*msg)[strings::msg_params][strings::url] = big_url_;
+
+ auto command = CreateCommand<OnSystemRequestNotification>(msg);
+
+ PreConditions();
+
+ ON_CALL(app_mngr_, application(kConnectionKey))
+ .WillByDefault(Return(mock_app_));
+ ON_CALL(*mock_app_, policy_app_id()).WillByDefault(Return(kPolicyAppId));
+ ON_CALL(
+ mock_policy_handler_,
+ IsRequestTypeAllowed(kDeviceId, kPolicyAppId, RequestType::NAVIGATION))
+ .WillByDefault(Return(true));
+
+ EXPECT_CALL(mock_rpc_service_, SendMessageToMobile(msg, false));
+
+ ASSERT_TRUE(command->Init());
+ command->Run();
+
+ EXPECT_EQ(application_manager::MessageType::kNotification,
+ (*msg)[strings::params][strings::message_type].asInt());
+}
+
+TEST_F(OnSystemRequestNotificationTest,
+ ValidateSchema_NavigationHugeUrl_SUCCESS) {
+ MessageSharedPtr msg = CreateBasicMessage();
+
+ (*msg)[strings::params][strings::protocol_type] =
+ CommandImpl::hmi_protocol_type_;
+ (*msg)[strings::params][strings::protocol_version] =
+ CommandImpl::protocol_version_;
+ (*msg)[strings::params][strings::message_type] =
+ static_cast<int32_t>(application_manager::MessageType::kNotification);
+
+ (*msg)[strings::msg_params][strings::url] = big_url_;
+
+ mobile_apis::MOBILE_API mobile_so_factoy;
+ ns_smart_device_link::ns_smart_objects::CSmartSchema schema;
+ mobile_so_factoy.GetSchema(mobile_apis::FunctionID::eType::OnSystemRequestID,
+ mobile_apis::messageType::eType::notification,
+ schema);
+
+ rpc::ValidationReport report("RPC");
+ EXPECT_EQ(smart_objects::errors::eType::OK, schema.validate(*msg, &report));
+ EXPECT_EQ("", rpc::PrettyFormat(report));
+}
+
TEST_F(OnSystemRequestNotificationTest, Run_InvalidApp_NoNotification) {
const mobile_apis::RequestType::eType request_type =
mobile_apis::RequestType::HTTP;
diff --git a/src/components/application_manager/src/message_helper/message_helper.cc b/src/components/application_manager/src/message_helper/message_helper.cc
index 83e93d9c80..d351ea91b8 100644
--- a/src/components/application_manager/src/message_helper/message_helper.cc
+++ b/src/components/application_manager/src/message_helper/message_helper.cc
@@ -2378,25 +2378,20 @@ void MessageHelper::SendNaviStartStream(const int32_t app_id,
(*start_stream)[strings::params][strings::function_id] =
hmi_apis::FunctionID::Navigation_StartStream;
- char url[100] = {'\0'};
+ std::string url;
if ("socket" == app_mngr.get_settings().video_server_type()) {
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "http://%s:%d",
- app_mngr.get_settings().server_address().c_str(),
- app_mngr.get_settings().video_streaming_port());
+ auto const port = app_mngr.get_settings().video_streaming_port();
+ url = "http://";
+ url += app_mngr.get_settings().server_address();
+ url += ":";
+ url += std::to_string(port);
} else if ("pipe" == app_mngr.get_settings().video_server_type()) {
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "%s",
- app_mngr.get_settings().named_video_pipe_path().c_str());
+ url.reserve(PATH_MAX);
+ url.insert(
+ 0, app_mngr.get_settings().named_video_pipe_path(), 0, PATH_MAX - 1);
} else {
- int snprintf_result =
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "%s",
- app_mngr.get_settings().video_stream_file().c_str());
- DCHECK(snprintf_result);
+ url.reserve(PATH_MAX);
+ url.insert(0, app_mngr.get_settings().video_stream_file(), 0, PATH_MAX - 1);
}
(*start_stream)[strings::msg_params][strings::app_id] = app_id;
@@ -2435,25 +2430,20 @@ void MessageHelper::SendAudioStartStream(const int32_t app_id,
(*start_stream)[strings::params][strings::function_id] =
hmi_apis::FunctionID::Navigation_StartAudioStream;
- char url[100] = {'\0'};
+ std::string url;
if ("socket" == app_mngr.get_settings().audio_server_type()) {
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "http://%s:%d",
- app_mngr.get_settings().server_address().c_str(),
- app_mngr.get_settings().audio_streaming_port());
+ auto const port = app_mngr.get_settings().audio_streaming_port();
+ url = "http://";
+ url += app_mngr.get_settings().server_address();
+ url += ":";
+ url += std::to_string(port);
} else if ("pipe" == app_mngr.get_settings().audio_server_type()) {
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "%s",
- app_mngr.get_settings().named_audio_pipe_path().c_str());
+ url.reserve(PATH_MAX);
+ url.insert(
+ 0, app_mngr.get_settings().named_audio_pipe_path(), 0, PATH_MAX - 1);
} else {
- int snprintf_result =
- snprintf(url,
- sizeof(url) / sizeof(url[0]),
- "%s",
- app_mngr.get_settings().audio_stream_file().c_str());
- DCHECK(snprintf_result);
+ url.reserve(PATH_MAX);
+ url.insert(0, app_mngr.get_settings().audio_stream_file(), 0, PATH_MAX - 1);
}
(*start_stream)[strings::msg_params][strings::app_id] = app_id;
diff --git a/src/components/application_manager/test/message_helper/message_helper_test.cc b/src/components/application_manager/test/message_helper/message_helper_test.cc
index f85a49dec7..1a033fe87a 100644
--- a/src/components/application_manager/test/message_helper/message_helper_test.cc
+++ b/src/components/application_manager/test/message_helper/message_helper_test.cc
@@ -41,6 +41,7 @@
#include "application_manager/event_engine/event_dispatcher.h"
#include "application_manager/mock_application.h"
#include "application_manager/mock_application_manager.h"
+#include "application_manager/mock_application_manager_settings.h"
#include "application_manager/mock_help_prompt_manager.h"
#include "application_manager/mock_rpc_service.h"
#include "application_manager/policies/policy_handler.h"
@@ -79,6 +80,11 @@ using testing::ReturnRef;
using testing::ReturnRefOfCopy;
using testing::SaveArg;
+namespace {
+const uint32_t kAppId = 123u;
+const uint32_t kCorrelationId_ = 1939u;
+} // namespace
+
TEST(MessageHelperTestCreate,
CreateBlockedByPoliciesResponse_SmartObject_Equal) {
mobile_apis::FunctionID::eType function_id =
@@ -604,9 +610,21 @@ class MessageHelperTest : public ::testing::Test {
, hmi_level_strings{"FULL", "LIMITED", "BACKGROUND", "NONE"}
, delta_from_functions_id(32768) {}
+ void StartStreamPreConditions() {
+ ON_CALL(mock_application_manager_, GetNextHMICorrelationID())
+ .WillByDefault(Return(kCorrelationId_));
+ ON_CALL(mock_application_manager_, get_settings())
+ .WillByDefault(ReturnRef(mock_app_mngr_settings_));
+ ON_CALL(mock_application_manager_, GetRPCService())
+ .WillByDefault(ReturnRef(mock_rpc_service_));
+ }
+
protected:
- application_manager_test::MockApplicationManager mock_application_manager;
- application_manager_test::MockRPCService mock_rpc_service_;
+ testing::NiceMock<application_manager_test::MockApplicationManager>
+ mock_application_manager_;
+ testing::NiceMock<application_manager_test::MockApplicationManagerSettings>
+ mock_app_mngr_settings_;
+ testing::NiceMock<application_manager_test::MockRPCService> mock_rpc_service_;
const StringArray language_strings;
const StringArray hmi_result_strings;
const StringArray mobile_result_strings;
@@ -750,10 +768,10 @@ TEST_F(MessageHelperTest,
smart_objects::SmartObject object;
policy_handler_test::MockPolicySettings policy_settings_;
const policy::PolicyHandler policy_handler(policy_settings_,
- mock_application_manager);
+ mock_application_manager_);
// Method call
mobile_apis::Result::eType result = MessageHelper::ProcessSoftButtons(
- object, appSharedMock, policy_handler, mock_application_manager);
+ object, appSharedMock, policy_handler, mock_application_manager_);
// Expect
EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
}
@@ -769,10 +787,10 @@ TEST_F(MessageHelperTest,
buttons[0][strings::image][strings::value] = "invalid\\nvalue";
policy_handler_test::MockPolicySettings policy_settings_;
const policy::PolicyHandler policy_handler(policy_settings_,
- mock_application_manager);
+ mock_application_manager_);
// Method call
mobile_apis::Result::eType result = MessageHelper::ProcessSoftButtons(
- object, appSharedMock, policy_handler, mock_application_manager);
+ object, appSharedMock, policy_handler, mock_application_manager_);
// Expect
EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
}
@@ -786,7 +804,7 @@ TEST_F(MessageHelperTest, VerifyImage_ImageTypeIsStatic_Success) {
image[strings::value] = "static_icon";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImage(
- image, appSharedMock, mock_application_manager);
+ image, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
}
@@ -801,7 +819,7 @@ TEST_F(MessageHelperTest, VerifyImage_ImageValueNotValid_InvalidData) {
image[strings::value] = " ";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImage(
- image, appSharedMock, mock_application_manager);
+ image, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
}
@@ -815,7 +833,7 @@ TEST_F(MessageHelperTest, VerifyImageApplyPath_ImageTypeIsStatic_Success) {
image[strings::value] = "icon.png";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImage(
- image, appSharedMock, mock_application_manager);
+ image, appSharedMock, mock_application_manager_);
EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
// EXPECT
EXPECT_EQ("icon.png", image[strings::value].asString());
@@ -831,7 +849,7 @@ TEST_F(MessageHelperTest, VerifyImageApplyPath_ImageValueNotValid_InvalidData) {
image[strings::value] = " ";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImage(
- image, appSharedMock, mock_application_manager);
+ image, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
}
@@ -847,7 +865,7 @@ TEST_F(MessageHelperTest, VerifyImageFiles_SmartObjectWithValidData_Success) {
images[1][strings::value] = "static_icon";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImageFiles(
- images, appSharedMock, mock_application_manager);
+ images, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
}
@@ -865,7 +883,7 @@ TEST_F(MessageHelperTest,
images[1][strings::value] = "image\\n";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImageFiles(
- images, appSharedMock, mock_application_manager);
+ images, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
}
@@ -885,7 +903,7 @@ TEST_F(MessageHelperTest,
message[1][strings::image][strings::value] = "static_icon";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImageVrHelpItems(
- message, appSharedMock, mock_application_manager);
+ message, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::SUCCESS, result);
}
@@ -905,7 +923,7 @@ TEST_F(MessageHelperTest,
message[1][strings::image][strings::value] = "image\\n";
// Method call
mobile_apis::Result::eType result = MessageHelper::VerifyImageVrHelpItems(
- message, appSharedMock, mock_application_manager);
+ message, appSharedMock, mock_application_manager_);
// EXPECT
EXPECT_EQ(mobile_apis::Result::INVALID_DATA, result);
}
@@ -975,7 +993,7 @@ TEST_F(MessageHelperTest, SendGetListOfPermissionsResponse_SUCCESS) {
smart_objects::SmartObjectSPtr result;
- ON_CALL(mock_application_manager, GetRPCService())
+ ON_CALL(mock_application_manager_, GetRPCService())
.WillByDefault(ReturnRef(mock_rpc_service_));
EXPECT_CALL(mock_rpc_service_, ManageHMICommand(_, _))
.WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
@@ -984,7 +1002,7 @@ TEST_F(MessageHelperTest, SendGetListOfPermissionsResponse_SUCCESS) {
MessageHelper::SendGetListOfPermissionsResponse(permissions,
external_consent_status,
correlation_id,
- mock_application_manager);
+ mock_application_manager_);
ASSERT_TRUE(result.get());
@@ -1015,7 +1033,7 @@ TEST_F(MessageHelperTest,
smart_objects::SmartObjectSPtr result;
- ON_CALL(mock_application_manager, GetRPCService())
+ ON_CALL(mock_application_manager_, GetRPCService())
.WillByDefault(ReturnRef(mock_rpc_service_));
EXPECT_CALL(mock_rpc_service_, ManageHMICommand(_, _))
.WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
@@ -1024,7 +1042,7 @@ TEST_F(MessageHelperTest,
MessageHelper::SendGetListOfPermissionsResponse(permissions,
external_consent_status,
correlation_id,
- mock_application_manager);
+ mock_application_manager_);
ASSERT_TRUE(result.get());
@@ -1061,7 +1079,7 @@ TEST_F(MessageHelperTest,
TEST_F(MessageHelperTest, SendNaviSetVideoConfigRequest) {
smart_objects::SmartObjectSPtr result;
- ON_CALL(mock_application_manager, GetRPCService())
+ ON_CALL(mock_application_manager_, GetRPCService())
.WillByDefault(ReturnRef(mock_rpc_service_));
EXPECT_CALL(mock_rpc_service_, ManageHMICommand(_, _))
.WillOnce(DoAll(SaveArg<0>(&result), Return(true)));
@@ -1075,7 +1093,7 @@ TEST_F(MessageHelperTest, SendNaviSetVideoConfigRequest) {
video_params[strings::height] = 480;
MessageHelper::SendNaviSetVideoConfig(
- app_id, mock_application_manager, video_params);
+ app_id, mock_application_manager_, video_params);
EXPECT_EQ(hmi_apis::FunctionID::Navigation_SetVideoConfig,
(*result)[strings::params][strings::function_id].asInt());
@@ -1093,6 +1111,120 @@ TEST_F(MessageHelperTest, SendNaviSetVideoConfigRequest) {
EXPECT_EQ(480, msg_params[strings::config][strings::height].asInt());
}
+TEST_F(MessageHelperTest,
+ SendAudioStartStream_SendAudioStreamUrl_MaxPath_Equal) {
+ // baskslash-2 and place for a null character-1
+ auto const special_characters = 3;
+ std::string audio_stream_file = "/";
+ audio_stream_file +=
+ std::string(PATH_MAX - NAME_MAX - special_characters, 'u') + "/";
+ audio_stream_file += std::string(NAME_MAX, 'u');
+ std::string audio_server_type;
+ smart_objects::SmartObjectSPtr start_stream;
+
+ StartStreamPreConditions();
+
+ ON_CALL(mock_app_mngr_settings_, audio_server_type())
+ .WillByDefault(ReturnRef(audio_server_type));
+ ON_CALL(mock_app_mngr_settings_, audio_stream_file())
+ .WillByDefault(ReturnRef(audio_stream_file));
+ ON_CALL(mock_rpc_service_, ManageHMICommand(_, _))
+ .WillByDefault(DoAll(SaveArg<0>(&start_stream), Return(true)));
+
+ MessageHelper::SendAudioStartStream(kAppId, mock_application_manager_);
+
+ smart_objects::SmartObject& msg_params = (*start_stream)[strings::msg_params];
+
+ EXPECT_TRUE(msg_params.keyExists(strings::url));
+ EXPECT_EQ(msg_params[strings::url], audio_stream_file);
+}
+
+TEST_F(MessageHelperTest,
+ SendAudioStartStream_SendAudioStreamUrl_ViolationOfLimits_NotEqual) {
+ // baskslash-2 and place for a null character-1
+ auto const special_characters = 3;
+ std::string audio_stream_file = "/";
+ audio_stream_file +=
+ std::string(PATH_MAX - NAME_MAX - special_characters, 'u') + "/";
+ audio_stream_file += std::string(NAME_MAX + 1, 'u');
+ std::string audio_server_type;
+ smart_objects::SmartObjectSPtr start_stream;
+
+ StartStreamPreConditions();
+
+ ON_CALL(mock_app_mngr_settings_, audio_server_type())
+ .WillByDefault(ReturnRef(audio_server_type));
+ ON_CALL(mock_app_mngr_settings_, audio_stream_file())
+ .WillByDefault(ReturnRef(audio_stream_file));
+ ON_CALL(mock_rpc_service_, ManageHMICommand(_, _))
+ .WillByDefault(DoAll(SaveArg<0>(&start_stream), Return(true)));
+
+ MessageHelper::SendAudioStartStream(kAppId, mock_application_manager_);
+
+ smart_objects::SmartObject& msg_params = (*start_stream)[strings::msg_params];
+
+ EXPECT_TRUE(msg_params.keyExists(strings::url));
+ EXPECT_STRNE(msg_params[strings::url].asCharArray(),
+ audio_stream_file.c_str());
+}
+
+TEST_F(MessageHelperTest,
+ SendNaviStartStream_SendVideoStreamUrl_MaxPath_Equal) {
+ // baskslash-2 and place for a null character-1
+ auto const special_characters = 3;
+ std::string video_stream_file = "/";
+ video_stream_file +=
+ std::string(PATH_MAX - NAME_MAX - special_characters, 'u') + "/";
+ video_stream_file += std::string(NAME_MAX, 'u');
+ std::string video_server_type;
+ smart_objects::SmartObjectSPtr start_stream;
+
+ StartStreamPreConditions();
+
+ ON_CALL(mock_app_mngr_settings_, video_server_type())
+ .WillByDefault(ReturnRef(video_server_type));
+ ON_CALL(mock_app_mngr_settings_, video_stream_file())
+ .WillByDefault(ReturnRef(video_stream_file));
+ ON_CALL(mock_rpc_service_, ManageHMICommand(_, _))
+ .WillByDefault(DoAll(SaveArg<0>(&start_stream), Return(true)));
+
+ MessageHelper::SendNaviStartStream(kAppId, mock_application_manager_);
+
+ smart_objects::SmartObject& msg_params = (*start_stream)[strings::msg_params];
+
+ EXPECT_TRUE(msg_params.keyExists(strings::url));
+ EXPECT_EQ(msg_params[strings::url], video_stream_file);
+}
+
+TEST_F(MessageHelperTest,
+ SendNaviStartStream_SendVideoStreamUrl_ViolationOfLimits_NotEqual) {
+ // baskslash-2 and place for a null character-1
+ auto const special_characters = 3;
+ std::string video_stream_file = "/";
+ video_stream_file +=
+ std::string(PATH_MAX - NAME_MAX - special_characters, 'u') + "/";
+ video_stream_file += std::string(NAME_MAX + 1, 'u');
+ std::string video_server_type;
+ smart_objects::SmartObjectSPtr start_stream;
+
+ StartStreamPreConditions();
+
+ ON_CALL(mock_app_mngr_settings_, video_server_type())
+ .WillByDefault(ReturnRef(video_server_type));
+ ON_CALL(mock_app_mngr_settings_, video_stream_file())
+ .WillByDefault(ReturnRef(video_stream_file));
+ ON_CALL(mock_rpc_service_, ManageHMICommand(_, _))
+ .WillByDefault(DoAll(SaveArg<0>(&start_stream), Return(true)));
+
+ MessageHelper::SendNaviStartStream(kAppId, mock_application_manager_);
+
+ smart_objects::SmartObject& msg_params = (*start_stream)[strings::msg_params];
+
+ EXPECT_TRUE(msg_params.keyExists(strings::url));
+ EXPECT_STRNE(msg_params[strings::url].asCharArray(),
+ video_stream_file.c_str());
+}
+
TEST_F(MessageHelperTest, ExtractWindowIdFromSmartObject_SUCCESS) {
const WindowID window_id = 145;
smart_objects::SmartObject message(smart_objects::SmartType_Map);
diff --git a/src/components/config_profile/src/profile.cc b/src/components/config_profile/src/profile.cc
index 00fd546a02..26e5bb0c54 100644
--- a/src/components/config_profile/src/profile.cc
+++ b/src/components/config_profile/src/profile.cc
@@ -1552,7 +1552,8 @@ void Profile::UpdateValues() {
kMediaManagerSection,
kNamedVideoPipePathKey);
- named_video_pipe_path_ = app_storage_folder_ + "/" + named_video_pipe_path_;
+ named_video_pipe_path_ = app_storage_folder_ + "/" +
+ std::string(named_video_pipe_path_, 0, NAME_MAX);
LOG_UPDATED_VALUE(
named_video_pipe_path_, kNamedVideoPipePathKey, kMediaManagerSection);
@@ -1563,7 +1564,8 @@ void Profile::UpdateValues() {
kMediaManagerSection,
kNamedAudioPipePathKey);
- named_audio_pipe_path_ = app_storage_folder_ + "/" + named_audio_pipe_path_;
+ named_audio_pipe_path_ = app_storage_folder_ + "/" +
+ std::string(named_audio_pipe_path_, 0, NAME_MAX);
LOG_UPDATED_VALUE(
named_audio_pipe_path_, kNamedAudioPipePathKey, kMediaManagerSection);
@@ -1572,7 +1574,8 @@ void Profile::UpdateValues() {
ReadStringValue(
&video_stream_file_, "", kMediaManagerSection, kVideoStreamFileKey);
- video_stream_file_ = app_storage_folder_ + "/" + video_stream_file_;
+ video_stream_file_ =
+ app_storage_folder_ + "/" + std::string(video_stream_file_, 0, NAME_MAX);
LOG_UPDATED_VALUE(
video_stream_file_, kVideoStreamFileKey, kMediaManagerSection);
@@ -1581,7 +1584,8 @@ void Profile::UpdateValues() {
ReadStringValue(
&audio_stream_file_, "", kMediaManagerSection, kAudioStreamFileKey);
- audio_stream_file_ = app_storage_folder_ + "/" + audio_stream_file_;
+ audio_stream_file_ =
+ app_storage_folder_ + "/" + std::string(audio_stream_file_, 0, NAME_MAX);
LOG_UPDATED_VALUE(
audio_stream_file_, kAudioStreamFileKey, kMediaManagerSection);
diff --git a/src/components/interfaces/HMI_API.xml b/src/components/interfaces/HMI_API.xml
index 116ab91060..02d62154f0 100644
--- a/src/components/interfaces/HMI_API.xml
+++ b/src/components/interfaces/HMI_API.xml
@@ -4587,7 +4587,7 @@
This parameter is filled for supporting OEM proprietary data exchanges.
</description>
</param>
- <param name="url" type="String" maxlength="1000" minlength="1" mandatory="false">
+ <param name="url" type="String" minlength="1" mandatory="false">
<description>Optional array of URL(s) for HTTP requests.</description>
</param>
<param name="fileType" type="Common.FileType" mandatory="false">
@@ -5911,7 +5911,7 @@
</function>
<function name="StartStream" messagetype="request">
<description>Request from SmartDeviceLinkCore to HMI to start playing video streaming.</description>
- <param name="url" type="String" minlength="21" maxlength="500" mandatory="true">
+ <param name="url" type="String" minlength="21" mandatory="true">
<description>URL that HMI start playing.</description>
</param>
<param name="appID" type="Integer" mandatory="true">
@@ -5930,7 +5930,7 @@
</function>
<function name="StartAudioStream" messagetype="request">
<description>Request from SmartDeviceLinkCore to HMI to start playing audio streaming.</description>
- <param name="url" type="String" minlength="21" maxlength="500" mandatory="true">
+ <param name="url" type="String" minlength="21" mandatory="true">
<description>URL that HMI start playing.</description>
</param>
<param name="appID" type="Integer" mandatory="true">
diff --git a/tools/rpc_spec b/tools/rpc_spec
-Subproject fc985db8d7c4f9eb973b4b431227566a1ae79cb
+Subproject 117269e429c24a67bd1dd5ed10703f84fe1e58f