1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef REMOTING_PROTOCOL_AUTHENTICATOR_TEST_BASE_H_ 6 #define REMOTING_PROTOCOL_AUTHENTICATOR_TEST_BASE_H_ 7 8 #include <string> 9 10 #include "base/memory/ref_counted.h" 11 #include "base/message_loop/message_loop.h" 12 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gtest/include/gtest/gtest.h" 14 15 namespace net { 16 class StreamSocket; 17 } // namespace net 18 19 namespace remoting { 20 21 class RsaKeyPair; 22 23 namespace protocol { 24 25 class Authenticator; 26 class ChannelAuthenticator; 27 class FakeStreamSocket; 28 29 class AuthenticatorTestBase : public testing::Test { 30 public: 31 AuthenticatorTestBase(); 32 virtual ~AuthenticatorTestBase(); 33 34 protected: 35 class MockChannelDoneCallback { 36 public: 37 MockChannelDoneCallback(); 38 ~MockChannelDoneCallback(); 39 MOCK_METHOD1(OnDone, void(int error)); 40 }; 41 42 static void ContinueAuthExchangeWith(Authenticator* sender, 43 Authenticator* receiver, 44 bool sender_started, 45 bool receiver_srated); 46 virtual void SetUp() OVERRIDE; 47 void RunAuthExchange(); 48 void RunHostInitiatedAuthExchange(); 49 void RunChannelAuth(bool expected_fail); 50 51 void OnHostConnected(int error, 52 scoped_ptr<net::StreamSocket> socket); 53 void OnClientConnected(int error, 54 scoped_ptr<net::StreamSocket> socket); 55 56 base::MessageLoop message_loop_; 57 58 scoped_refptr<RsaKeyPair> key_pair_; 59 std::string host_public_key_; 60 std::string host_cert_; 61 scoped_ptr<Authenticator> host_; 62 scoped_ptr<Authenticator> client_; 63 scoped_ptr<FakeStreamSocket> client_fake_socket_; 64 scoped_ptr<FakeStreamSocket> host_fake_socket_; 65 scoped_ptr<ChannelAuthenticator> client_auth_; 66 scoped_ptr<ChannelAuthenticator> host_auth_; 67 MockChannelDoneCallback client_callback_; 68 MockChannelDoneCallback host_callback_; 69 scoped_ptr<net::StreamSocket> client_socket_; 70 scoped_ptr<net::StreamSocket> host_socket_; 71 72 DISALLOW_COPY_AND_ASSIGN(AuthenticatorTestBase); 73 }; 74 75 } // namespace protocol 76 } // namespace remoting 77 78 #endif // REMOTING_PROTOCOL_AUTHENTICATOR_TEST_BASE_H_ 79