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 CHROMEOS_ATTESTATION_MOCK_ATTESTATION_FLOW_H_
6#define CHROMEOS_ATTESTATION_MOCK_ATTESTATION_FLOW_H_
7
8#include "chromeos/attestation/attestation_flow.h"
9
10#include "base/basictypes.h"
11#include "base/callback.h"
12#include "testing/gmock/include/gmock/gmock.h"
13
14namespace chromeos {
15namespace attestation {
16
17// A fake server proxy which just appends "_response" to every request.
18class FakeServerProxy : public ServerProxy {
19 public:
20  FakeServerProxy();
21  virtual ~FakeServerProxy();
22
23  void set_result(bool result) {
24    result_ = result;
25  }
26
27  virtual void SendEnrollRequest(const std::string& request,
28                                 const DataCallback& callback) OVERRIDE;
29
30  virtual void SendCertificateRequest(const std::string& request,
31                                      const DataCallback& callback) OVERRIDE;
32
33 private:
34  bool result_;
35
36  DISALLOW_COPY_AND_ASSIGN(FakeServerProxy);
37};
38
39class MockServerProxy : public ServerProxy {
40 public:
41  MockServerProxy();
42  virtual ~MockServerProxy();
43
44  void DeferToFake(bool result);
45  MOCK_METHOD2(SendEnrollRequest,
46               void(const std::string&, const DataCallback&));
47  MOCK_METHOD2(SendCertificateRequest,
48               void(const std::string&, const DataCallback&));
49  MOCK_METHOD0(GetType, PrivacyCAType());
50
51 private:
52  FakeServerProxy fake_;
53};
54
55// This class can be used to mock AttestationFlow callbacks.
56class MockObserver {
57 public:
58  MockObserver();
59  virtual ~MockObserver();
60
61  MOCK_METHOD2(MockCertificateCallback, void(bool, const std::string&));
62};
63
64class MockAttestationFlow : public AttestationFlow {
65 public:
66  MockAttestationFlow();
67  virtual ~MockAttestationFlow();
68
69  MOCK_METHOD5(GetCertificate, void(AttestationCertificateProfile,
70                                    const std::string&,
71                                    const std::string&,
72                                    bool,
73                                    const CertificateCallback&));
74};
75
76}  // namespace attestation
77}  // namespace chromeos
78
79#endif  // CHROMEOS_ATTESTATION_MOCK_ATTESTATION_FLOW_H_
80