1 // Copyright 2020 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 CHROME_BROWSER_CHROMEOS_CERT_PROVISIONING_MOCK_CERT_PROVISIONING_WORKER_H_
6 #define CHROME_BROWSER_CHROMEOS_CERT_PROVISIONING_MOCK_CERT_PROVISIONING_WORKER_H_
7 
8 #include "base/callback_forward.h"
9 #include "base/containers/queue.h"
10 #include "chrome/browser/chromeos/cert_provisioning/cert_provisioning_worker.h"
11 #include "chrome/browser/chromeos/cert_provisioning/mock_cert_provisioning_invalidator.h"
12 #include "testing/gmock/include/gmock/gmock.h"
13 
14 using testing::_;
15 using testing::Return;
16 
17 namespace chromeos {
18 namespace cert_provisioning {
19 
20 // ================ MockCertProvisioningWorkerFactory ==========================
21 
22 class MockCertProvisioningWorker;
23 
24 class MockCertProvisioningWorkerFactory : public CertProvisioningWorkerFactory {
25  public:
26   MockCertProvisioningWorkerFactory();
27   ~MockCertProvisioningWorkerFactory() override;
28 
29   MOCK_METHOD(std::unique_ptr<CertProvisioningWorker>,
30               Create,
31               (CertScope cert_scope,
32                Profile* profile,
33                PrefService* pref_service,
34                const CertProfile& cert_profile,
35                policy::CloudPolicyClient* cloud_policy_client,
36                std::unique_ptr<CertProvisioningInvalidator> invalidator,
37                base::RepeatingClosure state_change_callback,
38                CertProvisioningWorkerCallback callback),
39               (override));
40 
41   MOCK_METHOD(std::unique_ptr<CertProvisioningWorker>,
42               Deserialize,
43               (CertScope cert_scope,
44                Profile* profile,
45                PrefService* pref_service,
46                const base::Value& saved_worker,
47                policy::CloudPolicyClient* cloud_policy_client,
48                std::unique_ptr<CertProvisioningInvalidator> invalidator,
49                base::RepeatingClosure state_change_callback,
50                CertProvisioningWorkerCallback callback),
51               (override));
52 
53   MockCertProvisioningWorker* ExpectCreateReturnMock(
54       CertScope cert_scope,
55       const CertProfile& cert_profile);
56 
57   MockCertProvisioningWorker* ExpectDeserializeReturnMock(
58       CertScope cert_scope,
59       const base::Value& saved_worker);
60 };
61 
62 // ================ MockCertProvisioningWorker =================================
63 
64 class MockCertProvisioningWorker : public CertProvisioningWorker {
65  public:
66   MockCertProvisioningWorker();
67   ~MockCertProvisioningWorker() override;
68 
69   MOCK_METHOD(void, DoStep, (), (override));
70   MOCK_METHOD(void, Stop, (CertProvisioningWorkerState), (override));
71   MOCK_METHOD(void, Pause, (), (override));
72   MOCK_METHOD(bool, IsWaiting, (), (const override));
73   MOCK_METHOD(const CertProfile&, GetCertProfile, (), (const override));
74   MOCK_METHOD(const std::string&, GetPublicKey, (), (const override));
75   MOCK_METHOD(CertProvisioningWorkerState, GetState, (), (const override));
76   MOCK_METHOD(CertProvisioningWorkerState,
77               GetPreviousState,
78               (),
79               (const override));
80   MOCK_METHOD(base::Time, GetLastUpdateTime, (), (const override));
81 
82   void SetExpectations(testing::Cardinality do_step_times,
83                        bool is_waiting,
84                        const CertProfile& cert_profile);
85 
86   // Stores |cert_profile| for SetExpectations function. It is returned by
87   // reference and without copying it there is a risk that the original
88   // CertProfile can be deleted before clearing the expectation.
89   CertProfile cert_profile_;
90 };
91 
92 }  // namespace cert_provisioning
93 }  // namespace chromeos
94 
95 #endif  // CHROME_BROWSER_CHROMEOS_CERT_PROVISIONING_MOCK_CERT_PROVISIONING_WORKER_H_
96