blob: 0cfa4ed23e07cf0bd062f2c0b8cf6301c863fe69 [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka7ce499f2015-06-09 08:04:11 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Vitaly Buka912b6982015-07-06 11:13:03 -07005#ifndef LIBWEAVE_SRC_PRIVET_MOCK_DELEGATES_H_
6#define LIBWEAVE_SRC_PRIVET_MOCK_DELEGATES_H_
Vitaly Buka7ce499f2015-06-09 08:04:11 -07007
8#include <set>
9#include <string>
10#include <utility>
11
12#include <base/values.h>
13#include <gmock/gmock.h>
14#include <gtest/gtest.h>
15
Stefan Sauer2d16dfa2015-09-25 17:08:35 +020016#include "src/privet/cloud_delegate.h"
17#include "src/privet/device_delegate.h"
Stefan Sauer2d16dfa2015-09-25 17:08:35 +020018#include "src/privet/security_delegate.h"
19#include "src/privet/wifi_delegate.h"
Vitaly Buka7ce499f2015-06-09 08:04:11 -070020
21using testing::_;
22using testing::Return;
23using testing::ReturnRef;
24using testing::SetArgPointee;
25
Vitaly Bukab6f015a2015-07-09 14:59:23 -070026namespace weave {
27namespace privet {
Vitaly Buka7ce499f2015-06-09 08:04:11 -070028
29ACTION_TEMPLATE(RunCallback,
30 HAS_1_TEMPLATE_PARAMS(int, k),
31 AND_0_VALUE_PARAMS()) {
32 return std::get<k>(args).Run();
33}
34
35ACTION_TEMPLATE(RunCallback,
36 HAS_1_TEMPLATE_PARAMS(int, k),
37 AND_1_VALUE_PARAMS(p0)) {
38 return std::get<k>(args).Run(p0);
39}
40
41class MockDeviceDelegate : public DeviceDelegate {
42 using IntPair = std::pair<uint16_t, uint16_t>;
43
44 public:
45 MOCK_CONST_METHOD0(GetHttpEnpoint, IntPair());
46 MOCK_CONST_METHOD0(GetHttpsEnpoint, IntPair());
47 MOCK_CONST_METHOD0(GetUptime, base::TimeDelta());
Alex Vakulenkoefee3a22015-11-17 15:08:38 -080048 MOCK_CONST_METHOD0(GetHttpRequestTimeout, base::TimeDelta());
49 MOCK_METHOD3(PostDelayedTask, void(const tracked_objects::Location&,
50 const base::Closure&,
51 base::TimeDelta));
Vitaly Buka7ce499f2015-06-09 08:04:11 -070052
53 MockDeviceDelegate() {
54 EXPECT_CALL(*this, GetHttpEnpoint())
55 .WillRepeatedly(Return(std::make_pair(0, 0)));
56 EXPECT_CALL(*this, GetHttpsEnpoint())
57 .WillRepeatedly(Return(std::make_pair(0, 0)));
58 EXPECT_CALL(*this, GetUptime())
59 .WillRepeatedly(Return(base::TimeDelta::FromHours(1)));
60 }
61};
62
63class MockSecurityDelegate : public SecurityDelegate {
64 public:
65 MOCK_METHOD2(CreateAccessToken,
66 std::string(const UserInfo&, const base::Time&));
67 MOCK_CONST_METHOD2(ParseAccessToken,
68 UserInfo(const std::string&, base::Time*));
69 MOCK_CONST_METHOD0(GetPairingTypes, std::set<PairingType>());
70 MOCK_CONST_METHOD0(GetCryptoTypes, std::set<CryptoType>());
71 MOCK_CONST_METHOD1(IsValidPairingCode, bool(const std::string&));
Vitaly Buka0801a1f2015-08-14 10:03:46 -070072 MOCK_METHOD5(
73 StartPairing,
74 bool(PairingType, CryptoType, std::string*, std::string*, ErrorPtr*));
Vitaly Buka7ce499f2015-06-09 08:04:11 -070075 MOCK_METHOD5(ConfirmPairing,
76 bool(const std::string&,
77 const std::string&,
78 std::string*,
79 std::string*,
Vitaly Buka0801a1f2015-08-14 10:03:46 -070080 ErrorPtr*));
81 MOCK_METHOD2(CancelPairing, bool(const std::string&, ErrorPtr*));
Vitaly Buka7ce499f2015-06-09 08:04:11 -070082
83 MockSecurityDelegate() {
84 EXPECT_CALL(*this, CreateAccessToken(_, _))
85 .WillRepeatedly(Return("GuestAccessToken"));
86
87 EXPECT_CALL(*this, ParseAccessToken(_, _))
88 .WillRepeatedly(DoAll(SetArgPointee<1>(base::Time::Now()),
89 Return(UserInfo{AuthScope::kViewer, 1234567})));
90
91 EXPECT_CALL(*this, GetPairingTypes())
92 .WillRepeatedly(Return(std::set<PairingType>{
Vitaly Buka4ebd3292015-09-23 18:04:17 -070093 PairingType::kPinCode, PairingType::kEmbeddedCode,
Vitaly Buka7ce499f2015-06-09 08:04:11 -070094 }));
95
96 EXPECT_CALL(*this, GetCryptoTypes())
97 .WillRepeatedly(Return(std::set<CryptoType>{
Vitaly Bukac8ba2282015-10-01 17:42:40 -070098 CryptoType::kSpake_p224,
Vitaly Buka7ce499f2015-06-09 08:04:11 -070099 }));
100
101 EXPECT_CALL(*this, StartPairing(_, _, _, _, _))
102 .WillRepeatedly(DoAll(SetArgPointee<2>("testSession"),
103 SetArgPointee<3>("testCommitment"),
104 Return(true)));
105
106 EXPECT_CALL(*this, ConfirmPairing(_, _, _, _, _))
107 .WillRepeatedly(DoAll(SetArgPointee<2>("testFingerprint"),
108 SetArgPointee<3>("testSignature"), Return(true)));
109 EXPECT_CALL(*this, CancelPairing(_, _)).WillRepeatedly(Return(true));
110 }
111};
112
113class MockWifiDelegate : public WifiDelegate {
114 public:
115 MOCK_CONST_METHOD0(GetConnectionState, const ConnectionState&());
116 MOCK_CONST_METHOD0(GetSetupState, const SetupState&());
117 MOCK_METHOD3(ConfigureCredentials,
Vitaly Buka0801a1f2015-08-14 10:03:46 -0700118 bool(const std::string&, const std::string&, ErrorPtr*));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700119 MOCK_CONST_METHOD0(GetCurrentlyConnectedSsid, std::string());
120 MOCK_CONST_METHOD0(GetHostedSsid, std::string());
121 MOCK_CONST_METHOD0(GetTypes, std::set<WifiType>());
122
123 MockWifiDelegate() {
124 EXPECT_CALL(*this, GetConnectionState())
125 .WillRepeatedly(ReturnRef(connection_state_));
126 EXPECT_CALL(*this, GetSetupState()).WillRepeatedly(ReturnRef(setup_state_));
127 EXPECT_CALL(*this, GetCurrentlyConnectedSsid())
128 .WillRepeatedly(Return("TestSsid"));
129 EXPECT_CALL(*this, GetHostedSsid()).WillRepeatedly(Return(""));
130 EXPECT_CALL(*this, GetTypes())
131 .WillRepeatedly(Return(std::set<WifiType>{WifiType::kWifi24}));
132 }
133
134 ConnectionState connection_state_{ConnectionState::kOffline};
135 SetupState setup_state_{SetupState::kNone};
136};
137
138class MockCloudDelegate : public CloudDelegate {
139 public:
Johan Euphrosine0b7bb9f2015-09-29 01:11:21 -0700140 MOCK_CONST_METHOD0(GetDeviceId, std::string());
Vitaly Buka658aa362015-09-15 20:59:12 -0700141 MOCK_CONST_METHOD0(GetModelId, std::string());
142 MOCK_CONST_METHOD0(GetName, std::string());
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700143 MOCK_CONST_METHOD0(GetDescription, std::string());
144 MOCK_CONST_METHOD0(GetLocation, std::string());
Vitaly Bukab624bc42015-09-29 19:13:55 -0700145 MOCK_METHOD3(UpdateDeviceInfo,
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700146 void(const std::string&,
147 const std::string&,
Vitaly Bukab624bc42015-09-29 19:13:55 -0700148 const std::string&));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700149 MOCK_CONST_METHOD0(GetOemName, std::string());
150 MOCK_CONST_METHOD0(GetModelName, std::string());
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700151 MOCK_CONST_METHOD0(GetAnonymousMaxScope, AuthScope());
152 MOCK_CONST_METHOD0(GetConnectionState, const ConnectionState&());
153 MOCK_CONST_METHOD0(GetSetupState, const SetupState&());
Vitaly Buka0801a1f2015-08-14 10:03:46 -0700154 MOCK_METHOD3(Setup, bool(const std::string&, const std::string&, ErrorPtr*));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700155 MOCK_CONST_METHOD0(GetCloudId, std::string());
Alex Vakulenkod91d6252015-12-05 17:14:39 -0800156 MOCK_CONST_METHOD0(GetLegacyState, const base::DictionaryValue&());
157 MOCK_CONST_METHOD0(GetLegacyCommandDef, const base::DictionaryValue&());
158 MOCK_CONST_METHOD0(GetComponents, const base::DictionaryValue&());
159 MOCK_CONST_METHOD0(GetTraits, const base::DictionaryValue&());
Vitaly Buka74763422015-10-11 00:39:52 -0700160 MOCK_METHOD3(AddCommand,
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700161 void(const base::DictionaryValue&,
162 const UserInfo&,
Vitaly Buka74763422015-10-11 00:39:52 -0700163 const CommandDoneCallback&));
164 MOCK_METHOD3(GetCommand,
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700165 void(const std::string&,
166 const UserInfo&,
Vitaly Buka74763422015-10-11 00:39:52 -0700167 const CommandDoneCallback&));
168 MOCK_METHOD3(CancelCommand,
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700169 void(const std::string&,
170 const UserInfo&,
Vitaly Buka74763422015-10-11 00:39:52 -0700171 const CommandDoneCallback&));
172 MOCK_METHOD2(ListCommands, void(const UserInfo&, const CommandDoneCallback&));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700173
174 MockCloudDelegate() {
Johan Euphrosine0b7bb9f2015-09-29 01:11:21 -0700175 EXPECT_CALL(*this, GetDeviceId()).WillRepeatedly(Return("TestId"));
Vitaly Buka658aa362015-09-15 20:59:12 -0700176 EXPECT_CALL(*this, GetModelId()).WillRepeatedly(Return("ABMID"));
177 EXPECT_CALL(*this, GetName()).WillRepeatedly(Return("TestDevice"));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700178 EXPECT_CALL(*this, GetDescription()).WillRepeatedly(Return(""));
179 EXPECT_CALL(*this, GetLocation()).WillRepeatedly(Return(""));
Vitaly Bukab624bc42015-09-29 19:13:55 -0700180 EXPECT_CALL(*this, UpdateDeviceInfo(_, _, _)).WillRepeatedly(Return());
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700181 EXPECT_CALL(*this, GetOemName()).WillRepeatedly(Return("Chromium"));
182 EXPECT_CALL(*this, GetModelName()).WillRepeatedly(Return("Brillo"));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700183 EXPECT_CALL(*this, GetAnonymousMaxScope())
184 .WillRepeatedly(Return(AuthScope::kUser));
185 EXPECT_CALL(*this, GetConnectionState())
186 .WillRepeatedly(ReturnRef(connection_state_));
187 EXPECT_CALL(*this, GetSetupState()).WillRepeatedly(ReturnRef(setup_state_));
188 EXPECT_CALL(*this, GetCloudId()).WillRepeatedly(Return("TestCloudId"));
189 test_dict_.Set("test", new base::DictionaryValue);
Alex Vakulenkod91d6252015-12-05 17:14:39 -0800190 EXPECT_CALL(*this, GetLegacyState()).WillRepeatedly(ReturnRef(test_dict_));
191 EXPECT_CALL(*this,
192 GetLegacyCommandDef()).WillRepeatedly(ReturnRef(test_dict_));
193 EXPECT_CALL(*this, GetTraits()).WillRepeatedly(ReturnRef(test_dict_));
194 EXPECT_CALL(*this, GetComponents()).WillRepeatedly(ReturnRef(test_dict_));
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700195 }
196
197 ConnectionState connection_state_{ConnectionState::kOnline};
198 SetupState setup_state_{SetupState::kNone};
199 base::DictionaryValue test_dict_;
200};
201
Vitaly Bukab6f015a2015-07-09 14:59:23 -0700202} // namespace privet
203} // namespace weave
Vitaly Buka7ce499f2015-06-09 08:04:11 -0700204
Vitaly Buka912b6982015-07-06 11:13:03 -0700205#endif // LIBWEAVE_SRC_PRIVET_MOCK_DELEGATES_H_