blob: 8060bf8eedc0900dd53675d9756840c15f6533b7 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2014 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
Alex Deymoc705cc82014-02-19 11:15:00 -080016
Gilad Arnold48415f12014-06-27 07:10:58 -070017#ifndef UPDATE_ENGINE_UPDATE_MANAGER_MOCK_POLICY_H_
18#define UPDATE_ENGINE_UPDATE_MANAGER_MOCK_POLICY_H_
19
20#include <string>
Alex Deymoc705cc82014-02-19 11:15:00 -080021
22#include <gmock/gmock.h>
23
Gilad Arnold7fb6e252014-10-29 11:49:19 -070024#include "update_engine/update_manager/default_policy.h"
Alex Deymo63784a52014-05-28 10:46:14 -070025#include "update_engine/update_manager/policy.h"
Alex Deymoc705cc82014-02-19 11:15:00 -080026
Alex Deymo63784a52014-05-28 10:46:14 -070027namespace chromeos_update_manager {
Alex Deymoc705cc82014-02-19 11:15:00 -080028
29// A mocked implementation of Policy.
30class MockPolicy : public Policy {
Alex Deymo0d11c602014-04-23 20:12:20 -070031 public:
Gilad Arnold7fb6e252014-10-29 11:49:19 -070032 explicit MockPolicy(chromeos_update_engine::ClockInterface* clock)
33 : default_policy_(clock) {
34 // We defer to the corresponding DefaultPolicy methods, by default.
35 ON_CALL(*this, UpdateCheckAllowed(testing::_, testing::_, testing::_,
36 testing::_))
37 .WillByDefault(testing::Invoke(
38 &default_policy_, &DefaultPolicy::UpdateCheckAllowed));
Aaron Wood987ffc12017-10-06 14:48:25 -070039 ON_CALL(*this,
40 UpdateCanBeApplied(
41 testing::_, testing::_, testing::_, testing::_, testing::_))
42 .WillByDefault(testing::Invoke(&default_policy_,
43 &DefaultPolicy::UpdateCanBeApplied));
Gilad Arnold7fb6e252014-10-29 11:49:19 -070044 ON_CALL(*this, UpdateCanStart(testing::_, testing::_, testing::_,
45 testing::_, testing::_))
46 .WillByDefault(testing::Invoke(
47 &default_policy_, &DefaultPolicy::UpdateCanStart));
48 ON_CALL(*this, UpdateDownloadAllowed(testing::_, testing::_, testing::_,
49 testing::_))
50 .WillByDefault(testing::Invoke(
51 &default_policy_, &DefaultPolicy::UpdateDownloadAllowed));
52 ON_CALL(*this, P2PEnabled(testing::_, testing::_, testing::_, testing::_))
53 .WillByDefault(testing::Invoke(
54 &default_policy_, &DefaultPolicy::P2PEnabled));
55 ON_CALL(*this, P2PEnabledChanged(testing::_, testing::_, testing::_,
56 testing::_, testing::_))
57 .WillByDefault(testing::Invoke(
58 &default_policy_, &DefaultPolicy::P2PEnabledChanged));
59 }
60
61 MockPolicy() : MockPolicy(nullptr) {}
Alex Deymo610277e2014-11-11 21:18:11 -080062 ~MockPolicy() override {}
Alex Deymoc705cc82014-02-19 11:15:00 -080063
64 // Policy overrides.
Alex Deymo2de23f52014-02-26 14:30:13 -080065 MOCK_CONST_METHOD4(UpdateCheckAllowed,
66 EvalStatus(EvaluationContext*, State*, std::string*,
Alex Deymo0d11c602014-04-23 20:12:20 -070067 UpdateCheckParams*));
Alex Deymoc705cc82014-02-19 11:15:00 -080068
Aaron Wood987ffc12017-10-06 14:48:25 -070069 MOCK_CONST_METHOD5(UpdateCanBeApplied,
70 EvalStatus(EvaluationContext*,
71 State*,
72 std::string*,
73 chromeos_update_engine::ErrorCode*,
74 chromeos_update_engine::InstallPlan*));
75
Gilad Arnolddc4bb262014-07-23 10:45:19 -070076 MOCK_CONST_METHOD5(UpdateCanStart,
Gilad Arnoldaf2f6ae2014-04-28 14:14:52 -070077 EvalStatus(EvaluationContext*, State*, std::string*,
Gilad Arnold78ecbfc2014-10-22 14:38:25 -070078 UpdateDownloadParams*, UpdateState));
Gilad Arnoldaf2f6ae2014-04-28 14:14:52 -070079
Gilad Arnoldd78caf92014-09-24 09:28:14 -070080 MOCK_CONST_METHOD4(UpdateDownloadAllowed,
Gilad Arnold0adbc942014-05-12 10:35:43 -070081 EvalStatus(EvaluationContext*, State*, std::string*,
82 bool*));
83
Gilad Arnold78ecbfc2014-10-22 14:38:25 -070084 MOCK_CONST_METHOD4(P2PEnabled,
85 EvalStatus(EvaluationContext*, State*, std::string*,
86 bool*));
87
88 MOCK_CONST_METHOD5(P2PEnabledChanged,
89 EvalStatus(EvaluationContext*, State*, std::string*,
90 bool*, bool));
91
Gilad Arnold7fb6e252014-10-29 11:49:19 -070092 protected:
93 // Policy override.
94 std::string PolicyName() const override { return "MockPolicy"; }
95
Alex Deymo0d11c602014-04-23 20:12:20 -070096 private:
Gilad Arnold7fb6e252014-10-29 11:49:19 -070097 DefaultPolicy default_policy_;
98
Alex Deymoc705cc82014-02-19 11:15:00 -080099 DISALLOW_COPY_AND_ASSIGN(MockPolicy);
100};
101
Alex Deymo63784a52014-05-28 10:46:14 -0700102} // namespace chromeos_update_manager
Alex Deymoc705cc82014-02-19 11:15:00 -0800103
Gilad Arnold48415f12014-06-27 07:10:58 -0700104#endif // UPDATE_ENGINE_UPDATE_MANAGER_MOCK_POLICY_H_