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

Unified Diff: chromeos/components/tether/tether_connector_unittest.cc

Issue 2857853005: [CrOS Tether] Create TetherDisconnector, which disconnects from active tethering sessions. (Closed)
Patch Set: hansberry@ comment. 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 side-by-side diff with in-line comments
Download patch
Index: chromeos/components/tether/tether_connector_unittest.cc
diff --git a/chromeos/components/tether/tether_connector_unittest.cc b/chromeos/components/tether/tether_connector_unittest.cc
index 3187ddbcdc5204d9ee8d1d0529ca8a48c10710d1..82d776bc2f9f072548b5d9b465c88efd2768edce 100644
--- a/chromeos/components/tether/tether_connector_unittest.cc
+++ b/chromeos/components/tether/tether_connector_unittest.cc
@@ -48,42 +48,6 @@ std::string CreateWifiConfigurationJsonString() {
return ss.str();
}
-class TestNetworkConnectionHandler : public NetworkConnectionHandler {
- public:
- TestNetworkConnectionHandler() : NetworkConnectionHandler() {}
- ~TestNetworkConnectionHandler() override {}
-
- void CallTetherDelegate(
- const std::string& tether_network_guid,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback) {
- InitiateTetherNetworkConnection(tether_network_guid, success_callback,
- error_callback);
- }
-
- // NetworkConnectionHandler:
- void ConnectToNetwork(const std::string& service_path,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback,
- bool check_error_state) override {}
-
- void DisconnectNetwork(
- const std::string& service_path,
- const base::Closure& success_callback,
- const network_handler::ErrorCallback& error_callback) override {}
-
- bool HasConnectingNetwork(const std::string& service_path) override {
- return false;
- }
-
- bool HasPendingConnectRequest() override { return false; }
-
- void Init(NetworkStateHandler* network_state_handler,
- NetworkConfigurationHandler* network_configuration_handler,
- ManagedNetworkConfigurationHandler*
- managed_network_configuration_handler) override {}
-};
-
class FakeConnectTetheringOperation : public ConnectTetheringOperation {
public:
FakeConnectTetheringOperation(
@@ -157,8 +121,6 @@ class TetherConnectorTest : public NetworkStateTest {
ConnectTetheringOperation::Factory::SetInstanceForTesting(
fake_operation_factory_.get());
- test_network_connection_handler_ =
- base::WrapUnique(new TestNetworkConnectionHandler());
fake_wifi_hotspot_connector_ =
base::MakeUnique<FakeWifiHotspotConnector>(network_state_handler());
fake_active_host_ = base::MakeUnique<FakeActiveHost>();
@@ -173,9 +135,9 @@ class TetherConnectorTest : public NetworkStateTest {
result_.clear();
tether_connector_ = base::WrapUnique(new TetherConnector(
- test_network_connection_handler_.get(), network_state_handler(),
- fake_wifi_hotspot_connector_.get(), fake_active_host_.get(),
- fake_tether_host_fetcher_.get(), fake_ble_connection_manager_.get(),
+ network_state_handler(), fake_wifi_hotspot_connector_.get(),
+ fake_active_host_.get(), fake_tether_host_fetcher_.get(),
+ fake_ble_connection_manager_.get(),
mock_tether_host_response_recorder_.get(),
device_id_tether_network_guid_map_.get()));
@@ -200,8 +162,8 @@ class TetherConnectorTest : public NetworkStateTest {
void SetUpTetherNetworks() {
// Add a tether network corresponding to both of the test devices. These
- // networks are expected to be added already before TetherConnector receives
- // its ConnectToNetwork() callback.
+ // networks are expected to be added already before
+ // TetherConnector::ConnectToNetwork is called.
network_state_handler()->AddTetherNetworkState(
GetTetherNetworkGuid(test_devices_[0].GetDeviceId()),
"TetherNetworkName1", "TetherNetworkCarrier1",
@@ -234,13 +196,10 @@ class TetherConnectorTest : public NetworkStateTest {
void SuccessCallback() { result_ = kSuccessResult; }
- void ErrorCallback(const std::string& error_name,
- std::unique_ptr<base::DictionaryValue> error_data) {
- result_ = error_name;
- }
+ void ErrorCallback(const std::string& error_name) { result_ = error_name; }
- void CallTetherDelegate(const std::string& tether_network_guid) {
- test_network_connection_handler_->CallTetherDelegate(
+ void CallConnect(const std::string& tether_network_guid) {
+ tether_connector_->ConnectToNetwork(
tether_network_guid,
base::Bind(&TetherConnectorTest::SuccessCallback,
base::Unretained(this)),
@@ -258,8 +217,6 @@ class TetherConnectorTest : public NetworkStateTest {
const base::MessageLoop message_loop_;
std::unique_ptr<FakeConnectTetheringOperationFactory> fake_operation_factory_;
- std::unique_ptr<TestNetworkConnectionHandler>
- test_network_connection_handler_;
std::unique_ptr<FakeWifiHotspotConnector> fake_wifi_hotspot_connector_;
std::unique_ptr<FakeActiveHost> fake_active_host_;
std::unique_ptr<FakeTetherHostFetcher> fake_tether_host_fetcher_;
@@ -282,7 +239,7 @@ TEST_F(TetherConnectorTest, TestCannotFetchDevice) {
// Base64-encoded version of "nonexistentDeviceId".
const char kNonexistentDeviceId[] = "bm9uZXhpc3RlbnREZXZpY2VJZA==";
- CallTetherDelegate(GetTetherNetworkGuid(kNonexistentDeviceId));
+ CallConnect(GetTetherNetworkGuid(kNonexistentDeviceId));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(kNonexistentDeviceId, fake_active_host_->GetActiveHostDeviceId());
@@ -299,8 +256,32 @@ TEST_F(TetherConnectorTest, TestCannotFetchDevice) {
EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset());
}
+TEST_F(TetherConnectorTest, TestCancelWhileOperationActive) {
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
+ fake_active_host_->GetActiveHostStatus());
+ EXPECT_EQ(test_devices_[0].GetDeviceId(),
+ fake_active_host_->GetActiveHostDeviceId());
+ EXPECT_EQ(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()),
+ fake_active_host_->GetTetherNetworkGuid());
+ EXPECT_TRUE(fake_active_host_->GetWifiNetworkGuid().empty());
+
+ fake_tether_host_fetcher_->InvokePendingCallbacks();
+
+ // Simulate a failed connection attempt (either the host cannot provide
+ // tethering at this time or a timeout occurs).
+ EXPECT_EQ(1u, fake_operation_factory_->created_operations().size());
+ tether_connector_->CancelConnectionAttempt(
+ GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+
+ EXPECT_EQ(ActiveHost::ActiveHostStatus::DISCONNECTED,
+ fake_active_host_->GetActiveHostStatus());
+ EXPECT_EQ(NetworkConnectionHandler::kErrorConnectCanceled,
+ GetResultAndReset());
+}
+
TEST_F(TetherConnectorTest, TestConnectTetheringOperationFails) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(test_devices_[0].GetDeviceId(),
@@ -325,7 +306,7 @@ TEST_F(TetherConnectorTest, TestConnectTetheringOperationFails) {
}
TEST_F(TetherConnectorTest, TestConnectingToWifiFails) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(test_devices_[0].GetDeviceId(),
@@ -356,8 +337,36 @@ TEST_F(TetherConnectorTest, TestConnectingToWifiFails) {
EXPECT_EQ(NetworkConnectionHandler::kErrorConnectFailed, GetResultAndReset());
}
+TEST_F(TetherConnectorTest, TestCancelWhileConnectingToWifi) {
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
+ fake_active_host_->GetActiveHostStatus());
+ EXPECT_EQ(test_devices_[0].GetDeviceId(),
+ fake_active_host_->GetActiveHostDeviceId());
+ EXPECT_EQ(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()),
+ fake_active_host_->GetTetherNetworkGuid());
+ EXPECT_TRUE(fake_active_host_->GetWifiNetworkGuid().empty());
+
+ fake_tether_host_fetcher_->InvokePendingCallbacks();
+
+ // Receive a successful response. We should still be connecting.
+ EXPECT_EQ(1u, fake_operation_factory_->created_operations().size());
+ fake_operation_factory_->created_operations()[0]->SendSuccessfulResponse(
+ kSsid, kPassword);
+ EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
+ fake_active_host_->GetActiveHostStatus());
+
+ tether_connector_->CancelConnectionAttempt(
+ GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+
+ EXPECT_EQ(ActiveHost::ActiveHostStatus::DISCONNECTED,
+ fake_active_host_->GetActiveHostStatus());
+ EXPECT_EQ(NetworkConnectionHandler::kErrorConnectCanceled,
+ GetResultAndReset());
+}
+
TEST_F(TetherConnectorTest, TestSuccessfulConnection) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(test_devices_[0].GetDeviceId(),
@@ -398,11 +407,11 @@ TEST_F(TetherConnectorTest, TestSuccessfulConnection) {
TEST_F(TetherConnectorTest,
TestNewConnectionAttemptDuringFetch_DifferentDevice) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
// Instead of invoking the pending callbacks on |fake_tether_host_fetcher_|,
// attempt another connection attempt, this time to another device.
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
// The first connection attempt should have resulted in a connect canceled
// error.
EXPECT_EQ(NetworkConnectionHandler::kErrorConnectCanceled,
@@ -419,7 +428,7 @@ TEST_F(TetherConnectorTest,
TEST_F(TetherConnectorTest,
TestNewConnectionAttemptDuringOperation_DifferentDevice) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(test_devices_[0].GetDeviceId(),
@@ -434,7 +443,7 @@ TEST_F(TetherConnectorTest,
EXPECT_EQ(1u, fake_operation_factory_->created_operations().size());
// Before the created operation replies, start a new connection to device 1.
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
// The first connection attempt should have resulted in a connect canceled
// error.
EXPECT_EQ(NetworkConnectionHandler::kErrorConnectCanceled,
@@ -467,7 +476,7 @@ TEST_F(TetherConnectorTest,
TEST_F(TetherConnectorTest,
TestNewConnectionAttemptDuringWifiConnection_DifferentDevice) {
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[0].GetDeviceId()));
EXPECT_EQ(ActiveHost::ActiveHostStatus::CONNECTING,
fake_active_host_->GetActiveHostStatus());
EXPECT_EQ(test_devices_[0].GetDeviceId(),
@@ -485,7 +494,7 @@ TEST_F(TetherConnectorTest,
// While the connection to the Wi-Fi network is in progress, start a new
// connection attempt.
- CallTetherDelegate(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
+ CallConnect(GetTetherNetworkGuid(test_devices_[1].GetDeviceId()));
// The first connection attempt should have resulted in a connect canceled
// error.
EXPECT_EQ(NetworkConnectionHandler::kErrorConnectCanceled,

Powered by Google App Engine
This is Rietveld 408576698