Index: extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc |
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc b/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc |
index 6bed63200f9235161eae415ca9b73c42546e2b2b..aeba373ac970780b9ab48c222db80484bf6a7f9a 100644 |
--- a/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc |
+++ b/extensions/browser/api/networking_private/networking_private_chromeos_unittest.cc |
@@ -5,6 +5,7 @@ |
#include "base/macros.h" |
#include "base/message_loop/message_loop.h" |
#include "base/run_loop.h" |
+#include "base/strings/string_number_conversions.h" |
#include "base/strings/stringprintf.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/shill_device_client.h" |
@@ -15,6 +16,7 @@ |
#include "chromeos/network/network_handler.h" |
#include "chromeos/network/network_state.h" |
#include "chromeos/network/network_state_handler.h" |
+#include "components/onc/onc_constants.h" |
#include "extensions/browser/api/networking_private/networking_private_api.h" |
#include "extensions/browser/api_unittest.h" |
#include "extensions/common/value_builder.h" |
@@ -37,6 +39,12 @@ const char kPrivateWifiServicePath[] = "/service/private_wifi"; |
const char kPrivateWifiGuid[] = "private_wifi_guid"; |
const char kPrivateWifiName[] = "private_wifi"; |
+const char kManagedUserWifiGuid[] = "managed_user_wifi_guid"; |
+const char kManagedUserWifiSsid[] = "managed_user_wifi"; |
+ |
+const char kManagedDeviceWifiGuid[] = "managed_device_wifi_guid"; |
+const char kManagedDeviceWifiSsid[] = "managed_device_wifi"; |
+ |
} // namespace |
class NetworkingPrivateApiTest : public ApiUnitTest { |
@@ -128,11 +136,45 @@ class NetworkingPrivateApiTest : public ApiUnitTest { |
chromeos::NetworkHandler::Get() |
->managed_network_configuration_handler(); |
- config_handler->SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUserHash, |
- base::ListValue(), base::DictionaryValue()); |
+ const std::string user_policy_ssid = kManagedUserWifiSsid; |
+ std::unique_ptr<base::ListValue> user_policy_onc = |
+ ListBuilder() |
+ .Append(DictionaryBuilder() |
+ .Set("GUID", kManagedUserWifiGuid) |
+ .Set("Type", "WiFi") |
+ .Set("WiFi", |
+ DictionaryBuilder() |
+ .Set("Passphrase", "fake") |
+ .Set("SSID", user_policy_ssid) |
+ .Set("HexSSID", |
+ base::HexEncode(user_policy_ssid.c_str(), |
+ user_policy_ssid.size())) |
+ .Set("Security", "WPA-PSK") |
+ .Build()) |
+ .Build()) |
+ .Build(); |
+ config_handler->SetPolicy(::onc::ONC_SOURCE_USER_POLICY, kUserHash, |
+ *user_policy_onc, base::DictionaryValue()); |
+ |
+ const std::string device_policy_ssid = kManagedDeviceWifiSsid; |
+ std::unique_ptr<base::ListValue> device_policy_onc = |
+ ListBuilder() |
+ .Append(DictionaryBuilder() |
+ .Set("GUID", kManagedDeviceWifiGuid) |
+ .Set("Type", "WiFi") |
+ .Set("WiFi", |
+ DictionaryBuilder() |
+ .Set("SSID", device_policy_ssid) |
+ .Set("HexSSID", base::HexEncode( |
+ device_policy_ssid.c_str(), |
+ device_policy_ssid.size())) |
+ .Set("Security", "None") |
+ .Build()) |
+ .Build()) |
+ .Build(); |
config_handler->SetPolicy(::onc::ONC_SOURCE_DEVICE_POLICY, "", |
- base::ListValue(), base::DictionaryValue()); |
+ *device_policy_onc, base::DictionaryValue()); |
} |
void AddSharedNetworkToUserProfile() { |
@@ -284,4 +326,133 @@ TEST_F(NetworkingPrivateApiTest, CreatePrivateNetwork) { |
EXPECT_EQ(2, GetNetworkPriority(network)); |
} |
+TEST_F(NetworkingPrivateApiTest, CreatePrivateNetwork_NonMatchingSsids) { |
+ const std::string network_ssid = "new_wifi_config"; |
+ const std::string network_hex_ssid = |
+ base::HexEncode(network_ssid.c_str(), network_ssid.size()); |
+ std::unique_ptr<base::Value> result = RunFunctionAndReturnValue( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"SSID\": \"New WiFi\"," |
+ " \"HexSSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ network_hex_ssid.c_str())); |
+ |
+ ASSERT_TRUE(result); |
+ ASSERT_TRUE(result->is_string()); |
+ |
+ // Test the created config can be changed now. |
+ const std::string guid = result->GetString(); |
+ const chromeos::NetworkState* network = chromeos::NetworkHandler::Get() |
+ ->network_state_handler() |
+ ->GetNetworkStateFromGuid(guid); |
+ ASSERT_TRUE(network); |
+ EXPECT_TRUE(network->IsPrivate()); |
+ EXPECT_EQ(1, GetNetworkPriority(network)); |
+ EXPECT_EQ(network_hex_ssid, network->GetHexSsid()); |
+ EXPECT_EQ(network_ssid, network->name()); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, |
+ CreateAlreadyConfiguredUserPrivateNetwork_BySsid) { |
+ EXPECT_EQ("NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"SSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ kManagedUserWifiSsid))); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, |
+ CreateAlreadyConfiguredUserPrivateNetwork_ByHexSsid) { |
+ std::string network_hex_ssid = |
+ base::HexEncode(kManagedUserWifiSsid, sizeof(kManagedUserWifiSsid) - 1); |
+ EXPECT_EQ("NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"HexSSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ network_hex_ssid.c_str()))); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, |
+ CreateAlreadyConfiguredUserPrivateNetwork_NonMatchingSsids) { |
+ std::string network_hex_ssid = |
+ base::HexEncode(kManagedUserWifiSsid, sizeof(kManagedUserWifiSsid) - 1); |
+ // HexSSID should take presedence over SSID. |
+ EXPECT_EQ("NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"SSID\": \"wrong_ssid\"," |
+ " \"HexSSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ network_hex_ssid.c_str()))); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, |
+ CreateAlreadyConfiguredUserPrivateNetwork_ByHexSSID) { |
+ std::string network_hex_ssid = |
+ base::HexEncode(kManagedUserWifiSsid, sizeof(kManagedUserWifiSsid) - 1); |
+ EXPECT_EQ("NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"HexSSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ network_hex_ssid.c_str()))); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, CreateAlreadyConfiguredDeviceNetwork) { |
+ EXPECT_EQ( |
+ "NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError(new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"SSID\": \"%s\"" |
+ "}}]", |
+ kManagedDeviceWifiSsid))); |
+} |
+ |
+TEST_F(NetworkingPrivateApiTest, |
+ CreateAlreadyConfiguredDeviceNetwork_ByHexSSID) { |
+ std::string network_hex_ssid = base::HexEncode( |
+ kManagedDeviceWifiSsid, sizeof(kManagedDeviceWifiSsid) - 1); |
+ EXPECT_EQ("NetworkAlreadyConfigured", |
+ RunFunctionAndReturnError( |
+ new NetworkingPrivateCreateNetworkFunction(), |
+ base::StringPrintf("[false, {" |
+ " \"Priority\": 1," |
+ " \"Type\": \"WiFi\"," |
+ " \"WiFi\": {" |
+ " \"HexSSID\": \"%s\"," |
+ " \"Security\": \"WPA-PSK\"" |
+ "}}]", |
+ network_hex_ssid.c_str()))); |
+} |
+ |
} // namespace extensions |