xref: /aosp_15_r20/external/libbrillo/policy/mock_device_policy.h (revision 1a96fba65179ea7d3f56207137718607415c5953)
1*1a96fba6SXin Li // Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2*1a96fba6SXin Li // Use of this source code is governed by a BSD-style license that can be
3*1a96fba6SXin Li // found in the LICENSE file.
4*1a96fba6SXin Li 
5*1a96fba6SXin Li #ifndef LIBBRILLO_POLICY_MOCK_DEVICE_POLICY_H_
6*1a96fba6SXin Li #define LIBBRILLO_POLICY_MOCK_DEVICE_POLICY_H_
7*1a96fba6SXin Li 
8*1a96fba6SXin Li #include <set>
9*1a96fba6SXin Li #include <string>
10*1a96fba6SXin Li #include <utility>
11*1a96fba6SXin Li #include <vector>
12*1a96fba6SXin Li 
13*1a96fba6SXin Li #include <gmock/gmock.h>
14*1a96fba6SXin Li 
15*1a96fba6SXin Li #include "policy/device_policy.h"
16*1a96fba6SXin Li 
17*1a96fba6SXin Li #pragma GCC visibility push(default)
18*1a96fba6SXin Li 
19*1a96fba6SXin Li namespace policy {
20*1a96fba6SXin Li 
21*1a96fba6SXin Li // This is a generic mock class for the DevicePolicy that can be used by other
22*1a96fba6SXin Li // subsystems for tests. It allows to mock out the reading of a real policy
23*1a96fba6SXin Li // file and to simulate different policy values.
24*1a96fba6SXin Li // The test that needs policies would then do something like this :
25*1a96fba6SXin Li // // Prepare the action that would return a predefined policy value:
26*1a96fba6SXin Li // ACTION_P(SetMetricsPolicy, enabled) {
27*1a96fba6SXin Li //   *arg0 = enabled;
28*1a96fba6SXin Li //   return true;
29*1a96fba6SXin Li // }
30*1a96fba6SXin Li // ...
31*1a96fba6SXin Li // // Initialize the Mock class
32*1a96fba6SXin Li // policy::MockDevicePolicy* device_policy = new policy::MockDevicePolicy();
33*1a96fba6SXin Li // // We should expect calls to LoadPolicy almost always and return true.
34*1a96fba6SXin Li // EXPECT_CALL(*device_policy_, LoadPolicy())
35*1a96fba6SXin Li //     .Times(AnyNumber())
36*1a96fba6SXin Li //     .WillRepeatedly(Return(true));
37*1a96fba6SXin Li // // This example needs to simulate the Metrics Enabled policy being set.
38*1a96fba6SXin Li // EXPECT_CALL(*device_policy_, GetMetricsEnabled(_))
39*1a96fba6SXin Li //     .Times(AnyNumber())
40*1a96fba6SXin Li //     .WillRepeatedly(SetMetricsPolicy(true));
41*1a96fba6SXin Li // policy::PolicyProvider provider(device_policy);
42*1a96fba6SXin Li // ...
43*1a96fba6SXin Li // // In a test that needs other value of that policy we can do that:
44*1a96fba6SXin Li // EXPECT_CALL(*device_policy_, GetMetricsEnabled(_))
45*1a96fba6SXin Li //     .WillOnce(SetMetricsPolicy(false));
46*1a96fba6SXin Li //
47*1a96fba6SXin Li // See metrics_library_test.cc for example.
48*1a96fba6SXin Li class MockDevicePolicy : public DevicePolicy {
49*1a96fba6SXin Li  public:
MockDevicePolicy()50*1a96fba6SXin Li   MockDevicePolicy() {
51*1a96fba6SXin Li     ON_CALL(*this, LoadPolicy()).WillByDefault(testing::Return(true));
52*1a96fba6SXin Li   }
53*1a96fba6SXin Li   ~MockDevicePolicy() override = default;
54*1a96fba6SXin Li 
55*1a96fba6SXin Li   MOCK_METHOD(bool, LoadPolicy, (), (override));
56*1a96fba6SXin Li   MOCK_METHOD(bool, IsEnterpriseEnrolled, (), (const, override));
57*1a96fba6SXin Li 
58*1a96fba6SXin Li   MOCK_METHOD(bool, GetPolicyRefreshRate, (int*), (const, override));
59*1a96fba6SXin Li   MOCK_METHOD(bool,
60*1a96fba6SXin Li               GetUserWhitelist,
61*1a96fba6SXin Li               (std::vector<std::string>*),
62*1a96fba6SXin Li               (const, override));
63*1a96fba6SXin Li   MOCK_METHOD(bool, GetGuestModeEnabled, (bool*), (const, override));
64*1a96fba6SXin Li   MOCK_METHOD(bool, GetCameraEnabled, (bool*), (const, override));
65*1a96fba6SXin Li   MOCK_METHOD(bool, GetShowUserNames, (bool*), (const, override));
66*1a96fba6SXin Li   MOCK_METHOD(bool, GetDataRoamingEnabled, (bool*), (const, override));
67*1a96fba6SXin Li   MOCK_METHOD(bool, GetAllowNewUsers, (bool*), (const, override));
68*1a96fba6SXin Li   MOCK_METHOD(bool, GetMetricsEnabled, (bool*), (const, override));
69*1a96fba6SXin Li   MOCK_METHOD(bool, GetReportVersionInfo, (bool*), (const, override));
70*1a96fba6SXin Li   MOCK_METHOD(bool, GetReportActivityTimes, (bool*), (const, override));
71*1a96fba6SXin Li   MOCK_METHOD(bool, GetReportBootMode, (bool*), (const, override));
72*1a96fba6SXin Li   MOCK_METHOD(bool, GetEphemeralUsersEnabled, (bool*), (const, override));
73*1a96fba6SXin Li   MOCK_METHOD(bool, GetReleaseChannel, (std::string*), (const, override));
74*1a96fba6SXin Li   MOCK_METHOD(bool, GetReleaseChannelDelegated, (bool*), (const, override));
75*1a96fba6SXin Li   MOCK_METHOD(bool, GetUpdateDisabled, (bool*), (const, override));
76*1a96fba6SXin Li   MOCK_METHOD(bool, GetTargetVersionPrefix, (std::string*), (const, override));
77*1a96fba6SXin Li   MOCK_METHOD(bool, GetRollbackToTargetVersion, (int*), (const, override));
78*1a96fba6SXin Li   MOCK_METHOD(bool, GetRollbackAllowedMilestones, (int*), (const, override));
79*1a96fba6SXin Li   MOCK_METHOD(bool, GetScatterFactorInSeconds, (int64_t*), (const, override));
80*1a96fba6SXin Li   MOCK_METHOD(bool,
81*1a96fba6SXin Li               GetAllowedConnectionTypesForUpdate,
82*1a96fba6SXin Li               (std::set<std::string>*),
83*1a96fba6SXin Li               (const, override));
84*1a96fba6SXin Li   MOCK_METHOD(bool,
85*1a96fba6SXin Li               GetOpenNetworkConfiguration,
86*1a96fba6SXin Li               (std::string*),
87*1a96fba6SXin Li               (const, override));
88*1a96fba6SXin Li   MOCK_METHOD(bool, GetOwner, (std::string*), (const, override));
89*1a96fba6SXin Li   MOCK_METHOD(bool, GetHttpDownloadsEnabled, (bool*), (const, override));
90*1a96fba6SXin Li   MOCK_METHOD(bool, GetAuP2PEnabled, (bool*), (const, override));
91*1a96fba6SXin Li   MOCK_METHOD(bool,
92*1a96fba6SXin Li               GetAllowKioskAppControlChromeVersion,
93*1a96fba6SXin Li               (bool*),
94*1a96fba6SXin Li               (const, override));
95*1a96fba6SXin Li   MOCK_METHOD(bool,
96*1a96fba6SXin Li               GetUsbDetachableWhitelist,
97*1a96fba6SXin Li               (std::vector<DevicePolicy::UsbDeviceId>*),
98*1a96fba6SXin Li               (const, override));
99*1a96fba6SXin Li   MOCK_METHOD(bool,
100*1a96fba6SXin Li               GetAutoLaunchedKioskAppId,
101*1a96fba6SXin Li               (std::string*),
102*1a96fba6SXin Li               (const, override));
103*1a96fba6SXin Li   MOCK_METHOD(bool, IsEnterpriseManaged, (), (const, override));
104*1a96fba6SXin Li   MOCK_METHOD(bool,
105*1a96fba6SXin Li               GetSecondFactorAuthenticationMode,
106*1a96fba6SXin Li               (int*),
107*1a96fba6SXin Li               (const, override));
108*1a96fba6SXin Li   MOCK_METHOD(bool,
109*1a96fba6SXin Li               GetDisallowedTimeIntervals,
110*1a96fba6SXin Li               (std::vector<WeeklyTimeInterval>*),
111*1a96fba6SXin Li               (const, override));
112*1a96fba6SXin Li   MOCK_METHOD(bool,
113*1a96fba6SXin Li               GetDeviceUpdateStagingSchedule,
114*1a96fba6SXin Li               (std::vector<DayPercentagePair>*),
115*1a96fba6SXin Li               (const, override));
116*1a96fba6SXin Li   MOCK_METHOD(bool,
117*1a96fba6SXin Li               GetDeviceQuickFixBuildToken,
118*1a96fba6SXin Li               (std::string*),
119*1a96fba6SXin Li               (const, override));
120*1a96fba6SXin Li   MOCK_METHOD(bool, GetDeviceDirectoryApiId, (std::string*), (const, override));
121*1a96fba6SXin Li   MOCK_METHOD(bool, VerifyPolicySignature, (), (override));
122*1a96fba6SXin Li };
123*1a96fba6SXin Li }  // namespace policy
124*1a96fba6SXin Li 
125*1a96fba6SXin Li #pragma GCC visibility pop
126*1a96fba6SXin Li 
127*1a96fba6SXin Li #endif  // LIBBRILLO_POLICY_MOCK_DEVICE_POLICY_H_
128