Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: chromeos/network/managed_network_configuration_handler_unittest.cc

Issue 12676017: Adding policy support to the new network configuration stack. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove policy initialized flags and wrap PolicyMaps with scoped_ptr. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 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 #include "chromeos/network/managed_network_configuration_handler.h"
6
7 #include <iostream>
8 #include <sstream>
9
10 #include "base/message_loop.h"
11 #include "chromeos/dbus/dbus_thread_manager.h"
12 #include "chromeos/dbus/mock_dbus_thread_manager.h"
13 #include "chromeos/dbus/mock_shill_manager_client.h"
14 #include "chromeos/dbus/mock_shill_profile_client.h"
15 #include "chromeos/dbus/mock_shill_service_client.h"
16 #include "chromeos/dbus/shill_profile_client_stub.h"
17 #include "chromeos/network/network_configuration_handler.h"
18 #include "chromeos/network/onc/onc_test_utils.h"
19 #include "chromeos/network/onc/onc_utils.h"
20 #include "dbus/object_path.h"
21 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h"
23 #include "third_party/cros_system_api/dbus/service_constants.h"
24
25 using ::testing::Invoke;
26 using ::testing::Mock;
27 using ::testing::Pointee;
28 using ::testing::Return;
29 using ::testing::SaveArg;
30 using ::testing::StrEq;
31 using ::testing::StrictMock;
32 using ::testing::_;
33
34 namespace test_utils = ::chromeos::onc::test_utils;
35
36 namespace {
stevenjb 2013/04/11 18:20:08 nit: blank line after namespace
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
37 std::string ValueToString(const base::Value* value) {
38 std::stringstream str;
39 str << *value;
40 return str.str();
41 }
42 }
stevenjb 2013/04/11 18:20:08 nit: blank line before, and // namespace
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
43
44 // Matcher to match base::Value.
45 MATCHER_P(IsEqualTo,
46 value,
47 std::string(negation ? "isn't" : "is") + " equal to " +
48 ValueToString(value)) {
49 return value->Equals(&arg);
50 }
stevenjb 2013/04/11 18:20:08 Put in anon namespace
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
51
52 namespace chromeos {
53
54 class ManagedNetworkConfigurationHandlerTest : public testing::Test {
55 public:
56 ManagedNetworkConfigurationHandlerTest() {
pastarmovj 2013/04/11 14:46:29 move {} on a single line.
stevenjb 2013/04/11 18:20:08 Or be consistent and put } on separate line for de
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
57 }
58
59 virtual ~ManagedNetworkConfigurationHandlerTest() {}
60
61 virtual void SetUp() OVERRIDE {
62 MockDBusThreadManager* dbus_thread_manager = new MockDBusThreadManager;
63 EXPECT_CALL(*dbus_thread_manager, GetSystemBus())
64 .WillRepeatedly(Return(static_cast<dbus::Bus*>(NULL)));
65 DBusThreadManager::InitializeForTesting(dbus_thread_manager);
66
67 EXPECT_CALL(*dbus_thread_manager, GetShillManagerClient())
68 .WillRepeatedly(Return(&mock_manager_client_));
69 EXPECT_CALL(*dbus_thread_manager, GetShillServiceClient())
70 .WillRepeatedly(Return(&mock_service_client_));
71 EXPECT_CALL(*dbus_thread_manager, GetShillProfileClient())
72 .WillRepeatedly(Return(&mock_profile_client_));
73
74 ON_CALL(mock_profile_client_, GetProperties(_,_,_))
75 .WillByDefault(Invoke(&stub_profile_client_,
76 &ShillProfileClientStub::GetProperties));
77
78 ON_CALL(mock_profile_client_, GetEntry(_,_,_,_))
79 .WillByDefault(Invoke(&stub_profile_client_,
80 &ShillProfileClientStub::GetEntry));
81
82 NetworkConfigurationHandler::Initialize();
83 ManagedNetworkConfigurationHandler::Initialize();
84 message_loop_.RunUntilIdle();
85 }
86
87 virtual void TearDown() OVERRIDE {
88 ManagedNetworkConfigurationHandler::Shutdown();
89 NetworkConfigurationHandler::Shutdown();
90 DBusThreadManager::Shutdown();
91 }
92
93 void SetUpEntry(const std::string& path_to_shill_json,
94 const std::string& profile_path,
95 const std::string& entry_path) {
96 stub_profile_client_.AddEntry(
97 profile_path,
98 entry_path,
99 *test_utils::ReadTestDictionary(path_to_shill_json));
100 }
101
102 void SetPolicy(onc::ONCSource onc_source,
103 const std::string& path_to_onc) {
104 scoped_ptr<base::DictionaryValue> policy;
105 if (path_to_onc.empty()) {
106 policy = onc::ReadDictionaryFromJson(onc::kEmptyUnencryptedConfiguration);
107 } else {
108 policy = test_utils::ReadTestDictionary(path_to_onc);
109 }
stevenjb 2013/04/11 18:20:08 nit: no {}
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
110 managed_handler()->SetPolicy(onc::ONC_SOURCE_USER_POLICY, *policy);
111 }
112
113 ManagedNetworkConfigurationHandler* managed_handler() {
114 return ManagedNetworkConfigurationHandler::Get();
115 }
116
117 protected:
118 StrictMock<MockShillManagerClient> mock_manager_client_;
119 StrictMock<MockShillServiceClient> mock_service_client_;
120 StrictMock<MockShillProfileClient> mock_profile_client_;
121 ShillProfileClientStub stub_profile_client_;
122 MessageLoop message_loop_;
stevenjb 2013/04/11 18:20:08 DISALLOW...
pneubeck (no reviews) 2013/04/15 12:16:24 Done.
123 };
124
125 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyManageUnconfigured) {
126 scoped_ptr<base::DictionaryValue> expected_shill_properties =
127 test_utils::ReadTestDictionary(
128 "policy/shill_policy_on_unconfigured_wifi1.json");
129
130 EXPECT_CALL(mock_profile_client_,
131 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
132 _, _)).Times(1);
133
134 EXPECT_CALL(mock_manager_client_,
135 ConfigureServiceForProfile(
136 dbus::ObjectPath("/profile/chronos/shill"),
137 IsEqualTo(expected_shill_properties.get()),
138 _, _)).Times(1);
139
140 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
pastarmovj 2013/04/11 14:46:29 Is this a file? You need to include any files need
141 message_loop_.RunUntilIdle();
142 }
143
144 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmodified) {
145 EXPECT_CALL(mock_profile_client_,
146 GetProperties(_, _, _)).Times(1);
147
148 EXPECT_CALL(mock_manager_client_,
149 ConfigureServiceForProfile(_, _, _, _)).Times(1);
150
151 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
152 message_loop_.RunUntilIdle();
153 Mock::VerifyAndClearExpectations(&mock_profile_client_);
154 Mock::VerifyAndClearExpectations(&mock_manager_client_);
155
156 SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
157 "/profile/chronos/shill",
158 "some_entry_path");
159
160 EXPECT_CALL(mock_profile_client_,
161 GetProperties(_, _, _)).Times(1);
162
163 EXPECT_CALL(mock_profile_client_,
164 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
165 "some_entry_path",
166 _, _)).Times(1);
167
168 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
169 message_loop_.RunUntilIdle();
170 }
171
172 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyManageUnmanaged) {
173 SetUpEntry("policy/shill_unmanaged_user_wifi1.json",
174 "/profile/chronos/shill",
175 "old_entry_path");
176
177 scoped_ptr<base::DictionaryValue> expected_shill_properties =
178 test_utils::ReadTestDictionary(
179 "policy/shill_policy_on_unmanaged_user_wifi1.json");
180
181 EXPECT_CALL(mock_profile_client_,
182 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
183 _, _)).Times(1);
184
185 EXPECT_CALL(mock_profile_client_,
186 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
187 "old_entry_path",
188 _, _)).Times(1);
189
190 EXPECT_CALL(mock_manager_client_,
191 ConfigureServiceForProfile(
192 dbus::ObjectPath("/profile/chronos/shill"),
193 IsEqualTo(expected_shill_properties.get()),
194 _, _)).Times(1);
195
196 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
197 message_loop_.RunUntilIdle();
198 }
199
200 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyUpdateManagedNewGUID) {
201 SetUpEntry("policy/shill_managed_wifi1.json",
202 "/profile/chronos/shill",
203 "old_entry_path");
204
205 scoped_ptr<base::DictionaryValue> expected_shill_properties =
206 test_utils::ReadTestDictionary(
207 "policy/shill_policy_on_unmanaged_user_wifi1.json");
208
209 // The passphrase isn't sent again, because it's configured by the user and
210 // Shill doesn't sent it on GetProperties calls.
211 expected_shill_properties->RemoveWithoutPathExpansion(
212 flimflam::kPassphraseProperty, NULL);
213
214 EXPECT_CALL(mock_profile_client_,
215 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
216 _, _)).Times(1);
217
218 EXPECT_CALL(mock_profile_client_,
219 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
220 "old_entry_path",
221 _, _)).Times(1);
222
223 EXPECT_CALL(mock_manager_client_,
224 ConfigureServiceForProfile(
225 dbus::ObjectPath("/profile/chronos/shill"),
226 IsEqualTo(expected_shill_properties.get()),
227 _, _)).Times(1);
228
229 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
230 message_loop_.RunUntilIdle();
231 }
232
233 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyReapplyToManaged) {
234 SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
235 "/profile/chronos/shill",
236 "old_entry_path");
237
238 scoped_ptr<base::DictionaryValue> expected_shill_properties =
239 test_utils::ReadTestDictionary(
240 "policy/shill_policy_on_unmanaged_user_wifi1.json");
241
242 // The passphrase isn't sent again, because it's configured by the user and
243 // Shill doesn't sent it on GetProperties calls.
244 expected_shill_properties->RemoveWithoutPathExpansion(
245 flimflam::kPassphraseProperty, NULL);
246
247 EXPECT_CALL(mock_profile_client_,
248 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
249 _, _)).Times(1);
250
251 EXPECT_CALL(mock_profile_client_,
252 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
253 "old_entry_path",
254 _, _)).Times(1);
255
256 EXPECT_CALL(mock_manager_client_,
257 ConfigureServiceForProfile(
258 dbus::ObjectPath("/profile/chronos/shill"),
259 IsEqualTo(expected_shill_properties.get()),
260 _, _)).Times(1);
261
262 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "policy/policy_wifi1.onc");
263 message_loop_.RunUntilIdle();
264 }
265
266 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyUnmanageManaged) {
267 SetUpEntry("policy/shill_policy_on_unmanaged_user_wifi1.json",
268 "/profile/chronos/shill",
269 "old_entry_path");
270
271 EXPECT_CALL(mock_profile_client_,
272 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
273 _, _)).Times(1);
274
275 EXPECT_CALL(mock_profile_client_,
276 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
277 "old_entry_path",
278 _, _)).Times(1);
279
280 EXPECT_CALL(mock_profile_client_,
281 DeleteEntry(dbus::ObjectPath("/profile/chronos/shill"),
282 "old_entry_path",
283 _, _)).Times(1);
284
285 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "");
286 message_loop_.RunUntilIdle();
287 }
288
289 TEST_F(ManagedNetworkConfigurationHandlerTest, SetPolicyIgnoreUnmanaged) {
290 SetUpEntry("policy/shill_unmanaged_user_wifi1.json",
291 "/profile/chronos/shill",
292 "old_entry_path");
293
294 EXPECT_CALL(mock_profile_client_,
295 GetProperties(dbus::ObjectPath("/profile/chronos/shill"),
296 _, _)).Times(1);
297
298 EXPECT_CALL(mock_profile_client_,
299 GetEntry(dbus::ObjectPath("/profile/chronos/shill"),
300 "old_entry_path",
301 _, _)).Times(1);
302
303 SetPolicy(onc::ONC_SOURCE_USER_POLICY, "");
304 message_loop_.RunUntilIdle();
305 }
306
307 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698