Index: chromeos/network/network_connection_handler_impl_unittest.cc |
diff --git a/chromeos/network/network_connection_handler_impl_unittest.cc b/chromeos/network/network_connection_handler_impl_unittest.cc |
index 6a1e951c857b7e859e705de1266df6e0d6147f4e..909b58b8c611a1e950fa693bc15689e08dc90895 100644 |
--- a/chromeos/network/network_connection_handler_impl_unittest.cc |
+++ b/chromeos/network/network_connection_handler_impl_unittest.cc |
@@ -87,13 +87,31 @@ class TestNetworkConnectionObserver : public NetworkConnectionObserver { |
class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate { |
public: |
- FakeTetherDelegate() {} |
+ FakeTetherDelegate() |
+ : last_delegate_function_type_(DelegateFunctionType::NONE) {} |
~FakeTetherDelegate() override {} |
+ enum class DelegateFunctionType { NONE, CONNECT, DISCONNECT }; |
+ |
+ DelegateFunctionType last_delegate_function_type() { |
+ return last_delegate_function_type_; |
+ } |
+ |
void ConnectToNetwork( |
const std::string& service_path, |
const base::Closure& success_callback, |
const network_handler::StringResultCallback& error_callback) override { |
+ last_delegate_function_type_ = DelegateFunctionType::CONNECT; |
+ last_service_path_ = service_path; |
+ last_success_callback_ = success_callback; |
+ last_error_callback_ = error_callback; |
+ } |
+ |
+ void DisconnectFromNetwork( |
+ const std::string& service_path, |
+ const base::Closure& success_callback, |
+ const network_handler::StringResultCallback& error_callback) override { |
+ last_delegate_function_type_ = DelegateFunctionType::DISCONNECT; |
last_service_path_ = service_path; |
last_success_callback_ = success_callback; |
last_error_callback_ = error_callback; |
@@ -111,15 +129,16 @@ class FakeTetherDelegate : public NetworkConnectionHandler::TetherDelegate { |
std::string last_service_path_; |
base::Closure last_success_callback_; |
network_handler::StringResultCallback last_error_callback_; |
+ DelegateFunctionType last_delegate_function_type_; |
}; |
} // namespace |
-class NetworkConnectionHandlerTest : public NetworkStateTest { |
+class NetworkConnectionHandlerImplTest : public NetworkStateTest { |
public: |
- NetworkConnectionHandlerTest() : scoped_task_scheduler_(&message_loop_) {} |
+ NetworkConnectionHandlerImplTest() : scoped_task_scheduler_(&message_loop_) {} |
- ~NetworkConnectionHandlerTest() override {} |
+ ~NetworkConnectionHandlerImplTest() override {} |
void SetUp() override { |
ASSERT_TRUE(test_nssdb_.is_open()); |
@@ -191,9 +210,9 @@ class NetworkConnectionHandlerTest : public NetworkStateTest { |
const bool check_error_state = true; |
network_connection_handler_->ConnectToNetwork( |
service_path, |
- base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, |
+ base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback, |
base::Unretained(this)), |
- base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, |
+ base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback, |
base::Unretained(this)), |
check_error_state); |
base::RunLoop().RunUntilIdle(); |
@@ -202,9 +221,9 @@ class NetworkConnectionHandlerTest : public NetworkStateTest { |
void Disconnect(const std::string& service_path) { |
network_connection_handler_->DisconnectNetwork( |
service_path, |
- base::Bind(&NetworkConnectionHandlerTest::SuccessCallback, |
+ base::Bind(&NetworkConnectionHandlerImplTest::SuccessCallback, |
base::Unretained(this)), |
- base::Bind(&NetworkConnectionHandlerTest::ErrorCallback, |
+ base::Bind(&NetworkConnectionHandlerImplTest::ErrorCallback, |
base::Unretained(this))); |
base::RunLoop().RunUntilIdle(); |
} |
@@ -297,7 +316,7 @@ class NetworkConnectionHandlerTest : public NetworkStateTest { |
private: |
base::test::ScopedTaskScheduler scoped_task_scheduler_; |
- DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerTest); |
+ DISALLOW_COPY_AND_ASSIGN(NetworkConnectionHandlerImplTest); |
}; |
namespace { |
@@ -326,7 +345,8 @@ const char* kPolicyWifi0 = |
} // namespace |
-TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectSuccess) { |
+TEST_F(NetworkConnectionHandlerImplTest, |
+ NetworkConnectionHandlerConnectSuccess) { |
EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); |
Connect(kWifi0); |
EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
@@ -337,7 +357,7 @@ TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectSuccess) { |
EXPECT_EQ(kSuccessResult, network_connection_observer_->GetResult(kWifi0)); |
} |
-TEST_F(NetworkConnectionHandlerTest, |
+TEST_F(NetworkConnectionHandlerImplTest, |
NetworkConnectionHandlerConnectProhibited) { |
EXPECT_FALSE(ConfigureService(kConfigConnectable).empty()); |
base::DictionaryValue global_config; |
@@ -355,7 +375,8 @@ TEST_F(NetworkConnectionHandlerTest, |
} |
// Handles basic failure cases. |
-TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectFailure) { |
+TEST_F(NetworkConnectionHandlerImplTest, |
+ NetworkConnectionHandlerConnectFailure) { |
Connect(kNoNetwork); |
EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, |
GetResultAndReset()); |
@@ -410,7 +431,7 @@ const char* kPolicyWithCertPatternTemplate = |
} // namespace |
// Handle certificates. |
-TEST_F(NetworkConnectionHandlerTest, ConnectCertificateMissing) { |
+TEST_F(NetworkConnectionHandlerImplTest, ConnectCertificateMissing) { |
StartCertLoader(); |
SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"), |
base::DictionaryValue(), // no global config |
@@ -421,7 +442,7 @@ TEST_F(NetworkConnectionHandlerTest, ConnectCertificateMissing) { |
GetResultAndReset()); |
} |
-TEST_F(NetworkConnectionHandlerTest, ConnectWithCertificateSuccess) { |
+TEST_F(NetworkConnectionHandlerImplTest, ConnectWithCertificateSuccess) { |
StartCertLoader(); |
scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); |
ASSERT_TRUE(cert.get()); |
@@ -436,7 +457,7 @@ TEST_F(NetworkConnectionHandlerTest, ConnectWithCertificateSuccess) { |
} |
// Disabled, see http://crbug.com/396729. |
-TEST_F(NetworkConnectionHandlerTest, |
+TEST_F(NetworkConnectionHandlerImplTest, |
DISABLED_ConnectWithCertificateRequestedBeforeCertsAreLoaded) { |
scoped_refptr<net::X509Certificate> cert = ImportTestClientCert(); |
ASSERT_TRUE(cert.get()); |
@@ -461,7 +482,7 @@ TEST_F(NetworkConnectionHandlerTest, |
EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
} |
-TEST_F(NetworkConnectionHandlerTest, |
+TEST_F(NetworkConnectionHandlerImplTest, |
NetworkConnectionHandlerDisconnectSuccess) { |
EXPECT_FALSE(ConfigureService(kConfigConnected).empty()); |
Disconnect(kWifi1); |
@@ -469,7 +490,7 @@ TEST_F(NetworkConnectionHandlerTest, |
EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
} |
-TEST_F(NetworkConnectionHandlerTest, |
+TEST_F(NetworkConnectionHandlerImplTest, |
NetworkConnectionHandlerDisconnectFailure) { |
Connect(kNoNetwork); |
EXPECT_EQ(NetworkConnectionHandler::kErrorConfigureFailed, |
@@ -480,7 +501,7 @@ TEST_F(NetworkConnectionHandlerTest, |
EXPECT_EQ(NetworkConnectionHandler::kErrorNotConnected, GetResultAndReset()); |
} |
-TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Success) { |
+TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Success) { |
network_state_handler()->SetTetherTechnologyState( |
NetworkStateHandler::TECHNOLOGY_ENABLED); |
network_state_handler()->AddTetherNetworkState( |
@@ -490,6 +511,8 @@ TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Success) { |
Connect(kTetherGuid /* service_path */); |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT, |
+ fake_tether_delegate_->last_delegate_function_type()); |
EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
fake_tether_delegate_->last_success_callback().Run(); |
EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
@@ -498,7 +521,7 @@ TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Success) { |
network_connection_observer_->GetResult(kTetherGuid)); |
} |
-TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Failure) { |
+TEST_F(NetworkConnectionHandlerImplTest, ConnectToTetherNetwork_Failure) { |
network_state_handler()->SetTetherTechnologyState( |
NetworkStateHandler::TECHNOLOGY_ENABLED); |
network_state_handler()->AddTetherNetworkState( |
@@ -508,6 +531,8 @@ TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Failure) { |
Connect(kTetherGuid /* service_path */); |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::CONNECT, |
+ fake_tether_delegate_->last_delegate_function_type()); |
EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
fake_tether_delegate_->last_error_callback().Run( |
NetworkConnectionHandler::kErrorConnectFailed); |
@@ -517,7 +542,8 @@ TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_Failure) { |
network_connection_observer_->GetResult(kTetherGuid)); |
} |
-TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_NoTetherDelegate) { |
+TEST_F(NetworkConnectionHandlerImplTest, |
+ ConnectToTetherNetwork_NoTetherDelegate) { |
network_state_handler()->SetTetherTechnologyState( |
NetworkStateHandler::TECHNOLOGY_ENABLED); |
network_state_handler()->AddTetherNetworkState( |
@@ -528,13 +554,78 @@ TEST_F(NetworkConnectionHandlerTest, ConnectToTetherNetwork_NoTetherDelegate) { |
Connect(kTetherGuid /* service_path */); |
- EXPECT_EQ( |
- NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, |
- GetResultAndReset()); |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE, |
+ fake_tether_delegate_->last_delegate_function_type()); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
+ GetResultAndReset()); |
+ EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
+ network_connection_observer_->GetResult(kTetherGuid)); |
+} |
+ |
+TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Success) { |
+ network_state_handler()->SetTetherTechnologyState( |
+ NetworkStateHandler::TECHNOLOGY_ENABLED); |
+ network_state_handler()->AddTetherNetworkState( |
+ kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
+ 100 /* signal_strength */, true /* has_connected_to_host */); |
+ network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
+ network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
+ |
+ Disconnect(kTetherGuid /* service_path */); |
+ |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT, |
+ fake_tether_delegate_->last_delegate_function_type()); |
+ EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
+ fake_tether_delegate_->last_success_callback().Run(); |
+ EXPECT_EQ(kSuccessResult, GetResultAndReset()); |
+ EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
+ EXPECT_EQ(kSuccessResult, |
+ network_connection_observer_->GetResult(kTetherGuid)); |
+} |
+ |
+TEST_F(NetworkConnectionHandlerImplTest, DisconnectFromTetherNetwork_Failure) { |
+ network_state_handler()->SetTetherTechnologyState( |
+ NetworkStateHandler::TECHNOLOGY_ENABLED); |
+ network_state_handler()->AddTetherNetworkState( |
+ kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
+ 100 /* signal_strength */, true /* has_connected_to_host */); |
+ network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
+ network_connection_handler_->SetTetherDelegate(fake_tether_delegate_.get()); |
+ |
+ Disconnect(kTetherGuid /* service_path */); |
+ |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::DISCONNECT, |
+ fake_tether_delegate_->last_delegate_function_type()); |
+ EXPECT_EQ(kTetherGuid, fake_tether_delegate_->last_service_path()); |
+ fake_tether_delegate_->last_error_callback().Run( |
+ NetworkConnectionHandler::kErrorConnectFailed); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset()); |
+ EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, |
+ network_connection_observer_->GetResult(kTetherGuid)); |
+} |
+ |
+TEST_F(NetworkConnectionHandlerImplTest, |
+ DisconnectFromTetherNetwork_NoTetherDelegate) { |
+ network_state_handler()->SetTetherTechnologyState( |
+ NetworkStateHandler::TECHNOLOGY_ENABLED); |
+ network_state_handler()->AddTetherNetworkState( |
+ kTetherGuid, "TetherNetwork", "Carrier", 100 /* battery_percentage */, |
+ 100 /* signal_strength */, true /* has_connected_to_host */); |
+ network_state_handler()->SetTetherNetworkStateConnecting(kTetherGuid); |
+ |
+ // Do not set a tether delegate. |
+ |
+ Disconnect(kTetherGuid /* service_path */); |
+ |
+ EXPECT_EQ(FakeTetherDelegate::DelegateFunctionType::NONE, |
+ fake_tether_delegate_->last_delegate_function_type()); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
+ GetResultAndReset()); |
EXPECT_TRUE(network_connection_observer_->GetRequested(kTetherGuid)); |
- EXPECT_EQ( |
- NetworkConnectionHandler::kErrorTetherConnectionAttemptWithNoDelegate, |
- network_connection_observer_->GetResult(kTetherGuid)); |
+ EXPECT_EQ(NetworkConnectionHandler::kErrorTetherAttemptWithNoDelegate, |
+ network_connection_observer_->GetResult(kTetherGuid)); |
} |
} // namespace chromeos |