summaryrefslogtreecommitdiff
path: root/test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h')
-rw-r--r--test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h759
1 files changed, 0 insertions, 759 deletions
diff --git a/test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h b/test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h
deleted file mode 100644
index 08f661b80..000000000
--- a/test/components/protocol_handler/include/protocol_handler/protocol_handler_tm_test.h
+++ /dev/null
@@ -1,759 +0,0 @@
-/*
- * Copyright (c) 2014, Ford Motor Company
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of the Ford Motor Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef TEST_COMPONENTS_PROTOCOL_HANDLER_INCLUDE_PROTOCOL_HANDLER_PROTOCOL_HANDLER_TM_TEST_H_
-#define TEST_COMPONENTS_PROTOCOL_HANDLER_INCLUDE_PROTOCOL_HANDLER_PROTOCOL_HANDLER_TM_TEST_H_
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-#include <string>
-
-#include "utils/shared_ptr.h"
-
-#include "protocol_handler/protocol_handler_impl.h"
-#include "protocol/common.h"
-
-#include "protocol_handler/protocol_handler_mock.h"
-#include "protocol_handler/protocol_observer_mock.h"
-#include "protocol_handler/session_observer_mock.h"
-#include "protocol_handler/control_message_matcher.h"
-#include "security_manager/security_manager_mock.h"
-#include "security_manager/ssl_context_mock.h"
-#include "transport_manager/transport_manager_mock.h"
-#include "protocol_handler/control_message_matcher.h"
-
-namespace test {
-namespace components {
-namespace protocol_handler_test {
-
-// id passed as NULL for new session establishing
-#define NEW_SESSION_ID 0u
-#define SESSION_START_REJECT 0u
-
-using namespace ::protocol_handler;
-using namespace ::transport_manager; // For TM states
-//using namespace ::security_manager;
-using ::transport_manager::TransportManagerListener;
-using protocol_handler_test::ControlMessage;
-using ::testing::Return;
-using ::testing::ReturnNull;
-using ::testing::AnyOf;
-using ::testing::Ge;
-using ::testing::Le;
-using ::testing::_;
-using ::testing::Invoke;
-
-class ProtocolHandlerImplTest : public ::testing::Test {
- protected:
- void IntitProtocolHandlerImpl(const size_t period_msec, const size_t max_messages) {
- protocol_handler_impl.reset(new ProtocolHandlerImpl(&transport_manager_mock,
- period_msec, max_messages));
- protocol_handler_impl->set_session_observer(&session_observer_mock);
- tm_listener = protocol_handler_impl.get();
- }
- void SetUp() OVERRIDE {
- IntitProtocolHandlerImpl(0u, 0u);
- connection_id = 0xAu;
- session_id = 0xFFu;
- connection_key = 0xFF00AAu;
- message_id = 0xABCDEFu;
- some_date.resize(256, 0xAB);
-
- // expect ConnectionHandler support methods call (conversion, check heartbeat)
- EXPECT_CALL(session_observer_mock,
- KeyFromPair(connection_id, _)).
- //return some connection_key
- WillRepeatedly(Return(connection_key));
- EXPECT_CALL(session_observer_mock,
- IsHeartBeatSupported(connection_id, _)).
- //return false to avoid call KeepConnectionAlive
- WillRepeatedly(Return(false));
- }
-
- void TearDown() OVERRIDE {
- // Wait call methods in thread
- usleep(100000);
- }
-
- // Emulate connection establish
- void AddConnection() {
- tm_listener->OnConnectionEstablished(
- DeviceInfo(DeviceHandle(1u),
- std::string("mac"),
- std::string("name"),
- std::string("BTMAC")),
- connection_id);
- }
- void AddSession() {
- AddConnection();
- const ServiceType start_service = kRpc;
- #ifdef ENABLE_SECURITY
- // For enabled protection callback shall use protection ON
- const bool callback_protection_flag = PROTECTION_ON;
- #else
- // For disabled protection callback shall ignore protection income flad and use protection OFF
- const bool callback_protection_flag = PROTECTION_OFF;
- #endif // ENABLE_SECURITY
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service,
- callback_protection_flag, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // expect send Ack with PROTECTION_OFF (on no Security Manager)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- }
-
-#ifdef ENABLE_SECURITY
- // Emulate security manager initilization establish
- void AddSecurityManager() {
- protocol_handler_impl->set_security_manager(&security_manager_mock);
- }
-#endif // ENABLE_SECURITY
- void SendTMMessage(uint8_t connection_id,
- uint8_t version, bool protection, uint8_t frameType,
- uint8_t serviceType, uint8_t frameData,
- uint8_t sessionId, uint32_t dataSize,
- uint32_t messageID, const uint8_t *data = 0) {
- // Create packet
- const ProtocolPacket packet(
- connection_id, version, protection, frameType,
- serviceType, frameData, sessionId, dataSize,
- messageID, data);
- // Emulate resive packet from transoprt manager
- tm_listener->OnTMMessageReceived(packet.serializePacket());
- }
- void SendControlMessage(bool protection, uint8_t service_type,
- uint8_t sessionId, uint32_t frame_data,
- uint32_t dataSize = 0u, const uint8_t *data = NULL) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, protection, FRAME_TYPE_CONTROL,
- service_type, frame_data, sessionId, dataSize, message_id, data);
- }
-
- ::utils::SharedPtr<ProtocolHandlerImpl> protocol_handler_impl;
- TransportManagerListener* tm_listener;
- // Uniq connection
- ::transport_manager::ConnectionUID connection_id;
- // id of established session
- uint8_t session_id;
- // uniq id as connection_id and session_id in one
- uint32_t connection_key;
- uint32_t message_id;
- std::vector<uint8_t> some_date;
- // Strict mocks (same as all methods EXPECT_CALL().Times(0))
- testing::StrictMock<transport_manager_test::TransportManagerMock> transport_manager_mock;
- testing::StrictMock<protocol_handler_test::SessionObserverMock> session_observer_mock;
-#ifdef ENABLE_SECURITY
- testing::NiceMock<security_manager_test::SecurityManagerMock> security_manager_mock;
- testing::NiceMock<security_manager_test::SSLContextMock> ssl_context_mock;
-#endif // ENABLE_SECURITY
-};
-
-#ifdef ENABLE_SECURITY
-class OnHandshakeDoneFunctor {
-public:
- OnHandshakeDoneFunctor(const uint32_t connection_key, const bool result)
- : connection_key(connection_key), result(result) {}
- void operator()(security_manager::SecurityManagerListener * listener) const {
- listener->OnHandshakeDone(connection_key, result);
- }
-private:
- const uint32_t connection_key;
- const bool result;
-};
-#endif // ENABLE_SECURITY
-
-/*
- * ProtocolHandler shall skip empty message
- */
-TEST_F(ProtocolHandlerImplTest, RecieveEmptyRawMessage) {
- tm_listener->OnTMMessageReceived(RawMessagePtr());
-}
-/*
- * ProtocolHandler shall disconnect on no connection
- */
-TEST_F(ProtocolHandlerImplTest, RecieveOnUnknownConenction) {
- // expect force dicsonnect on no connection for received data
- EXPECT_CALL(transport_manager_mock,
- DisconnectForce(connection_id)).
- WillOnce(Return(E_SUCCESS));
-
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_CONTROL,
- kRpc, FRAME_DATA_START_SERVICE, NEW_SESSION_ID, 0, message_id);
-}
-/*
- * ProtocolHandler shall send NAck on session_observer rejection
- * Check protection flag OFF for all services from kControl to kBulk
- */
-TEST_F(ProtocolHandlerImplTest, StartSession_Unprotected_SessionObserverReject) {
- const int call_times = 5;
- AddConnection();
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(
- connection_id, NEW_SESSION_ID, AnyOf(kControl, kRpc, kAudio,
- kMobileNav, kBulk), PROTECTION_OFF, _)).
- Times(call_times).
- //return sessions start rejection
- WillRepeatedly(Return(SESSION_START_REJECT));
-
- // expect send NAck
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_NACK, PROTECTION_OFF))).
- Times(call_times).
- WillRepeatedly(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_OFF, kControl, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_OFF, kRpc, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_OFF, kAudio, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_OFF, kMobileNav,NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_OFF, kBulk, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send NAck on session_observer rejection
- * Emulate getting PROTECTION_ON and check protection flag OFF in NAck
- * For ENABLE_SECURITY=OFF session_observer shall be called with protection flag OFF
- */
-TEST_F(ProtocolHandlerImplTest, StartSession_Protected_SessionObserverReject) {
- const int call_times = 5;
- AddConnection();
-#ifdef ENABLE_SECURITY
- // For enabled protection callback shall use protection ON
- const bool callback_protection_flag = PROTECTION_ON;
-#else
- // For disabled protection callback shall ignore protection income flad and use protection OFF
- const bool callback_protection_flag = PROTECTION_OFF;
-#endif // ENABLE_SECURITY
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(
- connection_id, NEW_SESSION_ID, AnyOf(kControl, kRpc, kAudio,
- kMobileNav, kBulk), callback_protection_flag, _)).
- Times(call_times).
- //return sessions start rejection
- WillRepeatedly(Return(SESSION_START_REJECT));
-
- // expect send NAck with encryption OFF
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_NACK, PROTECTION_OFF))).
- Times(call_times).
- WillRepeatedly(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, kControl, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_ON, kRpc, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_ON, kAudio, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_ON, kMobileNav,NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
- SendControlMessage(PROTECTION_ON, kBulk, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack on session_observer accept
- * Check protection flag OFF
- */
-TEST_F(ProtocolHandlerImplTest, StartSession_Unprotected_SessionObserverAccept) {
- AddConnection();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_OFF, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // expect send Ack
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_OFF, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack on session_observer accept
- * Emulate getting PROTECTION_ON and check protection flag OFF in Ack
- * For ENABLE_SECURITY=OFF session_observer shall be called with protection flag OFF
- */
-TEST_F(ProtocolHandlerImplTest, StartSession_Protected_SessionObserverAccept) {
- AddSession();
-}
-// TODO(EZamakhov): add test for get_hash_id/set_hash_id from protocol_handler_impl.cc
-/*
- * ProtocolHandler shall send NAck on session_observer rejection
- */
-TEST_F(ProtocolHandlerImplTest, EndSession_SessionObserverReject) {
- AddSession();
- const ServiceType service = kRpc;
-
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionEndedCallback(connection_id, session_id, _, service)).
- // reject session start
- WillOnce(Return(SESSION_START_REJECT));
-
- // expect send NAck
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_END_SERVICE_NACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_OFF, service, session_id, FRAME_DATA_END_SERVICE);
-}
-/*
- * ProtocolHandler shall send NAck on wrong hash code
- */
-TEST_F(ProtocolHandlerImplTest, EndSession_Success) {
- AddSession();
- const ServiceType service = kRpc;
-
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionEndedCallback(connection_id, session_id, _, service)).
- // return sessions start success
- WillOnce(Return(connection_key));
-
- // expect send Ack
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_END_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_OFF, service, session_id, FRAME_DATA_END_SERVICE);
-}
-
-#ifdef ENABLE_SECURITY
-/*
- * ProtocolHandler shall not call Security logics with Protocol version 1
- * Check session_observer with PROTECTION_OFF and Ack with PROTECTION_OFF
- */
-TEST_F(ProtocolHandlerImplTest, SecurityEnable_StartSessionProtocoloV1) {
- AddConnection();
- // Add security manager
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_OFF, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // expect send Ack with PROTECTION_OFF (on no Security Manager)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendTMMessage(connection_id, PROTOCOL_VERSION_1, PROTECTION_ON, FRAME_TYPE_CONTROL,
- start_service, FRAME_DATA_START_SERVICE, NEW_SESSION_ID, 0, message_id);
-}
-/*
- * ProtocolHandler shall not call Security logics on start session with PROTECTION_OFF
- */
-TEST_F(ProtocolHandlerImplTest, SecurityEnable_StartSessionUnprotected) {
- AddConnection();
- // Add security manager
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_OFF, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // expect send Ack with PROTECTION_OFF (on no Security Manager)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_OFF, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_OFF on fail SLL creation
- */
-TEST_F(ProtocolHandlerImplTest, SecurityEnable_StartSessionProtected_Fail) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // expect start protection for unprotected session
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return fail protection
- WillOnce(ReturnNull());
-
- // expect send Ack with PROTECTION_OFF (on fail SLL creation)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_ON on already established and initialized SLLContext
- */
-TEST_F(ProtocolHandlerImplTest,SecurityEnable_StartSessionProtected_SSLInitialized) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // call new SSLContext creation
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return new SSLContext
- WillOnce(Return(&ssl_context_mock));
-
- // initilization check
- EXPECT_CALL(ssl_context_mock,
- IsInitCompleted()).
- //emulate SSL is initilized
- WillOnce(Return(true));
-
- // Expect service protection enable
- EXPECT_CALL(session_observer_mock,
- SetProtectionFlag(connection_key, start_service));
-
- // expect send Ack with PROTECTION_ON (on SSL is initilized)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_ON))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_OFF on session handshhake fail
- */
-TEST_F(ProtocolHandlerImplTest, SecurityEnable_StartSessionProtected_HandshakeFail) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // call new SSLContext creation
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return new SSLContext
- WillOnce(Return(&ssl_context_mock));
-
- // initilization check
- EXPECT_CALL(ssl_context_mock,
- IsInitCompleted()).
- //emulate SSL is not initilized
- WillOnce(Return(false));
-
- // Pending handshake check
- EXPECT_CALL(ssl_context_mock,
- IsHandshakePending()).
- //emulate is pending
- WillOnce(Return(true));
-
- // expect add listener for handshake result
- EXPECT_CALL(security_manager_mock,
- AddListener(_))
- // emulate handshake fail
- .WillOnce(Invoke(OnHandshakeDoneFunctor(connection_key, PROTECTION_OFF)));
-
- // Listener check SSLContext
- EXPECT_CALL(session_observer_mock,
- GetSSLContext(connection_key, start_service)).
- // emulate protection for service is not enabled
- WillOnce(ReturnNull());
-
- // expect send Ack with PROTECTION_OFF (on fail handshake)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_OFF))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_ON on session handshhake success
- */
-TEST_F(ProtocolHandlerImplTest, SecurityEnable_StartSessionProtected_HandshakeSuccess) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // call new SSLContext creation
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return new SSLContext
- WillOnce(Return(&ssl_context_mock));
-
- // initilization check
- EXPECT_CALL(ssl_context_mock,
- IsInitCompleted()).
- //emulate SSL is not initilized
- WillOnce(Return(false));
-
- // Pending handshake check
- EXPECT_CALL(ssl_context_mock,
- IsHandshakePending()).
- //emulate is pending
- WillOnce(Return(true));
-
- // expect add listener for handshake result
- EXPECT_CALL(security_manager_mock,
- AddListener(_))
- // emulate handshake fail
- .WillOnce(Invoke(OnHandshakeDoneFunctor(connection_key, PROTECTION_ON)));
-
- // Listener check SSLContext
- EXPECT_CALL(session_observer_mock,
- GetSSLContext(connection_key, start_service)).
- // emulate protection for service is not enabled
- WillOnce(ReturnNull());
-
- // Expect service protection enable
- EXPECT_CALL(session_observer_mock,
- SetProtectionFlag(connection_key, start_service));
-
- // expect send Ack with PROTECTION_OFF (on fail handshake)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_ON))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_ON on session handshhake success
- */
-TEST_F(ProtocolHandlerImplTest,
- SecurityEnable_StartSessionProtected_HandshakeSuccess_ServiceProtectedBefore) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // call new SSLContext creation
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return new SSLContext
- WillOnce(Return(&ssl_context_mock));
-
- // initilization check
- EXPECT_CALL(ssl_context_mock,
- IsInitCompleted()).
- //emulate SSL is not initilized
- WillOnce(Return(false));
-
- // Pending handshake check
- EXPECT_CALL(ssl_context_mock,
- IsHandshakePending()).
- //emulate is pending
- WillOnce(Return(true));
-
- // expect add listener for handshake result
- EXPECT_CALL(security_manager_mock,
- AddListener(_))
- // emulate handshake fail
- .WillOnce(Invoke(OnHandshakeDoneFunctor(connection_key, PROTECTION_ON)));
-
- // Listener check SSLContext
- EXPECT_CALL(session_observer_mock,
- GetSSLContext(connection_key, start_service)).
- // emulate protection for service is not enabled
- WillOnce(ReturnNull());
-
- // Expect service protection enable
- EXPECT_CALL(session_observer_mock,
- SetProtectionFlag(connection_key, start_service));
-
- // expect send Ack with PROTECTION_OFF (on fail handshake)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_ON))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-/*
- * ProtocolHandler shall send Ack with PROTECTION_ON on session handshhake success
- */
-TEST_F(ProtocolHandlerImplTest,
- SecurityEnable_StartSessionProtected_HandshakeSuccess_SSLIsNotPending) {
- AddConnection();
- AddSecurityManager();
- const ServiceType start_service = kRpc;
- // expect ConnectionHandler check
- EXPECT_CALL(session_observer_mock,
- OnSessionStartedCallback(connection_id, NEW_SESSION_ID, start_service, PROTECTION_ON, _)).
- //return sessions start success
- WillOnce(Return(session_id));
-
- // call new SSLContext creation
- EXPECT_CALL(security_manager_mock,
- CreateSSLContext(connection_key)).
- //return new SSLContext
- WillOnce(Return(&ssl_context_mock));
-
- // initilization check
- EXPECT_CALL(ssl_context_mock,
- IsInitCompleted()).
- //emulate SSL is not initilized
- WillOnce(Return(false));
-
- // Pending handshake check
- EXPECT_CALL(ssl_context_mock,
- IsHandshakePending()).
- //emulate is pending
- WillOnce(Return(false));
-
- // Wait restart handshake operation
- EXPECT_CALL(security_manager_mock,
- StartHandshake(connection_key));
-
- // expect add listener for handshake result
- EXPECT_CALL(security_manager_mock,
- AddListener(_))
- // emulate handshake fail
- .WillOnce(Invoke(OnHandshakeDoneFunctor(connection_key, PROTECTION_ON)));
-
- // Listener check SSLContext
- EXPECT_CALL(session_observer_mock,
- GetSSLContext(connection_key, start_service)).
- // emulate protection for service is not enabled
- WillOnce(ReturnNull());
-
- // Expect service protection enable
- EXPECT_CALL(session_observer_mock,
- SetProtectionFlag(connection_key, start_service));
-
- // expect send Ack with PROTECTION_OFF (on fail handshake)
- EXPECT_CALL(transport_manager_mock,
- SendMessageToDevice(ControlMessage(FRAME_DATA_START_SERVICE_ACK, PROTECTION_ON))).
- WillOnce(Return(E_SUCCESS));
-
- SendControlMessage(PROTECTION_ON, start_service, NEW_SESSION_ID, FRAME_DATA_START_SERVICE);
-}
-TEST_F(ProtocolHandlerImplTest,
- FloodVerification) {
- const size_t period_msec = 1000;
- const size_t max_messages = 1000;
- IntitProtocolHandlerImpl(period_msec, max_messages);
- AddConnection();
- AddSession();
-
- // expect flood notification to CH
- EXPECT_CALL(session_observer_mock,
- OnApplicationFloodCallBack(connection_key)).
- Times(1);
-
- for (size_t i = 0; i < max_messages + 1; ++i) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_SINGLE,
- kControl, FRAME_DATA_SINGLE, session_id,
- some_date.size(), message_id, &some_date[0]);
- }
-}
-TEST_F(ProtocolHandlerImplTest,
- FloodVerification_ThresholdValue) {
- const size_t period_msec = 1000;
- const size_t max_messages = 1000;
- IntitProtocolHandlerImpl(period_msec, max_messages);
- AddConnection();
- AddSession();
-
- // expect NO flood notification to CH
- for (size_t i = 0; i < max_messages - 1; ++i) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_SINGLE,
- kControl, FRAME_DATA_SINGLE, session_id,
- some_date.size(), message_id, &some_date[0]);
- }
-}
-TEST_F(ProtocolHandlerImplTest,
- FloodVerification_VideoFrameSkip) {
- const size_t period_msec = 1000;
- const size_t max_messages = 1000;
- IntitProtocolHandlerImpl(period_msec, max_messages);
- AddConnection();
- AddSession();
-
- // expect NO flood notification to CH on video data streaming
- for (size_t i = 0; i < max_messages + 1; ++i) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_SINGLE,
- kMobileNav, FRAME_DATA_SINGLE, session_id,
- some_date.size(), message_id, &some_date[0]);
- }
-}
-TEST_F(ProtocolHandlerImplTest,
- FloodVerification_AudioFrameSkip) {
- const size_t period_msec = 1000;
- const size_t max_messages = 1000;
- IntitProtocolHandlerImpl(period_msec, max_messages);
- AddConnection();
- AddSession();
-
- // expect NO flood notification to CH on video data streaming
- for (size_t i = 0; i < max_messages + 1; ++i) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_SINGLE,
- kAudio, FRAME_DATA_SINGLE, session_id,
- some_date.size(), message_id, &some_date[0]);
- }
-}
-TEST_F(ProtocolHandlerImplTest,
- FloodVerificationDisable) {
- const size_t period_msec = 0;
- const size_t max_messages = 0;
- IntitProtocolHandlerImpl(period_msec, max_messages);
- AddConnection();
- AddSession();
-
- // expect NO flood notification to session observer
- for (size_t i = 0; i < max_messages + 1; ++i) {
- SendTMMessage(connection_id, PROTOCOL_VERSION_3, PROTECTION_OFF, FRAME_TYPE_SINGLE,
- kControl, FRAME_DATA_SINGLE, session_id,
- some_date.size(), message_id, &some_date[0]);
- }
-}
-#endif // ENABLE_SECURITY
-} // namespace test
-} // namespace components
-} // namespace protocol_handler_test
-#endif //TEST_COMPONENTS_PROTOCOL_HANDLER_INCLUDE_PROTOCOL_HANDLER_PROTOCOL_HANDLER_TM_TEST_H_