diff options
author | Kozoriz <kozorizandriy@gmail.com> | 2015-12-23 09:06:36 +0200 |
---|---|---|
committer | Kozoriz <kozorizandriy@gmail.com> | 2015-12-23 10:18:47 +0200 |
commit | 16a7e541bba5d0721b7ad22a0d170dafc0cdce21 (patch) | |
tree | 72910e88f8af215e8669c86c8b8796a3b2bf8579 /src/components/include/test | |
parent | cc166d8a26bf4f612cace366f51f805a297d72f9 (diff) | |
download | sdl_core-16a7e541bba5d0721b7ad22a0d170dafc0cdce21.tar.gz |
Add new mock files to src/components/include/test
Created components/include/test/... dirs.
Add new mock files for
protocol_handler
security_manager
security_manager_mock.cc moved to include/test/security_manager
Diffstat (limited to 'src/components/include/test')
6 files changed, 563 insertions, 0 deletions
diff --git a/src/components/include/test/protocol_handler/mock_protocol_handler.h b/src/components/include/test/protocol_handler/mock_protocol_handler.h new file mode 100644 index 0000000000..b0a029dadf --- /dev/null +++ b/src/components/include/test/protocol_handler/mock_protocol_handler.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2015, 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 SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_PROTOCOL_HANDLER_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_PROTOCOL_HANDLER_H_ + +#include <gmock/gmock.h> +#include "protocol_handler/protocol_packet.h" + +namespace test { +namespace components { +namespace protocol_handler_test { + +class MockProtocolHandler : public ::protocol_handler::ProtocolHandler { + public: + MOCK_METHOD2(SendMessageToMobileApp, + void(const ::protocol_handler::RawMessagePtr message, + bool final_message)); + MOCK_METHOD1(AddProtocolObserver, + void(::protocol_handler::ProtocolObserver *observer)); + MOCK_METHOD1(RemoveProtocolObserver, + void(::protocol_handler::ProtocolObserver *observer)); + MOCK_METHOD2(SendFramesNumber, + void(uint32_t connection_key, int32_t number_of_frames)); + MOCK_METHOD2(SendHeartBeat, + void(int32_t connection_id, uint8_t session_id)); + MOCK_METHOD2(SendEndSession, + void(int32_t connection_id, uint8_t session_id)); + MOCK_METHOD3(SendEndService, + void(int32_t connection_id, uint8_t session_id, uint8_t service_type)); +}; +} // namespace protocol_handler_test +} // namespace components +} // namespace test + +#endif // SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_PROTOCOL_HANDLER_H_ diff --git a/src/components/include/test/protocol_handler/mock_session_observer.h b/src/components/include/test/protocol_handler/mock_session_observer.h new file mode 100644 index 0000000000..0f30a003d1 --- /dev/null +++ b/src/components/include/test/protocol_handler/mock_session_observer.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2015, 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 SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_SESSION_OBSERVER_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_SESSION_OBSERVER_H_ + +#include <gmock/gmock.h> +#include <string> +#include <list> +#include "protocol_handler/session_observer.h" + +namespace test { +namespace components { +namespace protocol_handler_test { + +class MockSessionObserver: public ::protocol_handler::SessionObserver { + public: + MOCK_METHOD5(OnSessionStartedCallback, + uint32_t( + const transport_manager::ConnectionUID &connection_handle, + const uint8_t session_id, + const ::protocol_handler::ServiceType &service_type, + const bool is_protected, uint32_t* hash_id)); + MOCK_METHOD4(OnSessionEndedCallback, + uint32_t( + const transport_manager::ConnectionUID &connection_handle, + const uint8_t sessionId, + const uint32_t &hashCode, + const ::protocol_handler::ServiceType &service_type)); + MOCK_METHOD1(OnApplicationFloodCallBack, + void(const uint32_t&)); + MOCK_METHOD1(OnMalformedMessageCallback, + void(const uint32_t&)); + MOCK_METHOD2(KeyFromPair, + uint32_t( + transport_manager::ConnectionUID connection_handle, + uint8_t sessionId)); + MOCK_METHOD3(PairFromKey, + void( + uint32_t key, + transport_manager::ConnectionUID *connection_handle, + uint8_t *sessionId)); + MOCK_METHOD4(GetDataOnSessionKey, + int32_t(uint32_t key, + uint32_t *app_id, + std::list<int32_t> *sessions_list, + uint32_t *device_id)); + MOCK_METHOD5(GetDataOnDeviceID, + int32_t( + uint32_t device_handle, + std::string *device_name, + std::list<uint32_t> *applications_list, + std::string *mac_address, + std::string *connection_type)); + MOCK_METHOD2(IsHeartBeatSupported, + bool(transport_manager::ConnectionUID connection_handle, + uint8_t session_id)); + MOCK_METHOD3(ProtocolVersionUsed, + bool(uint32_t connection_id, + uint8_t session_id, uint8_t& protocol_version)); +#ifdef ENABLE_SECURITY + MOCK_METHOD2(SetSSLContext, + int(const uint32_t &key, + ::security_manager::SSLContext *context)); + MOCK_METHOD2(GetSSLContext, + ::security_manager::SSLContext * ( + const uint32_t &key, + const ::protocol_handler::ServiceType &service_type)); + MOCK_METHOD2(SetProtectionFlag, + void( + const uint32_t &key, + const ::protocol_handler::ServiceType &service_type)); + MOCK_CONST_METHOD1(GetHandshakeContext, + security_manager::SSLContext::HandshakeContext( + const uint32_t key) ); + +#endif // ENABLE_SECURITY +}; +} // namespace protocol_handler_test +} // namespace components +} // namespace test + +#endif // SRC_COMPONENTS_INCLUDE_TEST_PROTOCOL_HANDLER_MOCK_SESSION_OBSERVER_H_ diff --git a/src/components/include/test/security_manager/mock_crypto_manager.h b/src/components/include/test/security_manager/mock_crypto_manager.h new file mode 100644 index 0000000000..6450d390bd --- /dev/null +++ b/src/components/include/test/security_manager/mock_crypto_manager.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2015, 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 SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_CRYPTO_MANAGER_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_CRYPTO_MANAGER_H_ + +#include <string> + +#include "gmock/gmock.h" +#include "security_manager/crypto_manager.h" + +namespace test { +namespace components { +namespace security_manager_test { + +class MockCryptoManager : public ::security_manager::CryptoManager { + public: + MOCK_METHOD7(Init, + bool( + ::security_manager::Mode, + ::security_manager::Protocol, + const std::string&, + const std::string&, + const bool, + const std::string&, + const size_t)); + MOCK_METHOD1(OnCertificateUpdated, + bool(const std::string&)); + MOCK_METHOD0(CreateSSLContext, + ::security_manager::SSLContext*()); + MOCK_METHOD1(ReleaseSSLContext, + void(::security_manager::SSLContext*)); + MOCK_CONST_METHOD0(LastError, + std::string()); + MOCK_CONST_METHOD0(IsCertificateUpdateRequired, + bool()); +}; +} // namespace security_manager_test +} // namespace components +} // namespace test + +#endif // SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_CRYPTO_MANAGER_H_ diff --git a/src/components/include/test/security_manager/mock_security_manager.h b/src/components/include/test/security_manager/mock_security_manager.h new file mode 100644 index 0000000000..6e69e94875 --- /dev/null +++ b/src/components/include/test/security_manager/mock_security_manager.h @@ -0,0 +1,174 @@ +/* + * 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 SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_H_ + +#include <gmock/gmock.h> +#include <string> +#include <list> +#include "utils/byte_order.h" +#include "security_manager/security_manager.h" +#include "security_manager/security_query.h" + +namespace test { +namespace components { +namespace security_manager_test { + +class MockSecurityManager : public ::security_manager::SecurityManager { + public: + MOCK_METHOD1(set_session_observer, + void(::protocol_handler::SessionObserver*)); + MOCK_METHOD1(set_protocol_handler, + void(::protocol_handler::ProtocolHandler*)); + MOCK_METHOD1(set_crypto_manager, void(::security_manager::CryptoManager*)); + MOCK_METHOD4(SendInternalError, void(const uint32_t, const uint8_t&, + const std::string&, const uint32_t)); + MOCK_METHOD1(CreateSSLContext, + ::security_manager::SSLContext*(const uint32_t&)); + MOCK_METHOD1(StartHandshake, void(uint32_t)); + MOCK_METHOD1(AddListener, void(::security_manager::SecurityManagerListener*)); + MOCK_METHOD1(RemoveListener, + void(::security_manager::SecurityManagerListener*)); + // protocol_handler::ProtocolObserver part + MOCK_METHOD1(OnMessageReceived, + void(const ::protocol_handler::RawMessagePtr)); + MOCK_METHOD1(OnMobileMessageSent, + void(const ::protocol_handler::RawMessagePtr)); +}; + +/* + * Matcher for RawMessages + * Check binary data of RawMessages + */ +MATCHER_P(RawMessageEqSize, exp_data_size, + std::string(negation ? "is not" : "is") + " RawMessages ") { + const size_t arg_data_size = arg->data_size(); + if (arg_data_size != exp_data_size) { + *result_listener << "Got " << arg_data_size << " bytes " + << " expected " << exp_data_size << " bytes"; + return false; + } + return true; +} +MATCHER_P2(RawMessageEq, exp_data, exp_data_size, + std::string(negation ? "is not" : "is") + " RawMessages ") { + const size_t arg_data_size = arg->data_size(); + if (arg_data_size != exp_data_size) { + *result_listener << "Got " << arg_data_size << " bytes " + << " expected " << exp_data_size << " bytes"; + return false; + } + const uint8_t* arg_data = arg->data(); + for (uint32_t i = 0; i < arg_data_size; ++i) { + if (arg_data[i] != exp_data[i]) { + *result_listener << "Fail in " << i << " byte"; + return false; + } + } + return true; +} + +/* + * Matcher for Handshake data + */ +MATCHER_P2(HandshakeStepEq, exp_data, exp_data_size, + std::string(negation ? "is not" : "is") + " Handshake ") { + const uint8_t* arg_data = arg; + for (uint32_t i = 0; i < exp_data_size; ++i) { + if (arg_data[i] != exp_data[i]) { + *result_listener << "Fail in " << i << " byte"; + return false; + } + } + return true; +} + +/* + * Matcher for checking RawMessage with InternalError Query + * Check error id + */ +MATCHER_P(InternalErrorWithErrId, expectedErrorId, + std::string(negation ? "is not" : "is") + + " InternalError with selected error") { + const size_t header_size = + sizeof(security_manager::SecurityQuery::QueryHeader); + if (arg->data_size() <= header_size) { + *result_listener << "Size " << arg->data_size() + << " bytes less or equal sizeof(QueryHeader)=" + << header_size; + return false; + } + const uint8_t* data = arg->data(); + const uint8_t query_type = data[0]; + if (security_manager::SecurityQuery::NOTIFICATION != query_type) { + *result_listener << "RawMessage is not notification, type=0x" << std::hex + << static_cast<int>(query_type); + return false; + } + // Read Big-Endian number + const uint32_t query_id = data[1] << 16 | data[2] << 8 | data[3]; + if (security_manager::SecurityQuery::SEND_INTERNAL_ERROR != query_id) { + *result_listener << "Notification is not InternalError, id=0x" << std::hex + << query_id; + return false; + } + const uint32_t json_size = + data[8] << 24 | data[9] << 16 | data[10] << 8 | data[11]; + if (header_size + json_size >= arg->data_size()) { + *result_listener << "InternalError contains only JSON data."; + return false; + } + // Read err_id as bin data number + const uint8_t* err_id = + reinterpret_cast<const uint8_t*>(data + header_size + json_size); + if (expectedErrorId != *err_id) { + *result_listener << "InternalError id " << static_cast<int>(*err_id) + << " and not equal error " << expectedErrorId; + return false; + } + return true; +} + +} // namespace security_manager_test +} // namespace components +} // namespace test + /* + * Matcher for checking QueryHeader equal in GTests + */ +::testing::AssertionResult QueryHeader_EQ( + const char* m_expr, const char* n_expr, + const ::security_manager::SecurityQuery::QueryHeader& q1, + const ::security_manager::SecurityQuery::QueryHeader& q2); + + +#endif // SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_H_ diff --git a/src/components/include/test/security_manager/mock_security_manager_listener.h b/src/components/include/test/security_manager/mock_security_manager_listener.h new file mode 100644 index 0000000000..57ace2ee06 --- /dev/null +++ b/src/components/include/test/security_manager/mock_security_manager_listener.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015, 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 SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_LISTENER_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_LISTENER_H_ + +#include "gmock/gmock.h" +#include "security_manager/security_manager_listener.h" +#include "security_manager/ssl_context.h" + +namespace test { +namespace components { +namespace security_manager_test { + +class MockSecurityManagerListener + : public ::security_manager::SecurityManagerListener { + public: + MOCK_METHOD2(OnHandshakeDone, + bool( + uint32_t connection_key, + ::security_manager::SSLContext::HandshakeResult result)); + MOCK_METHOD0(OnCertificateUpdateRequired, + void()); +}; +} // namespace security_manager_test +} // namespace components +} // namespace test + +#endif // SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SECURITY_MANAGER_LISTENER_H_ diff --git a/src/components/include/test/security_manager/mock_ssl_context.h b/src/components/include/test/security_manager/mock_ssl_context.h new file mode 100644 index 0000000000..4d70851dd7 --- /dev/null +++ b/src/components/include/test/security_manager/mock_ssl_context.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2015, 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 SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SSL_CONTEXT_H_ +#define SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SSL_CONTEXT_H_ + +#include <string> + +#include "gmock/gmock.h" +#include "security_manager/ssl_context.h" + +namespace test { +namespace components { +namespace security_manager_test { + +class MockSSLContext : public ::security_manager::SSLContext { + public: + MOCK_METHOD2(StartHandshake, + HandshakeResult(const uint8_t** const out_data, size_t *out_data_size)); + MOCK_METHOD4(DoHandshakeStep, + HandshakeResult( + const uint8_t *const in_data, + size_t in_data_size, + const uint8_t** const out_data, + size_t *out_data_size)); + MOCK_METHOD4(Encrypt, + bool( + const uint8_t *const in_data, + size_t in_data_size, + const uint8_t ** const out_data, + size_t *out_data_size)); + MOCK_METHOD4(Decrypt, + bool( + const uint8_t *const in_data, + size_t in_data_size, + const uint8_t ** const out_data, + size_t *out_data_size)); + MOCK_CONST_METHOD0(IsInitCompleted, + bool()); + MOCK_CONST_METHOD0(IsHandshakePending, + bool()); + MOCK_CONST_METHOD1(get_max_block_size, + size_t(size_t mtu)); + MOCK_CONST_METHOD0(LastError, + std::string()); + MOCK_METHOD0(ResetConnection, + void()); + MOCK_METHOD1(SetHandshakeContext, + void(const HandshakeContext& hsh_ctx)); +}; +} // namespace security_manager_test +} // namespace components +} // namespace test + +#endif // SRC_COMPONENTS_INCLUDE_TEST_SECURITY_MANAGER_MOCK_SSL_CONTEXT_H_ |