17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chromeos/network/network_device_handler.h" 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/bind.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/scoped_ptr.h" 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/values.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chromeos/dbus/dbus_thread_manager.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chromeos/dbus/shill_device_client.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "third_party/cros_system_api/dbus/service_constants.h" 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace chromeos { 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace { 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochconst char kDefaultCellularDevicePath[] = "stub_cellular_device"; 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochconst char kDefaultWifiDevicePath[] = "stub_wifi_device"; 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochconst char kResultSuccess[] = "success"; 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass NetworkDeviceHandlerTest : public testing::Test { 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch NetworkDeviceHandlerTest() {} 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual ~NetworkDeviceHandlerTest() {} 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void SetUp() OVERRIDE { 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DBusThreadManager::InitializeWithStub(); 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_ = base::Bind(&NetworkDeviceHandlerTest::SuccessCallback, 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this)); 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch properties_success_callback_ = 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Bind(&NetworkDeviceHandlerTest::PropertiesSuccessCallback, 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this)); 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_ = base::Bind(&NetworkDeviceHandlerTest::ErrorCallback, 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this)); 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_.reset(new NetworkDeviceHandler()); 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ShillDeviceClient::TestInterface* device_test = 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_test->ClearDevices(); 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_test->AddDevice( 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, flimflam::kTypeCellular, "cellular1"); 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_test->AddDevice( 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultWifiDevicePath, flimflam::kTypeWifi, "wifi1"); 50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::FundamentalValue allow_roaming(false); 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch device_test->SetDeviceProperty( 53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch kDefaultCellularDevicePath, 54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch flimflam::kCellularAllowRoamingProperty, 55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch allow_roaming); 56ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::ListValue test_ip_configs; 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch test_ip_configs.AppendString("ip_config1"); 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_test->SetDeviceProperty( 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultWifiDevicePath, flimflam::kIPConfigsProperty, test_ip_configs); 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void TearDown() OVERRIDE { 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_.reset(); 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DBusThreadManager::Shutdown(); 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Closure GetErrorInvokingCallback( 697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& device_path, 707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_name) { 717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return base::Bind(&NetworkDeviceHandlerTest::InvokeDBusErrorCallback, 727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this), 737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_path, 747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Bind(&NetworkDeviceHandlerTest::ErrorCallback, 757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this)), 767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_name); 777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void ErrorCallback(const std::string& error_name, 807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<base::DictionaryValue> error_data) { 817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch result_ = error_name; 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void SuccessCallback() { 857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch result_ = kResultSuccess; 867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void PropertiesSuccessCallback(const std::string& device_path, 897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const base::DictionaryValue& properties) { 907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch result_ = kResultSuccess; 917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch properties_.reset(properties.DeepCopy()); 927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void InvokeDBusErrorCallback( 957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& device_path, 967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const network_handler::ErrorCallback& callback, 977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const std::string& error_name) { 987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch device_path, callback, error_name, "Error message."); 1007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 1017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch protected: 1037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::string result_; 1047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<NetworkDeviceHandler> network_device_handler_; 1067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::MessageLoopForUI message_loop_; 1077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Closure success_callback_; 1087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_handler::DictionaryResultCallback properties_success_callback_; 1097dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_handler::ErrorCallback error_callback_; 1107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch scoped_ptr<base::DictionaryValue> properties_; 1117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 1137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(NetworkDeviceHandlerTest); 1147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 1157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1167dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, ErrorTranslation) { 1177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_TRUE(result_.empty()); 1187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_handler::ErrorCallback callback = 1197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Bind(&NetworkDeviceHandlerTest::ErrorCallback, 1207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch base::Unretained(this)); 1217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.Failure", 1267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "Error happened."); 1277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorFailure, result_); 1287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.IncorrectPin", 1337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "Incorrect pin."); 1347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorIncorrectPin, result_); 1357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.NotSupported", 1407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "Operation not supported."); 1417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorNotSupported, result_); 1427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.PinBlocked", 1477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "PIN is blocked."); 1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorPinBlocked, result_); 1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.PinRequired", 1547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "A PIN error has occurred."); 1557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorPinRequired, result_); 1567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->HandleShillCallFailureForTest( 1587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 1597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch callback, 1607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.WorldExploded", 1617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "The earth is no more."); 1627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorUnknown, result_); 1637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, GetDeviceProperties) { 1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->GetDeviceProperties( 1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultWifiDevicePath, 1687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch properties_success_callback_, 1697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 1707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 1727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::string type; 1737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch properties_->GetString(flimflam::kTypeProperty, &type); 1747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(flimflam::kTypeWifi, type); 1757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 1767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 177ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(NetworkDeviceHandlerTest, SetDeviceProperty) { 178ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Check that GetDeviceProperties returns the expected initial values. 179ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch network_device_handler_->GetDeviceProperties( 180ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch kDefaultCellularDevicePath, 181ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch properties_success_callback_, 182ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch error_callback_); 183ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch message_loop_.RunUntilIdle(); 184ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 185ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool allow_roaming; 186ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(properties_->GetBooleanWithoutPathExpansion( 187ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch flimflam::kCellularAllowRoamingProperty, &allow_roaming)); 188ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_FALSE(allow_roaming); 189ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 190ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Set the flimflam::kCellularAllowRoamingProperty to true. The call 191ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // should succeed and the value should be set. 192ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::FundamentalValue allow_roaming_value(true); 193ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch network_device_handler_->SetDeviceProperty( 194ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch kDefaultCellularDevicePath, 195ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch flimflam::kCellularAllowRoamingProperty, 196ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch allow_roaming_value, 197ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch success_callback_, 198ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch error_callback_); 199ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch message_loop_.RunUntilIdle(); 200ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 201ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 202ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // GetDeviceProperties should return the value set by SetDeviceProperty. 203ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch network_device_handler_->GetDeviceProperties( 204ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch kDefaultCellularDevicePath, 205ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch properties_success_callback_, 206ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch error_callback_); 207ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch message_loop_.RunUntilIdle(); 208ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 209ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(properties_->GetBooleanWithoutPathExpansion( 210ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch flimflam::kCellularAllowRoamingProperty, &allow_roaming)); 211ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(allow_roaming); 212ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 213ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Set property on an invalid path. 214ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch network_device_handler_->SetDeviceProperty( 215ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch "/device/invalid_path", 216ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch flimflam::kCellularAllowRoamingProperty, 217ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch allow_roaming_value, 218ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch success_callback_, 219ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch error_callback_); 220ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch message_loop_.RunUntilIdle(); 221ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorFailure, result_); 222ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 223ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 2247dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, RequestRefreshIPConfigs) { 2257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->RequestRefreshIPConfigs( 2267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultWifiDevicePath, 2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 2317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // TODO(stevenjb): Add test interface to ShillIPConfigClient and test 2327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // refresh calls. 2337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 2347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2357dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, SetCarrier) { 2367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kCarrier[] = "carrier"; 2377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the success callback gets called. 2397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->SetCarrier( 2407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 2417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kCarrier, 2427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 2437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 2467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the shill error gets properly translated and propagates to the 2487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // error callback. 2497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->SetCarrier( 2507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 2517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kCarrier, 2527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetErrorInvokingCallback(kDefaultCellularDevicePath, 2537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.NotSupported"), 2547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorNotSupported, result_); 2577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 2587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2597dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, RequirePin) { 2607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kPin[] = "1234"; 2617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the success callback gets called. 2637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->RequirePin( 2647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 2657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch true, 2667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 2677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 2687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 2717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the shill error gets properly translated and propagates to the 2737dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // error callback. 2747dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->RequirePin( 2757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 2767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch true, 2777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 2787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetErrorInvokingCallback(kDefaultCellularDevicePath, 2797dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.IncorrectPin"), 2807dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorIncorrectPin, result_); 2837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 2847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2857dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, EnterPin) { 2867dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kPin[] = "1234"; 2877dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the success callback gets called. 2897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->EnterPin( 2907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 2917dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 2927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 2937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 2947dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 2957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 2967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 2977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the shill error gets properly translated and propagates to the 2987dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // error callback. 2997dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->EnterPin( 3007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 3017dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 3027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetErrorInvokingCallback(kDefaultCellularDevicePath, 3037dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.IncorrectPin"), 3047dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 3057dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 3067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorIncorrectPin, result_); 3077dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 3087dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3097dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, UnblockPin) { 3107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kPuk[] = "12345678"; 3117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kPin[] = "1234"; 3127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the success callback gets called. 3147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->UnblockPin( 3157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 3167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 3177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPuk, 3187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 3197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 3207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 3217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 3227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the shill error gets properly translated and propagates to the 3247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // error callback. 3257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->UnblockPin( 3267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 3277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPin, 3287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kPuk, 3297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetErrorInvokingCallback(kDefaultCellularDevicePath, 3307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.PinRequired"), 3317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 3327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 3337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorPinRequired, result_); 3347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 3357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3367dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST_F(NetworkDeviceHandlerTest, ChangePin) { 3377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kOldPin[] = "4321"; 3387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const char kNewPin[] = "1234"; 3397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the success callback gets called. 3417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->ChangePin( 3427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 3437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kOldPin, 3447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kNewPin, 3457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch success_callback_, 3467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 3477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 3487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(kResultSuccess, result_); 3497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Test that the shill error gets properly translated and propagates to the 3517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // error callback. 3527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch network_device_handler_->ChangePin( 3537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kDefaultCellularDevicePath, 3547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kOldPin, 3557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch kNewPin, 3567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch GetErrorInvokingCallback(kDefaultCellularDevicePath, 3577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch "org.chromium.flimflam.Error.PinBlocked"), 3587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch error_callback_); 3597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch message_loop_.RunUntilIdle(); 3607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_EQ(NetworkDeviceHandler::kErrorPinBlocked, result_); 3617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 3627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 3637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace chromeos 364