Home | History | Annotate | Download | only in protocol
      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   virtual void SetUp() OVERRIDE;
     46   void RunAuthExchange();
     47   void RunHostInitiatedAuthExchange();
     48   void RunChannelAuth(bool expected_fail);
     49 
     50   void OnHostConnected(net::Error error,
     51                        scoped_ptr<net::StreamSocket> socket);
     52   void OnClientConnected(net::Error error,
     53                          scoped_ptr<net::StreamSocket> socket);
     54 
     55   base::MessageLoop message_loop_;
     56 
     57   scoped_refptr<RsaKeyPair> key_pair_;
     58   std::string host_public_key_;
     59   std::string host_cert_;
     60   scoped_ptr<Authenticator> host_;
     61   scoped_ptr<Authenticator> client_;
     62   scoped_ptr<FakeSocket> client_fake_socket_;
     63   scoped_ptr<FakeSocket> host_fake_socket_;
     64   scoped_ptr<ChannelAuthenticator> client_auth_;
     65   scoped_ptr<ChannelAuthenticator> host_auth_;
     66   MockChannelDoneCallback client_callback_;
     67   MockChannelDoneCallback host_callback_;
     68   scoped_ptr<net::StreamSocket> client_socket_;
     69   scoped_ptr<net::StreamSocket> host_socket_;
     70 
     71   DISALLOW_COPY_AND_ASSIGN(AuthenticatorTestBase);
     72 };
     73 
     74 }  // namespace protocol
     75 }  // namespace remoting
     76 
     77 #endif  // REMOTING_PROTOCOL_AUTHENTICATOR_TEST_BASE_H_
     78