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