summaryrefslogtreecommitdiff
path: root/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc')
-rw-r--r--src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc b/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc
index eaa274d0f4..f38eb019e2 100644
--- a/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc
+++ b/src/components/hmi_message_handler/test/hmi_message_handler_impl_test.cc
@@ -189,6 +189,46 @@ TEST_F(HMIMessageHandlerImplTest, SendMessageToHMI_Success) {
EXPECT_TRUE(waiter.WaitFor(1, 100));
}
+TEST(WebsocketSessionTest, SendMessage_UnpreparedConnection_WithoutFall) {
+ ::testing::FLAGS_gtest_death_test_style = "threadsafe";
+
+ auto send_message = []() {
+ auto message =
+ "{\"id\" : 1,\"jsonrpc\" : \"2.0\",\"method\" : "
+ "\"BasicCommunication.GetSystemInfo\"}";
+
+ Json::Reader reader;
+ Json::Value json_value;
+
+ ASSERT_TRUE(reader.parse(message, json_value, false));
+
+ // Make unprepared connection
+ boost::asio::io_context ioc{1};
+ boost::asio::ip::tcp::acceptor acceptor{
+ ioc, {boost::asio::ip::make_address("127.0.0.1"), 8087}};
+ boost::asio::ip::tcp::socket socket{ioc};
+
+ std::unique_ptr<hmi_message_handler::WebsocketSession> session(
+ new hmi_message_handler::WebsocketSession(std::move(socket), nullptr));
+
+ // Send message to unprepared connection
+ session->sendJsonMessage(json_value);
+
+ // Wait for the message to be processed
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+
+ // Stopping connection thread
+ session->Shutdown();
+ session = nullptr;
+
+ exit(0);
+ };
+
+ // Expected exit code 0, if test terminate by other signal(SIGABRT or
+ // SIGSEGV), we will get failed test
+ EXPECT_EXIT(send_message(), ::testing::ExitedWithCode(0), "");
+}
+
} // namespace hmi_message_handler_test
} // namespace components
} // namespace test