| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |