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

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

Issue 2787613002: Add NetworkStateTest helper class (Closed)
Patch Set: Also convert ProhibitedTechnologiesHandlerTest Created 3 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
« no previous file with comments | « chromeos/BUILD.gn ('k') | chromeos/network/network_connection_handler_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/network/auto_connect_handler.h" 5 #include "chromeos/network/auto_connect_handler.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h"
11 #include "base/callback.h"
12 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
13 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
14 #include "base/macros.h" 12 #include "base/macros.h"
15 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
16 #include "base/run_loop.h" 14 #include "base/run_loop.h"
17 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
18 #include "base/test/scoped_task_scheduler.h" 16 #include "base/test/scoped_task_scheduler.h"
19 #include "chromeos/cert_loader.h" 17 #include "chromeos/cert_loader.h"
20 #include "chromeos/dbus/dbus_thread_manager.h" 18 #include "chromeos/dbus/dbus_thread_manager.h"
21 #include "chromeos/dbus/shill_device_client.h"
22 #include "chromeos/dbus/shill_manager_client.h"
23 #include "chromeos/dbus/shill_profile_client.h"
24 #include "chromeos/dbus/shill_service_client.h"
25 #include "chromeos/network/client_cert_resolver.h" 19 #include "chromeos/network/client_cert_resolver.h"
26 #include "chromeos/network/managed_network_configuration_handler_impl.h" 20 #include "chromeos/network/managed_network_configuration_handler_impl.h"
27 #include "chromeos/network/network_configuration_handler.h" 21 #include "chromeos/network/network_configuration_handler.h"
28 #include "chromeos/network/network_profile_handler.h" 22 #include "chromeos/network/network_profile_handler.h"
29 #include "chromeos/network/network_state_handler.h" 23 #include "chromeos/network/network_state_test.h"
30 #include "chromeos/network/onc/onc_utils.h"
31 #include "components/onc/onc_constants.h" 24 #include "components/onc/onc_constants.h"
32 #include "crypto/scoped_nss_types.h" 25 #include "crypto/scoped_nss_types.h"
33 #include "crypto/scoped_test_nss_db.h" 26 #include "crypto/scoped_test_nss_db.h"
34 #include "net/base/net_errors.h" 27 #include "net/base/net_errors.h"
35 #include "net/cert/nss_cert_database_chromeos.h" 28 #include "net/cert/nss_cert_database_chromeos.h"
36 #include "net/cert/x509_certificate.h" 29 #include "net/cert/x509_certificate.h"
37 #include "net/test/cert_test_util.h" 30 #include "net/test/cert_test_util.h"
38 #include "net/test/test_data_directory.h" 31 #include "net/test/test_data_directory.h"
39 #include "testing/gtest/include/gtest/gtest.h"
40 #include "third_party/cros_system_api/dbus/service_constants.h" 32 #include "third_party/cros_system_api/dbus/service_constants.h"
41 33
42 namespace chromeos { 34 namespace chromeos {
43 35
44 namespace { 36 namespace {
45 37
46 const char kUserHash[] = "user_hash";
47
48 void ConfigureCallback(const dbus::ObjectPath& result) {
49 }
50
51 void FailErrorCallback(const std::string& error_name,
52 const std::string& error_message) {
53 // This function is not expected to be called.
54 EXPECT_TRUE(false);
55 }
56
57 class TestCertResolveObserver : public ClientCertResolver::Observer { 38 class TestCertResolveObserver : public ClientCertResolver::Observer {
58 public: 39 public:
59 explicit TestCertResolveObserver(ClientCertResolver* cert_resolver) 40 explicit TestCertResolveObserver(ClientCertResolver* cert_resolver)
60 : changed_network_properties_(false), cert_resolver_(cert_resolver) { 41 : changed_network_properties_(false), cert_resolver_(cert_resolver) {
61 cert_resolver_->AddObserver(this); 42 cert_resolver_->AddObserver(this);
62 } 43 }
63 44
64 void ResolveRequestCompleted(bool changed_network_properties) override { 45 void ResolveRequestCompleted(bool changed_network_properties) override {
65 cert_resolver_->RemoveObserver(this); 46 cert_resolver_->RemoveObserver(this);
66 changed_network_properties_ = changed_network_properties; 47 changed_network_properties_ = changed_network_properties;
67 } 48 }
68 49
69 bool DidNetworkPropertiesChange() { return changed_network_properties_; } 50 bool DidNetworkPropertiesChange() { return changed_network_properties_; }
70 51
71 private: 52 private:
72 bool changed_network_properties_; 53 bool changed_network_properties_;
73 ClientCertResolver* cert_resolver_; 54 ClientCertResolver* cert_resolver_;
74 }; 55 };
75 56
76 } // namespace 57 } // namespace
77 58
78 class AutoConnectHandlerTest : public testing::Test { 59 class AutoConnectHandlerTest : public NetworkStateTest {
79 public: 60 public:
80 AutoConnectHandlerTest() 61 AutoConnectHandlerTest() : scoped_task_scheduler_(&message_loop_) {}
81 : test_manager_client_(nullptr),
82 test_service_client_(nullptr),
83 scoped_task_scheduler_(&message_loop_) {}
84 62
85 void SetUp() override { 63 void SetUp() override {
86 ASSERT_TRUE(test_nssdb_.is_open()); 64 ASSERT_TRUE(test_nssdb_.is_open());
87 65
88 // Use the same DB for public and private slot. 66 // Use the same DB for public and private slot.
89 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS( 67 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS(
90 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())), 68 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())),
91 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())))); 69 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot()))));
92 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner()); 70 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner());
93 71
94 CertLoader::Initialize(); 72 CertLoader::Initialize();
95 CertLoader::ForceHardwareBackedForTesting(); 73 CertLoader::ForceHardwareBackedForTesting();
96 74
97 DBusThreadManager::Initialize(); 75 DBusThreadManager::Initialize();
98 DBusThreadManager* dbus_manager = DBusThreadManager::Get();
99 test_manager_client_ =
100 dbus_manager->GetShillManagerClient()->GetTestInterface();
101 test_service_client_ =
102 dbus_manager->GetShillServiceClient()->GetTestInterface();
103 76
104 test_manager_client_->AddTechnology(shill::kTypeWifi, true /* enabled */); 77 NetworkStateTest::SetUp();
105 dbus_manager->GetShillDeviceClient()->GetTestInterface()->AddDevice(
106 "/device/wifi1", shill::kTypeWifi, "wifi_device1");
107 test_manager_client_->AddTechnology(shill::kTypeCellular,
108 true /* enabled */);
109 dbus_manager->GetShillProfileClient()->GetTestInterface()->AddProfile(
110 "shared_profile_path", std::string() /* shared profile */);
111 dbus_manager->GetShillProfileClient()->GetTestInterface()->AddProfile(
112 "user_profile_path", kUserHash);
113 78
114 base::RunLoop().RunUntilIdle();
115 LoginState::Initialize(); 79 LoginState::Initialize();
116 network_state_handler_ = NetworkStateHandler::InitializeForTest(); 80
117 network_config_handler_.reset( 81 network_config_handler_.reset(
118 NetworkConfigurationHandler::InitializeForTest( 82 NetworkConfigurationHandler::InitializeForTest(
119 network_state_handler_.get(), NULL /* network_device_handler */)); 83 network_state_handler(), nullptr /* network_device_handler */));
120 84
121 network_profile_handler_.reset(new NetworkProfileHandler()); 85 network_profile_handler_.reset(new NetworkProfileHandler());
122 network_profile_handler_->Init(); 86 network_profile_handler_->Init();
123 87
124 managed_config_handler_.reset(new ManagedNetworkConfigurationHandlerImpl()); 88 managed_config_handler_.reset(new ManagedNetworkConfigurationHandlerImpl());
125 managed_config_handler_->Init( 89 managed_config_handler_->Init(
126 network_state_handler_.get(), network_profile_handler_.get(), 90 network_state_handler(), network_profile_handler_.get(),
127 network_config_handler_.get(), nullptr /* network_device_handler */, 91 network_config_handler_.get(), nullptr /* network_device_handler */,
128 nullptr /* prohibited_technologies_handler */); 92 nullptr /* prohibited_technologies_handler */);
129 93
130 client_cert_resolver_.reset(new ClientCertResolver()); 94 client_cert_resolver_.reset(new ClientCertResolver());
131 client_cert_resolver_->Init(network_state_handler_.get(), 95 client_cert_resolver_->Init(network_state_handler(),
132 managed_config_handler_.get()); 96 managed_config_handler_.get());
133 97
134 auto_connect_handler_.reset(new AutoConnectHandler()); 98 auto_connect_handler_.reset(new AutoConnectHandler());
135 auto_connect_handler_->Init(client_cert_resolver_.get(), 99 auto_connect_handler_->Init(client_cert_resolver_.get(),
136 nullptr, // no connection handler 100 nullptr, // no connection handler
137 network_state_handler_.get(), 101 network_state_handler(),
138 managed_config_handler_.get()); 102 managed_config_handler_.get());
139 103
140 base::RunLoop().RunUntilIdle(); 104 base::RunLoop().RunUntilIdle();
141 } 105 }
142 106
143 void TearDown() override { 107 void TearDown() override {
144 network_state_handler_->Shutdown(); 108 ShutdownNetworkState();
145 auto_connect_handler_.reset(); 109 auto_connect_handler_.reset();
146 client_cert_resolver_.reset(); 110 client_cert_resolver_.reset();
147 managed_config_handler_.reset(); 111 managed_config_handler_.reset();
148 network_profile_handler_.reset(); 112 network_profile_handler_.reset();
149 network_config_handler_.reset(); 113 network_config_handler_.reset();
150 network_state_handler_.reset(); 114
115 LoginState::Shutdown();
116
117 NetworkStateTest::TearDown();
118
119 DBusThreadManager::Shutdown();
151 CertLoader::Shutdown(); 120 CertLoader::Shutdown();
152 LoginState::Shutdown();
153 DBusThreadManager::Shutdown();
154 } 121 }
155 122
156 protected: 123 protected:
157 bool Configure(const std::string& json_string) {
158 std::unique_ptr<base::DictionaryValue> json_dict =
159 onc::ReadDictionaryFromJson(json_string);
160 if (!json_dict) {
161 LOG(ERROR) << "Error parsing json: " << json_string;
162 return false;
163 }
164 DBusThreadManager::Get()->GetShillManagerClient()->ConfigureService(
165 *json_dict, base::Bind(&ConfigureCallback),
166 base::Bind(&FailErrorCallback));
167 base::RunLoop().RunUntilIdle();
168 return true;
169 }
170
171 std::string GetServiceState(const std::string& service_path) { 124 std::string GetServiceState(const std::string& service_path) {
172 const base::DictionaryValue* properties = 125 return GetServiceStringProperty(service_path, shill::kStateProperty);
173 test_service_client_->GetServiceProperties(service_path);
174 std::string result;
175 if (properties)
176 properties->GetStringWithoutPathExpansion(shill::kStateProperty, &result);
177 return result;
178 } 126 }
179 127
180 void StartCertLoader() { 128 void StartCertLoader() {
181 CertLoader::Get()->StartWithNSSDB(test_nsscertdb_.get()); 129 CertLoader::Get()->StartWithNSSDB(test_nsscertdb_.get());
182 base::RunLoop().RunUntilIdle(); 130 base::RunLoop().RunUntilIdle();
183 } 131 }
184 132
185 void LoginToRegularUser() { 133 void LoginToRegularUser() {
186 LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE, 134 LoginState::Get()->SetLoggedInState(LoginState::LOGGED_IN_ACTIVE,
187 LoginState::LOGGED_IN_USER_REGULAR); 135 LoginState::LOGGED_IN_USER_REGULAR);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } else { 184 } else {
237 managed_config_handler_->SetPolicy(::onc::ONC_SOURCE_DEVICE_POLICY, 185 managed_config_handler_->SetPolicy(::onc::ONC_SOURCE_DEVICE_POLICY,
238 std::string(), // no username hash 186 std::string(), // no username hash
239 *network_configs, global_config); 187 *network_configs, global_config);
240 } 188 }
241 base::RunLoop().RunUntilIdle(); 189 base::RunLoop().RunUntilIdle();
242 } 190 }
243 191
244 std::unique_ptr<AutoConnectHandler> auto_connect_handler_; 192 std::unique_ptr<AutoConnectHandler> auto_connect_handler_;
245 std::unique_ptr<ClientCertResolver> client_cert_resolver_; 193 std::unique_ptr<ClientCertResolver> client_cert_resolver_;
246 std::unique_ptr<NetworkStateHandler> network_state_handler_;
247 std::unique_ptr<NetworkConfigurationHandler> network_config_handler_; 194 std::unique_ptr<NetworkConfigurationHandler> network_config_handler_;
248 std::unique_ptr<ManagedNetworkConfigurationHandlerImpl> 195 std::unique_ptr<ManagedNetworkConfigurationHandlerImpl>
249 managed_config_handler_; 196 managed_config_handler_;
250 std::unique_ptr<NetworkProfileHandler> network_profile_handler_; 197 std::unique_ptr<NetworkProfileHandler> network_profile_handler_;
251 ShillManagerClient::TestInterface* test_manager_client_;
252 ShillServiceClient::TestInterface* test_service_client_;
253 crypto::ScopedTestNSSDB test_nssdb_; 198 crypto::ScopedTestNSSDB test_nssdb_;
254 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_; 199 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_;
255 base::MessageLoopForUI message_loop_; 200 base::MessageLoopForUI message_loop_;
256 201
257 private: 202 private:
258 base::test::ScopedTaskScheduler scoped_task_scheduler_; 203 base::test::ScopedTaskScheduler scoped_task_scheduler_;
259 204
260 DISALLOW_COPY_AND_ASSIGN(AutoConnectHandlerTest); 205 DISALLOW_COPY_AND_ASSIGN(AutoConnectHandlerTest);
261 }; 206 };
262 207
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 " \"Issuer\": {" 239 " \"Issuer\": {"
295 " \"CommonName\": \"B CA\"" 240 " \"CommonName\": \"B CA\""
296 " }" 241 " }"
297 " }" 242 " }"
298 " }" 243 " }"
299 " }" 244 " }"
300 "} ]"; 245 "} ]";
301 } // namespace 246 } // namespace
302 247
303 TEST_F(AutoConnectHandlerTest, ReconnectOnCertLoading) { 248 TEST_F(AutoConnectHandlerTest, ReconnectOnCertLoading) {
304 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 249 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
305 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 250 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
306 test_manager_client_->SetBestServiceToConnect("wifi1"); 251 test_manager_client()->SetBestServiceToConnect("wifi1");
307 252
308 // User login shouldn't trigger any change until the certificates and policy 253 // User login shouldn't trigger any change until the certificates and policy
309 // are loaded. 254 // are loaded.
310 LoginToRegularUser(); 255 LoginToRegularUser();
311 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 256 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
312 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 257 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
313 258
314 // Applying the policy which restricts autoconnect should disconnect from the 259 // Applying the policy which restricts autoconnect should disconnect from the
315 // shared, unmanaged network. 260 // shared, unmanaged network.
316 base::DictionaryValue global_config; 261 base::DictionaryValue global_config;
317 global_config.SetBooleanWithoutPathExpansion( 262 global_config.SetBooleanWithoutPathExpansion(
318 ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect, 263 ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect,
319 true); 264 true);
320 265
321 SetupPolicy(std::string(), // no network configs 266 SetupPolicy(std::string(), // no network configs
322 base::DictionaryValue(), // no global config 267 base::DictionaryValue(), // no global config
323 true); // load as user policy 268 true); // load as user policy
324 SetupPolicy(kPolicy, global_config, false /* load as device policy */); 269 SetupPolicy(kPolicy, global_config, false /* load as device policy */);
325 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 270 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
326 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 271 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
327 272
328 // Certificate loading should trigger connecting to the 'best' network. 273 // Certificate loading should trigger connecting to the 'best' network.
329 StartCertLoader(); 274 StartCertLoader();
330 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 275 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
331 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1")); 276 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1"));
332 } 277 }
333 278
334 TEST_F(AutoConnectHandlerTest, ReconnectOnCertPatternResolved) { 279 TEST_F(AutoConnectHandlerTest, ReconnectOnCertPatternResolved) {
335 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 280 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
336 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 281 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
337 test_manager_client_->SetBestServiceToConnect("wifi0"); 282 test_manager_client()->SetBestServiceToConnect("wifi0");
338 283
339 SetupPolicy(std::string(), // no device policy 284 SetupPolicy(std::string(), // no device policy
340 base::DictionaryValue(), // no global config 285 base::DictionaryValue(), // no global config
341 false); // load as device policy 286 false); // load as device policy
342 LoginToRegularUser(); 287 LoginToRegularUser();
343 StartCertLoader(); 288 StartCertLoader();
344 SetupPolicy(kPolicyCertPattern, 289 SetupPolicy(kPolicyCertPattern,
345 base::DictionaryValue(), // no global config 290 base::DictionaryValue(), // no global config
346 true); // load as user policy 291 true); // load as user policy
347 292
348 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 293 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
349 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 294 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
350 295
351 test_manager_client_->SetBestServiceToConnect("wifi1"); 296 test_manager_client()->SetBestServiceToConnect("wifi1");
352 TestCertResolveObserver observer(client_cert_resolver_.get()); 297 TestCertResolveObserver observer(client_cert_resolver_.get());
353 298
354 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); 299 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert();
355 ASSERT_TRUE(cert.get()); 300 ASSERT_TRUE(cert.get());
356 301
357 base::RunLoop().RunUntilIdle(); 302 base::RunLoop().RunUntilIdle();
358 EXPECT_TRUE(observer.DidNetworkPropertiesChange()); 303 EXPECT_TRUE(observer.DidNetworkPropertiesChange());
359 304
360 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 305 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
361 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1")); 306 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1"));
362 } 307 }
363 308
364 // Ensure that resolving of certificate patterns only triggers a reconnect if at 309 // Ensure that resolving of certificate patterns only triggers a reconnect if at
365 // least one pattern was resolved. 310 // least one pattern was resolved.
366 TEST_F(AutoConnectHandlerTest, NoReconnectIfNoCertResolved) { 311 TEST_F(AutoConnectHandlerTest, NoReconnectIfNoCertResolved) {
367 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 312 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
368 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 313 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
369 test_manager_client_->SetBestServiceToConnect("wifi0"); 314 test_manager_client()->SetBestServiceToConnect("wifi0");
370 315
371 SetupPolicy(std::string(), // no device policy 316 SetupPolicy(std::string(), // no device policy
372 base::DictionaryValue(), // no global config 317 base::DictionaryValue(), // no global config
373 false); // load as device policy 318 false); // load as device policy
374 LoginToRegularUser(); 319 LoginToRegularUser();
375 StartCertLoader(); 320 StartCertLoader();
376 SetupPolicy(kPolicy, 321 SetupPolicy(kPolicy,
377 base::DictionaryValue(), // no global config 322 base::DictionaryValue(), // no global config
378 true); // load as user policy 323 true); // load as user policy
379 324
380 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 325 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
381 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 326 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
382 327
383 test_manager_client_->SetBestServiceToConnect("wifi1"); 328 test_manager_client()->SetBestServiceToConnect("wifi1");
384 TestCertResolveObserver observer(client_cert_resolver_.get()); 329 TestCertResolveObserver observer(client_cert_resolver_.get());
385 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); 330 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert();
386 ASSERT_TRUE(cert.get()); 331 ASSERT_TRUE(cert.get());
387 332
388 base::RunLoop().RunUntilIdle(); 333 base::RunLoop().RunUntilIdle();
389 EXPECT_FALSE(observer.DidNetworkPropertiesChange()); 334 EXPECT_FALSE(observer.DidNetworkPropertiesChange());
390 335
391 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 336 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
392 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 337 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
393 } 338 }
394 339
395 TEST_F(AutoConnectHandlerTest, DisconnectOnPolicyLoading) { 340 TEST_F(AutoConnectHandlerTest, DisconnectOnPolicyLoading) {
396 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 341 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
397 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 342 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
398 343
399 // User login and certificate loading shouldn't trigger any change until the 344 // User login and certificate loading shouldn't trigger any change until the
400 // policy is loaded. 345 // policy is loaded.
401 LoginToRegularUser(); 346 LoginToRegularUser();
402 StartCertLoader(); 347 StartCertLoader();
403 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 348 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
404 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 349 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
405 350
406 base::DictionaryValue global_config; 351 base::DictionaryValue global_config;
407 global_config.SetBooleanWithoutPathExpansion( 352 global_config.SetBooleanWithoutPathExpansion(
(...skipping 10 matching lines...) Expand all
418 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 363 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
419 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 364 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
420 365
421 SetupPolicy(std::string(), base::DictionaryValue(), true); 366 SetupPolicy(std::string(), base::DictionaryValue(), true);
422 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 367 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
423 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 368 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
424 } 369 }
425 370
426 TEST_F(AutoConnectHandlerTest, 371 TEST_F(AutoConnectHandlerTest,
427 DisconnectOnPolicyLoadingAllowOnlyPolicyNetworksToConnect) { 372 DisconnectOnPolicyLoadingAllowOnlyPolicyNetworksToConnect) {
428 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 373 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
429 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 374 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
430 375
431 // User login and certificate loading shouldn't trigger any change until the 376 // User login and certificate loading shouldn't trigger any change until the
432 // policy is loaded. 377 // policy is loaded.
433 LoginToRegularUser(); 378 LoginToRegularUser();
434 StartCertLoader(); 379 StartCertLoader();
435 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 380 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
436 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 381 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
437 382
438 base::DictionaryValue global_config; 383 base::DictionaryValue global_config;
439 global_config.SetBooleanWithoutPathExpansion( 384 global_config.SetBooleanWithoutPathExpansion(
440 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true); 385 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true);
441 386
442 // Applying the policy which restricts autoconnect should disconnect from the 387 // Applying the policy which restricts autoconnect should disconnect from the
443 // shared, unmanaged network. 388 // shared, unmanaged network.
444 // Because no best service is set, the fake implementation of 389 // Because no best service is set, the fake implementation of
445 // ConnectToBestServices will be a no-op. 390 // ConnectToBestServices will be a no-op.
446 SetupPolicy(kPolicy, global_config, false /* load as device policy */); 391 SetupPolicy(kPolicy, global_config, false /* load as device policy */);
447 392
448 // Should not trigger any change until user policy is loaded 393 // Should not trigger any change until user policy is loaded
449 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 394 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
450 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 395 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
451 396
452 SetupPolicy(std::string(), base::DictionaryValue(), true); 397 SetupPolicy(std::string(), base::DictionaryValue(), true);
453 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 398 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
454 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 399 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
455 } 400 }
456 401
457 // After login a reconnect is triggered even if there is no managed network. 402 // After login a reconnect is triggered even if there is no managed network.
458 TEST_F(AutoConnectHandlerTest, ReconnectAfterLogin) { 403 TEST_F(AutoConnectHandlerTest, ReconnectAfterLogin) {
459 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 404 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
460 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 405 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
461 test_manager_client_->SetBestServiceToConnect("wifi1"); 406 test_manager_client()->SetBestServiceToConnect("wifi1");
462 407
463 // User login and certificate loading shouldn't trigger any change until the 408 // User login and certificate loading shouldn't trigger any change until the
464 // policy is loaded. 409 // policy is loaded.
465 LoginToRegularUser(); 410 LoginToRegularUser();
466 StartCertLoader(); 411 StartCertLoader();
467 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 412 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
468 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 413 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
469 414
470 // Applying an empty device policy will not trigger anything yet, until also 415 // Applying an empty device policy will not trigger anything yet, until also
471 // the user policy is applied. 416 // the user policy is applied.
472 SetupPolicy(std::string(), // no network configs 417 SetupPolicy(std::string(), // no network configs
473 base::DictionaryValue(), // no global config 418 base::DictionaryValue(), // no global config
474 false); // load as device policy 419 false); // load as device policy
475 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 420 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
476 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 421 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
477 422
478 // Applying also an empty user policy should trigger connecting to the 'best' 423 // Applying also an empty user policy should trigger connecting to the 'best'
479 // network. 424 // network.
480 SetupPolicy(std::string(), // no network configs 425 SetupPolicy(std::string(), // no network configs
481 base::DictionaryValue(), // no global config 426 base::DictionaryValue(), // no global config
482 true); // load as user policy 427 true); // load as user policy
483 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0")); 428 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi0"));
484 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1")); 429 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi1"));
485 } 430 }
486 431
487 TEST_F(AutoConnectHandlerTest, ManualConnectAbortsReconnectAfterLogin) { 432 TEST_F(AutoConnectHandlerTest, ManualConnectAbortsReconnectAfterLogin) {
488 EXPECT_TRUE(Configure(kConfigUnmanagedSharedConnected)); 433 EXPECT_TRUE(ConfigureService(kConfigUnmanagedSharedConnected));
489 EXPECT_TRUE(Configure(kConfigManagedSharedConnectable)); 434 EXPECT_TRUE(ConfigureService(kConfigManagedSharedConnectable));
490 test_manager_client_->SetBestServiceToConnect("wifi1"); 435 test_manager_client()->SetBestServiceToConnect("wifi1");
491 436
492 // User login and certificate loading shouldn't trigger any change until the 437 // User login and certificate loading shouldn't trigger any change until the
493 // policy is loaded. 438 // policy is loaded.
494 LoginToRegularUser(); 439 LoginToRegularUser();
495 StartCertLoader(); 440 StartCertLoader();
496 SetupPolicy(std::string(), // no network configs 441 SetupPolicy(std::string(), // no network configs
497 base::DictionaryValue(), // no global config 442 base::DictionaryValue(), // no global config
498 false); // load as device policy 443 false); // load as device policy
499 444
500 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 445 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
501 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 446 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
502 447
503 // A manual connect request should prevent a reconnect after login. 448 // A manual connect request should prevent a reconnect after login.
504 auto_connect_handler_->ConnectToNetworkRequested( 449 auto_connect_handler_->ConnectToNetworkRequested(
505 std::string() /* service_path */); 450 std::string() /* service_path */);
506 451
507 // Applying the user policy after login would usually trigger connecting to 452 // Applying the user policy after login would usually trigger connecting to
508 // the 'best' network. But the manual connect prevents this. 453 // the 'best' network. But the manual connect prevents this.
509 SetupPolicy(std::string(), // no network configs 454 SetupPolicy(std::string(), // no network configs
510 base::DictionaryValue(), // no global config 455 base::DictionaryValue(), // no global config
511 true); // load as user policy 456 true); // load as user policy
512 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0")); 457 EXPECT_EQ(shill::kStateOnline, GetServiceState("wifi0"));
513 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1")); 458 EXPECT_EQ(shill::kStateIdle, GetServiceState("wifi1"));
514 } 459 }
515 460
516 } // namespace chromeos 461 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/BUILD.gn ('k') | chromeos/network/network_connection_handler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698