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 15namespace net { 16class StreamSocket; 17} // namespace net 18 19namespace remoting { 20 21class RsaKeyPair; 22 23namespace protocol { 24 25class Authenticator; 26class ChannelAuthenticator; 27class FakeStreamSocket; 28 29class 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