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 "net/base/net_errors.h" 13 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gtest/include/gtest/gtest.h" 15 16 namespace net { 17 class StreamSocket; 18 } // namespace net 19 20 namespace remoting { 21 22 class RsaKeyPair; 23 24 namespace protocol { 25 26 class Authenticator; 27 class ChannelAuthenticator; 28 class FakeSocket; 29 30 class AuthenticatorTestBase : public testing::Test { 31 public: 32 AuthenticatorTestBase(); 33 virtual ~AuthenticatorTestBase(); 34 35 protected: 36 class MockChannelDoneCallback { 37 public: 38 MockChannelDoneCallback(); 39 ~MockChannelDoneCallback(); 40 MOCK_METHOD1(OnDone, void(net::Error error)); 41 }; 42 43 static void ContinueAuthExchangeWith(Authenticator* sender, 44 Authenticator* receiver, 45 bool sender_started, 46 bool receiver_srated); 47 virtual void SetUp() OVERRIDE; 48 void RunAuthExchange(); 49 void RunHostInitiatedAuthExchange(); 50 void RunChannelAuth(bool expected_fail); 51 52 void OnHostConnected(net::Error error, 53 scoped_ptr<net::StreamSocket> socket); 54 void OnClientConnected(net::Error error, 55 scoped_ptr<net::StreamSocket> socket); 56 57 base::MessageLoop message_loop_; 58 59 scoped_refptr<RsaKeyPair> key_pair_; 60 std::string host_public_key_; 61 std::string host_cert_; 62 scoped_ptr<Authenticator> host_; 63 scoped_ptr<Authenticator> client_; 64 scoped_ptr<FakeSocket> client_fake_socket_; 65 scoped_ptr<FakeSocket> host_fake_socket_; 66 scoped_ptr<ChannelAuthenticator> client_auth_; 67 scoped_ptr<ChannelAuthenticator> host_auth_; 68 MockChannelDoneCallback client_callback_; 69 MockChannelDoneCallback host_callback_; 70 scoped_ptr<net::StreamSocket> client_socket_; 71 scoped_ptr<net::StreamSocket> host_socket_; 72 73 DISALLOW_COPY_AND_ASSIGN(AuthenticatorTestBase); 74 }; 75 76 } // namespace protocol 77 } // namespace remoting 78 79 #endif // REMOTING_PROTOCOL_AUTHENTICATOR_TEST_BASE_H_ 80