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

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

Issue 2858943003: [CrOS Tether] Add disconnect handling to NetworkConnectionHandler::TetherDelegate. (Closed)
Patch Set: Rebased. Created 3 years, 7 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/network_connection_handler_impl.h" 5 #include "chromeos/network/network_connection_handler_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <set> 9 #include <set>
10 10
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 private: 81 private:
82 std::set<std::string> requests_; 82 std::set<std::string> requests_;
83 std::map<std::string, std::string> results_; 83 std::map<std::string, std::string> results_;
84 84
85 DISALLOW_COPY_AND_ASSIGN(TestNetworkConnectionObserver); 85 DISALLOW_COPY_AND_ASSIGN(TestNetworkConnectionObserver);
86 }; 86 };
87 87
88 class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate { 88 class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate {
89 public: 89 public:
90 FakeTetherDelegate() {} 90 FakeTetherDelegate()
91 : last_delegate_function_type_(DelegateFunctionType::NONE) {}
91 ~FakeTetherDelegate() override {} 92 ~FakeTetherDelegate() override {}
92 93
94 enum class DelegateFunctionType { NONE, CONNECT, DISCONNECT };
95
96 DelegateFunctionType last_delegate_function_type() {
97 return last_delegate_function_type_;
98 }
99
93 void ConnectToNetwork( 100 void ConnectToNetwork(
94 const std::string& service_path, 101 const std::string& service_path,
95 const base::Closure& success_callback, 102 const base::Closure& success_callback,
96 const network_handler::StringResultCallback& error_callback) override { 103 const network_handler::StringResultCallback& error_callback) override {
104 last_delegate_function_type_ = DelegateFunctionType::CONNECT;
97 last_service_path_ = service_path; 105 last_service_path_ = service_path;
98 last_success_callback_ = success_callback; 106 last_success_callback_ = success_callback;
99 last_error_callback_ = error_callback; 107 last_error_callback_ = error_callback;
108 }
109
110 void DisconnectFromNetwork(
111 const std::string& service_path,
112 const base::Closure& success_callback,
113 const network_handler::StringResultCallback& error_callback) override {
114 last_delegate_function_type_ = DelegateFunctionType::DISCONNECT;
115 last_service_path_ = service_path;
116 last_success_callback_ = success_callback;
117 last_error_callback_ = error_callback;
100 } 118 }
101 119
102 std::string& last_service_path() { return last_service_path_; } 120 std::string& last_service_path() { return last_service_path_; }
103 121
104 base::Closure& last_success_callback() { return last_success_callback_; } 122 base::Closure& last_success_callback() { return last_success_callback_; }
105 123
106 network_handler::StringResultCallback& last_error_callback() { 124 network_handler::StringResultCallback& last_error_callback() {
107 return last_error_callback_; 125 return last_error_callback_;
108 } 126 }
109 127
110 private: 128 private:
111 std::string last_service_path_; 129 std::string last_service_path_;
112 base::Closure last_success_callback_; 130 base::Closure last_success_callback_;
113 network_handler::StringResultCallback last_error_callback_; 131 network_handler::StringResultCallback last_error_callback_;
132 DelegateFunctionType last_delegate_function_type_;
114 }; 133 };
115 134
116 } // namespace 135 } // namespace
117 136
118 class NetworkConnectionHandlerTest : public NetworkStateTest { 137 class NetworkConnectionHandlerImplTest : public NetworkStateTest {
119 public: 138 public:
120 NetworkConnectionHandlerTest() : scoped_task_scheduler_(&message_loop_) {} 139 NetworkConnectionHandlerImplTest() : scoped_task_scheduler_(&message_loop_) {}
121 140
122 ~NetworkConnectionHandlerTest() override {} 141 ~NetworkConnectionHandlerImplTest() override {}
123 142
124 void SetUp() override { 143 void SetUp() override {
125 ASSERT_TRUE(test_nssdb_.is_open()); 144 ASSERT_TRUE(test_nssdb_.is_open());
126 145
127 // Use the same DB for public and private slot. 146 // Use the same DB for public and private slot.
128 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS( 147 test_nsscertdb_.reset(new net::NSSCertDatabaseChromeOS(
129 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())), 148 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())),
130 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot())))); 149 crypto::ScopedPK11Slot(PK11_ReferenceSlot(test_nssdb_.slot()))));
131 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner()); 150 test_nsscertdb_->SetSlowTaskRunnerForTest(message_loop_.task_runner());
132 151
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 203
185 DBusThreadManager::Shutdown(); 204 DBusThreadManager::Shutdown();
186 CertLoader::Shutdown(); 205 CertLoader::Shutdown();
187 } 206 }
188 207
189 protected: 208 protected:
190 void Connect(const std::string& service_path) { 209 void Connect(const std::string& service_path) {
191 const bool check_error_state = true; 210 const bool check_error_state = true;
192 network_connection_handler_->ConnectToNetwork( 211 network_connection_handler_->ConnectToNetwork(
193 service_path, 212 service_path,
194 base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, 213 base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback,
195 base::Unretained(this)), 214 base::Unretained(this)),
196 base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, 215 base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback,
197 base::Unretained(this)), 216 base::Unretained(this)),
198 check_error_state); 217 check_error_state);
199 base::RunLoop().RunUntilIdle(); 218 base::RunLoop().RunUntilIdle();
200 } 219 }
201 220
202 void Disconnect(const std::string& service_path) { 221 void Disconnect(const std::string& service_path) {
203 network_connection_handler_->DisconnectNetwork( 222 network_connection_handler_->DisconnectNetwork(
204 service_path, 223 service_path,
205 base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, 224 base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback,
206 base::Unretained(this)), 225 base::Unretained(this)),
207 base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, 226 base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback,
208 base::Unretained(this))); 227 base::Unretained(this)));
209 base::RunLoop().RunUntilIdle(); 228 base::RunLoop().RunUntilIdle();
210 } 229 }
211 230
212 void SuccessCallback() { result_ = kSuccessResult; } 231 void SuccessCallback() { result_ = kSuccessResult; }
213 232
214 void ErrorCallback(const std::string& error_name, 233 void ErrorCallback(const std::string& error_name,
215 std::unique_ptr<base::DictionaryValue> error_data) { 234 std::unique_ptr<base::DictionaryValue> error_data) {
216 result_ = error_name; 235 result_ = error_name;
217 } 236 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 std::unique_ptr<NetworkProfileHandler> network_profile_handler_; 309 std::unique_ptr<NetworkProfileHandler> network_profile_handler_;
291 crypto::ScopedTestNSSDB test_nssdb_; 310 crypto::ScopedTestNSSDB test_nssdb_;
292 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_; 311 std::unique_ptr<net::NSSCertDatabaseChromeOS> test_nsscertdb_;
293 base::MessageLoopForUI message_loop_; 312 base::MessageLoopForUI message_loop_;
294 std::string result_; 313 std::string result_;
295 std::unique_ptr<FakeTetherDelegate> fake_tether_delegate_; 314 std::unique_ptr<FakeTetherDelegate> fake_tether_delegate_;
296 315
297 private: 316 private:
298 base::test::ScopedTaskScheduler scoped_task_scheduler_; 317 base::test::ScopedTaskScheduler scoped_task_scheduler_;
299 318
300 DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerTest); 319 DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerImplTest);
301 }; 320 };
302 321
303 namespace { 322 namespace {
304 323
305 const char* kNoNetwork = "no-network"; 324 const char* kNoNetwork = "no-network";
306 const char* kWifi0 = "wifi0"; 325 const char* kWifi0 = "wifi0";
307 const char* kWifi1 = "wifi1"; 326 const char* kWifi1 = "wifi1";
308 const char* kWifi2 = "wifi2"; 327 const char* kWifi2 = "wifi2";
309 const char* kWifi3 = "wifi3"; 328 const char* kWifi3 = "wifi3";
310 329
311 const char* kConfigConnectable = 330 const char* kConfigConnectable =
312 "{ \"GUID\": \"wifi0\", \"Type\": \"wifi\", \"State\": \"idle\", " 331 "{ \"GUID\": \"wifi0\", \"Type\": \"wifi\", \"State\": \"idle\", "
313 " \"Connectable\": true }"; 332 " \"Connectable\": true }";
314 const char* kConfigConnected = 333 const char* kConfigConnected =
315 "{ \"GUID\": \"wifi1\", \"Type\": \"wifi\", \"State\": \"online\" }"; 334 "{ \"GUID\": \"wifi1\", \"Type\": \"wifi\", \"State\": \"online\" }";
316 const char* kConfigConnecting = 335 const char* kConfigConnecting =
317 "{ \"GUID\": \"wifi2\", \"Type\": \"wifi\", \"State\": \"association\" }"; 336 "{ \"GUID\": \"wifi2\", \"Type\": \"wifi\", \"State\": \"association\" }";
318 const char* kConfigRequiresPassphrase = 337 const char* kConfigRequiresPassphrase =
319 "{ \"GUID\": \"wifi3\", \"Type\": \"wifi\", " 338 "{ \"GUID\": \"wifi3\", \"Type\": \"wifi\", "
320 " \"PassphraseRequired\": true }"; 339 " \"PassphraseRequired\": true }";
321 340
322 const char* kPolicyWifi0 = 341 const char* kPolicyWifi0 =
323 "[{ \"GUID\": \"wifi0\", \"IPAddressConfigType\": \"DHCP\", " 342 "[{ \"GUID\": \"wifi0\", \"IPAddressConfigType\": \"DHCP\", "
324 " \"Type\": \"WiFi\", \"Name\": \"My WiFi Network\"," 343 " \"Type\": \"WiFi\", \"Name\": \"My WiFi Network\","
325 " \"WiFi\": { \"SSID\": \"wifi0\"}}]"; 344 " \"WiFi\": { \"SSID\": \"wifi0\"}}]";
326 345
327 } // namespace 346 } // namespace
328 347
329 TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectSuccess) { 348 TEST_F(NetworkConnectionHandlerImplTest,
349 NetworkConnectionHandlerConnectSuccess) {
330 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); 350 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty());
331 Connect(kWifi0); 351 Connect(kWifi0);
332 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 352 EXPECT_EQ(kSuccessResult, GetResultAndReset());
333 EXPECT_EQ(shill::kStateOnline, 353 EXPECT_EQ(shill::kStateOnline,
334 GetServiceStringProperty(kWifi0, shill::kStateProperty)); 354 GetServiceStringProperty(kWifi0, shill::kStateProperty));
335 // Observer expectations 355 // Observer expectations
336 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi0)); 356 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi0));
337 EXPECT_EQ(kSuccessResult, network_connection_observer_->GetResult(kWifi0)); 357 EXPECT_EQ(kSuccessResult, network_connection_observer_->GetResult(kWifi0));
338 } 358 }
339 359
340 TEST_F(NetworkConnectionHandlerTest, 360 TEST_F(NetworkConnectionHandlerImplTest,
341 NetworkConnectionHandlerConnectProhibited) { 361 NetworkConnectionHandlerConnectProhibited) {
342 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); 362 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty());
343 base::DictionaryValue global_config; 363 base::DictionaryValue global_config;
344 global_config.SetBooleanWithoutPathExpansion( 364 global_config.SetBooleanWithoutPathExpansion(
345 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true); 365 ::onc::global_network_config::kAllowOnlyPolicyNetworksToConnect, true);
346 SetupPolicy("[]", global_config, false /* load as device policy */); 366 SetupPolicy("[]", global_config, false /* load as device policy */);
347 LoginToRegularUser(); 367 LoginToRegularUser();
348 Connect(kWifi0); 368 Connect(kWifi0);
349 EXPECT_EQ(NetworkConnectionHandler::kErrorUnmanagedNetwork, 369 EXPECT_EQ(NetworkConnectionHandler::kErrorUnmanagedNetwork,
350 GetResultAndReset()); 370 GetResultAndReset());
351 371
352 SetupPolicy(kPolicyWifi0, global_config, false /* load as device policy */); 372 SetupPolicy(kPolicyWifi0, global_config, false /* load as device policy */);
353 Connect(kWifi0); 373 Connect(kWifi0);
354 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 374 EXPECT_EQ(kSuccessResult, GetResultAndReset());
355 } 375 }
356 376
357 // Handles basic failure cases. 377 // Handles basic failure cases.
358 TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectFailure) { 378 TEST_F(NetworkConnectionHandlerImplTest,
379 NetworkConnectionHandlerConnectFailure) {
359 Connect(kNoNetwork); 380 Connect(kNoNetwork);
360 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, 381 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed,
361 GetResultAndReset()); 382 GetResultAndReset());
362 EXPECT_TRUE(network_connection_observer_->GetRequested(kNoNetwork)); 383 EXPECT_TRUE(network_connection_observer_->GetRequested(kNoNetwork));
363 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, 384 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed,
364 network_connection_observer_->GetResult(kNoNetwork)); 385 network_connection_observer_->GetResult(kNoNetwork));
365 386
366 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); 387 EXPECT_FALSE(ConfigureService(kConfigConnected).empty());
367 Connect(kWifi1); 388 Connect(kWifi1);
368 EXPECT_EQ(NetworkConnectionHandler::kErrorConnected, GetResultAndReset()); 389 EXPECT_EQ(NetworkConnectionHandler::kErrorConnected, GetResultAndReset());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 " \"CommonName\" : \"%s\"" 424 " \"CommonName\" : \"%s\""
404 " }" 425 " }"
405 " }" 426 " }"
406 " }" 427 " }"
407 " }" 428 " }"
408 "} ]"; 429 "} ]";
409 430
410 } // namespace 431 } // namespace
411 432
412 // Handle certificates. 433 // Handle certificates.
413 TEST_F(NetworkConnectionHandlerTest, ConnectCertificateMissing) { 434 TEST_F(NetworkConnectionHandlerImplTest, ConnectCertificateMissing) {
414 StartCertLoader(); 435 StartCertLoader();
415 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"), 436 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"),
416 base::DictionaryValue(), // no global config 437 base::DictionaryValue(), // no global config
417 true); // load as user policy 438 true); // load as user policy
418 439
419 Connect("wifi4"); 440 Connect("wifi4");
420 EXPECT_EQ(NetworkConnectionHandler::kErrorCertificateRequired, 441 EXPECT_EQ(NetworkConnectionHandler::kErrorCertificateRequired,
421 GetResultAndReset()); 442 GetResultAndReset());
422 } 443 }
423 444
424 TEST_F(NetworkConnectionHandlerTest, ConnectWithCertificateSuccess) { 445 TEST_F(NetworkConnectionHandlerImplTest, ConnectWithCertificateSuccess) {
425 StartCertLoader(); 446 StartCertLoader();
426 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); 447 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert();
427 ASSERT_TRUE(cert.get()); 448 ASSERT_TRUE(cert.get());
428 449
429 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, 450 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate,
430 cert->subject().common_name.c_str()), 451 cert->subject().common_name.c_str()),
431 base::DictionaryValue(), // no global config 452 base::DictionaryValue(), // no global config
432 true); // load as user policy 453 true); // load as user policy
433 454
434 Connect("wifi4"); 455 Connect("wifi4");
435 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 456 EXPECT_EQ(kSuccessResult, GetResultAndReset());
436 } 457 }
437 458
438 // Disabled, see http://crbug.com/396729. 459 // Disabled, see http://crbug.com/396729.
439 TEST_F(NetworkConnectionHandlerTest, 460 TEST_F(NetworkConnectionHandlerImplTest,
440 DISABLED_ConnectWithCertificateRequestedBeforeCertsAreLoaded) { 461 DISABLED_ConnectWithCertificateRequestedBeforeCertsAreLoaded) {
441 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); 462 scoped_refptr<net::X509Certificate> cert = ImportTestClientCert();
442 ASSERT_TRUE(cert.get()); 463 ASSERT_TRUE(cert.get());
443 464
444 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, 465 SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate,
445 cert->subject().common_name.c_str()), 466 cert->subject().common_name.c_str()),
446 base::DictionaryValue(), // no global config 467 base::DictionaryValue(), // no global config
447 true); // load as user policy 468 true); // load as user policy
448 469
449 Connect("wifi4"); 470 Connect("wifi4");
450 471
451 // Connect request came before the cert loader loaded certificates, so the 472 // Connect request came before the cert loader loaded certificates, so the
452 // connect request should have been throttled until the certificates are 473 // connect request should have been throttled until the certificates are
453 // loaded. 474 // loaded.
454 EXPECT_EQ("", GetResultAndReset()); 475 EXPECT_EQ("", GetResultAndReset());
455 476
456 StartCertLoader(); 477 StartCertLoader();
457 478
458 // |StartCertLoader| should have triggered certificate loading. 479 // |StartCertLoader| should have triggered certificate loading.
459 // When the certificates got loaded, the connection request should have 480 // When the certificates got loaded, the connection request should have
460 // proceeded and eventually succeeded. 481 // proceeded and eventually succeeded.
461 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 482 EXPECT_EQ(kSuccessResult, GetResultAndReset());
462 } 483 }
463 484
464 TEST_F(NetworkConnectionHandlerTest, 485 TEST_F(NetworkConnectionHandlerImplTest,
465 NetworkConnectionHandlerDisconnectSuccess) { 486 NetworkConnectionHandlerDisconnectSuccess) {
466 EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); 487 EXPECT_FALSE(ConfigureService(kConfigConnected).empty());
467 Disconnect(kWifi1); 488 Disconnect(kWifi1);
468 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi1)); 489 EXPECT_TRUE(network_connection_observer_->GetRequested(kWifi1));
469 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 490 EXPECT_EQ(kSuccessResult, GetResultAndReset());
470 } 491 }
471 492
472 TEST_F(NetworkConnectionHandlerTest, 493 TEST_F(NetworkConnectionHandlerImplTest,
473 NetworkConnectionHandlerDisconnectFailure) { 494 NetworkConnectionHandlerDisconnectFailure) {
474 Connect(kNoNetwork); 495 Connect(kNoNetwork);
475 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, 496 EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed,
476 GetResultAndReset()); 497 GetResultAndReset());
477 498
478 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); 499 EXPECT_FALSE(ConfigureService(kConfigConnectable).empty());
479 Disconnect(kWifi0); 500 Disconnect(kWifi0);
480 EXPECT_EQ(NetworkConnectionHandler::kErrorNotConnected, GetResultAndReset()); 501 EXPECT_EQ(NetworkConnectionHandler::kErrorNotConnected, GetResultAndReset());
481 } 502 }
482 503
483 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Success) { 504 TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Success) {
484 network_state_handler()->SetTetherTechnologyState( 505 network_state_handler()->SetTetherTechnologyState(
485 NetworkStateHandler::TECHNOLOGY_ENABLED); 506 NetworkStateHandler::TECHNOLOGY_ENABLED);
486 network_state_handler()->AddTetherNetworkState( 507 network_state_handler()->AddTetherNetworkState(
487 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, 508 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
488 100 /* signal_strength */, true /* has_connected_to_host */); 509 100 /* signal_strength */, true /* has_connected_to_host */);
489 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); 510 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get());
490 511
491 Connect(kTetherGuid /* service_path */); 512 Connect(kTetherGuid /* service_path */);
492 513
514 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT,
515 fake_tether_delegate_->last_delegate_function_type());
493 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); 516 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path());
494 fake_tether_delegate_->last_success_callback().Run(); 517 fake_tether_delegate_->last_success_callback().Run();
495 EXPECT_EQ(kSuccessResult, GetResultAndReset()); 518 EXPECT_EQ(kSuccessResult, GetResultAndReset());
496 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); 519 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
497 EXPECT_EQ(kSuccessResult, 520 EXPECT_EQ(kSuccessResult,
498 network_connection_observer_->GetResult(kTetherGuid)); 521 network_connection_observer_->GetResult(kTetherGuid));
499 } 522 }
500 523
501 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Failure) { 524 TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Failure) {
502 network_state_handler()->SetTetherTechnologyState( 525 network_state_handler()->SetTetherTechnologyState(
503 NetworkStateHandler::TECHNOLOGY_ENABLED); 526 NetworkStateHandler::TECHNOLOGY_ENABLED);
504 network_state_handler()->AddTetherNetworkState( 527 network_state_handler()->AddTetherNetworkState(
505 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, 528 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
506 100 /* signal_strength */, true /* has_connected_to_host */); 529 100 /* signal_strength */, true /* has_connected_to_host */);
507 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); 530 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get());
508 531
509 Connect(kTetherGuid /* service_path */); 532 Connect(kTetherGuid /* service_path */);
510 533
534 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT,
535 fake_tether_delegate_->last_delegate_function_type());
511 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); 536 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path());
512 fake_tether_delegate_->last_error_callback().Run( 537 fake_tether_delegate_->last_error_callback().Run(
513 NetworkConnectionHandler::kErrorConnectFailed); 538 NetworkConnectionHandler::kErrorConnectFailed);
514 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset()); 539 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset());
515 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); 540 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
516 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, 541 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed,
517 network_connection_observer_->GetResult(kTetherGuid)); 542 network_connection_observer_->GetResult(kTetherGuid));
518 } 543 }
519 544
520 TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_NoTetherDelegate) { 545 TEST_F(NetworkConnectionHandlerImplTest,
546 ConnectToTetherNetwork_NoTetherDelegate) {
521 network_state_handler()->SetTetherTechnologyState( 547 network_state_handler()->SetTetherTechnologyState(
522 NetworkStateHandler::TECHNOLOGY_ENABLED); 548 NetworkStateHandler::TECHNOLOGY_ENABLED);
523 network_state_handler()->AddTetherNetworkState( 549 network_state_handler()->AddTetherNetworkState(
524 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, 550 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
525 100 /* signal_strength */, true /* has_connected_to_host */); 551 100 /* signal_strength */, true /* has_connected_to_host */);
526 552
527 // Do not set a tether delegate. 553 // Do not set a tether delegate.
528 554
529 Connect(kTetherGuid /* service_path */); 555 Connect(kTetherGuid /* service_path */);
530 556
531 EXPECT_EQ( 557 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE,
532 NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, 558 fake_tether_delegate_->last_delegate_function_type());
533 GetResultAndReset()); 559 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate,
560 GetResultAndReset());
534 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); 561 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
535 EXPECT_EQ( 562 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate,
536 NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, 563 network_connection_observer_->GetResult(kTetherGuid));
537 network_connection_observer_->GetResult(kTetherGuid)); 564 }
565
566 TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Success) {
567 network_state_handler()->SetTetherTechnologyState(
568 NetworkStateHandler::TECHNOLOGY_ENABLED);
569 network_state_handler()->AddTetherNetworkState(
570 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
571 100 /* signal_strength */, true /* has_connected_to_host */);
572 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid);
573 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get());
574
575 Disconnect(kTetherGuid /* service_path */);
576
577 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT,
578 fake_tether_delegate_->last_delegate_function_type());
579 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path());
580 fake_tether_delegate_->last_success_callback().Run();
581 EXPECT_EQ(kSuccessResult, GetResultAndReset());
582 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
583 EXPECT_EQ(kSuccessResult,
584 network_connection_observer_->GetResult(kTetherGuid));
585 }
586
587 TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Failure) {
588 network_state_handler()->SetTetherTechnologyState(
589 NetworkStateHandler::TECHNOLOGY_ENABLED);
590 network_state_handler()->AddTetherNetworkState(
591 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
592 100 /* signal_strength */, true /* has_connected_to_host */);
593 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid);
594 network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get());
595
596 Disconnect(kTetherGuid /* service_path */);
597
598 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT,
599 fake_tether_delegate_->last_delegate_function_type());
600 EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path());
601 fake_tether_delegate_->last_error_callback().Run(
602 NetworkConnectionHandler::kErrorConnectFailed);
603 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset());
604 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
605 EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed,
606 network_connection_observer_->GetResult(kTetherGuid));
607 }
608
609 TEST_F(NetworkConnectionHandlerImplTest,
610 DisconnectFromTetherNetwork_NoTetherDelegate) {
611 network_state_handler()->SetTetherTechnologyState(
612 NetworkStateHandler::TECHNOLOGY_ENABLED);
613 network_state_handler()->AddTetherNetworkState(
614 kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */,
615 100 /* signal_strength */, true /* has_connected_to_host */);
616 network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid);
617
618 // Do not set a tether delegate.
619
620 Disconnect(kTetherGuid /* service_path */);
621
622 EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE,
623 fake_tether_delegate_->last_delegate_function_type());
624 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate,
625 GetResultAndReset());
626 EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid));
627 EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate,
628 network_connection_observer_->GetResult(kTetherGuid));
538 } 629 }
539 630
540 } // namespace chromeos 631 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/network/network_connection_handler_impl.cc ('k') | chromeos/network/network_profile_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698