| Index: chromeos/network/network_connection_handler_unittest.cc
|
| diff --git a/chromeos/network/network_connection_handler_unittest.cc b/chromeos/network/network_connection_handler_unittest.cc
|
| index 257a0f477c257608cead373a299f31459e808a6f..a615694c3de7b7ddf825dd4562f69da6f9e4e2ee 100644
|
| --- a/chromeos/network/network_connection_handler_unittest.cc
|
| +++ b/chromeos/network/network_connection_handler_unittest.cc
|
| @@ -91,7 +91,9 @@ class NetworkConnectionHandlerTest : public testing::Test {
|
| test_manager_client_->AddTechnology(shill::kTypeCellular,
|
| true /* enabled */);
|
| dbus_manager->GetShillProfileClient()->GetTestInterface()->AddProfile(
|
| - "profile_path", std::string() /* shared profile */);
|
| + "shared_profile_path", std::string() /* shared profile */);
|
| + dbus_manager->GetShillProfileClient()->GetTestInterface()->AddProfile(
|
| + "user_profile_path", user_.username_hash());
|
|
|
| base::RunLoop().RunUntilIdle();
|
| LoginState::Initialize();
|
| @@ -220,36 +222,32 @@ class NetworkConnectionHandlerTest : public testing::Test {
|
| ASSERT_EQ(1U, loaded_certs->size());
|
| }
|
|
|
| - void SetupPolicy() {
|
| - const char* kNetworkConfigs =
|
| - "[ { \"GUID\": \"wifi1\","
|
| - " \"Name\": \"wifi1\","
|
| - " \"Type\": \"WiFi\","
|
| - " \"WiFi\": {"
|
| - " \"Security\": \"WPA-PSK\","
|
| - " \"SSID\": \"wifi1\","
|
| - " \"Passphrase\": \"passphrase\""
|
| - " }"
|
| - "} ]";
|
| -
|
| + void SetupPolicy(const std::string& network_configs_json,
|
| + const base::DictionaryValue& global_config,
|
| + bool user_policy) {
|
| std::string error;
|
| scoped_ptr<base::Value> network_configs_value(
|
| - base::JSONReader::ReadAndReturnError(
|
| - kNetworkConfigs, base::JSON_ALLOW_TRAILING_COMMAS, NULL, &error));
|
| + base::JSONReader::ReadAndReturnError(network_configs_json,
|
| + base::JSON_ALLOW_TRAILING_COMMAS,
|
| + NULL,
|
| + &error));
|
| ASSERT_TRUE(network_configs_value) << error;
|
|
|
| base::ListValue* network_configs = NULL;
|
| ASSERT_TRUE(network_configs_value->GetAsList(&network_configs));
|
|
|
| - base::DictionaryValue global_config;
|
| - global_config.SetBooleanWithoutPathExpansion(
|
| - ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect,
|
| - true);
|
| -
|
| - managed_config_handler_->SetPolicy(::onc::ONC_SOURCE_USER_POLICY,
|
| - "", // userhash
|
| - *network_configs,
|
| - global_config);
|
| + if (user_policy) {
|
| + managed_config_handler_->SetPolicy(
|
| + ::onc::ONC_SOURCE_USER_POLICY,
|
| + user_.username_hash(),
|
| + *network_configs,
|
| + global_config);
|
| + } else {
|
| + managed_config_handler_->SetPolicy(::onc::ONC_SOURCE_DEVICE_POLICY,
|
| + std::string(), // no username hash
|
| + *network_configs,
|
| + global_config);
|
| + }
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| @@ -322,23 +320,34 @@ TEST_F(NetworkConnectionHandlerTest, NetworkConnectionHandlerConnectFailure) {
|
|
|
| namespace {
|
|
|
| -const char* kConfigRequiresCertificateTemplate =
|
| - "{ \"GUID\": \"wifi4\", \"Type\": \"wifi\", \"Connectable\": false,"
|
| - " \"Security\": \"802_1x\","
|
| - " \"UIData\": \"{"
|
| - " \\\"certificate_type\\\": \\\"pattern\\\","
|
| - " \\\"certificate_pattern\\\": {"
|
| - " \\\"Subject\\\": {\\\"CommonName\\\": \\\"%s\\\" }"
|
| - " } }\" }";
|
| +const char* kPolicyWithCertPatternTemplate =
|
| + "[ { \"GUID\": \"wifi4\","
|
| + " \"Name\": \"wifi4\","
|
| + " \"Type\": \"WiFi\","
|
| + " \"WiFi\": {"
|
| + " \"Security\": \"WPA-EAP\","
|
| + " \"SSID\": \"wifi_ssid\","
|
| + " \"EAP\": {"
|
| + " \"Outer\": \"EAP-TLS\","
|
| + " \"ClientCertType\": \"Pattern\","
|
| + " \"ClientCertPattern\": {"
|
| + " \"Subject\": {"
|
| + " \"CommonName\" : \"%s\""
|
| + " }"
|
| + " }"
|
| + " }"
|
| + " }"
|
| + "} ]";
|
|
|
| } // namespace
|
|
|
| // Handle certificates.
|
| TEST_F(NetworkConnectionHandlerTest, ConnectCertificateMissing) {
|
| StartCertLoader();
|
| + SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate, "unknown"),
|
| + base::DictionaryValue(), // no global config
|
| + true); // load as user policy
|
|
|
| - EXPECT_TRUE(Configure(
|
| - base::StringPrintf(kConfigRequiresCertificateTemplate, "unknown")));
|
| Connect("wifi4");
|
| EXPECT_EQ(NetworkConnectionHandler::kErrorCertificateRequired,
|
| GetResultAndReset());
|
| @@ -352,9 +361,10 @@ TEST_F(NetworkConnectionHandlerTest, ConnectWithCertificateSuccess) {
|
| test_nssdb_.get(),
|
| &certs);
|
|
|
| - EXPECT_TRUE(Configure(
|
| - base::StringPrintf(kConfigRequiresCertificateTemplate,
|
| - certs[0]->subject().common_name.c_str())));
|
| + SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate,
|
| + certs[0]->subject().common_name.c_str()),
|
| + base::DictionaryValue(), // no global config
|
| + true); // load as user policy
|
|
|
| Connect("wifi4");
|
| EXPECT_EQ(kSuccessResult, GetResultAndReset());
|
| @@ -367,9 +377,10 @@ TEST_F(NetworkConnectionHandlerTest,
|
| test_nssdb_.get(),
|
| &certs);
|
|
|
| - EXPECT_TRUE(Configure(
|
| - base::StringPrintf(kConfigRequiresCertificateTemplate,
|
| - certs[0]->subject().common_name.c_str())));
|
| + SetupPolicy(base::StringPrintf(kPolicyWithCertPatternTemplate,
|
| + certs[0]->subject().common_name.c_str()),
|
| + base::DictionaryValue(), // no global config
|
| + true); // load as user policy
|
|
|
| Connect("wifi4");
|
|
|
| @@ -412,6 +423,17 @@ const char* kConfigManagedSharedConnectable =
|
| "{ \"GUID\": \"wifi1\", \"Type\": \"wifi\", \"State\": \"idle\", "
|
| " \"Connectable\": true }";
|
|
|
| +const char* kPolicy =
|
| + "[ { \"GUID\": \"wifi1\","
|
| + " \"Name\": \"wifi1\","
|
| + " \"Type\": \"WiFi\","
|
| + " \"WiFi\": {"
|
| + " \"Security\": \"WPA-PSK\","
|
| + " \"SSID\": \"wifi1\","
|
| + " \"Passphrase\": \"passphrase\""
|
| + " }"
|
| + "} ]";
|
| +
|
| } // namespace
|
|
|
| TEST_F(NetworkConnectionHandlerTest, ReconnectOnLoginEarlyPolicyLoading) {
|
| @@ -426,8 +448,14 @@ TEST_F(NetworkConnectionHandlerTest, ReconnectOnLoginEarlyPolicyLoading) {
|
| EXPECT_EQ(shill::kStateIdle,
|
| GetServiceStringProperty("wifi1", shill::kStateProperty));
|
|
|
| - // Policy application should disconnect from the shared and unmanaged network.
|
| - SetupPolicy();
|
| + // Applying the policy which restricts autoconnect should disconnect from the
|
| + // shared, unmanaged network.
|
| + base::DictionaryValue global_config;
|
| + global_config.SetBooleanWithoutPathExpansion(
|
| + ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect,
|
| + true);
|
| +
|
| + SetupPolicy(kPolicy, global_config, false /* load as device policy */);
|
| EXPECT_EQ(shill::kStateIdle,
|
| GetServiceStringProperty("wifi0", shill::kStateProperty));
|
| EXPECT_EQ(shill::kStateIdle,
|
| @@ -455,7 +483,14 @@ TEST_F(NetworkConnectionHandlerTest, ReconnectOnLoginLatePolicyLoading) {
|
| EXPECT_EQ(shill::kStateIdle,
|
| GetServiceStringProperty("wifi1", shill::kStateProperty));
|
|
|
| - SetupPolicy();
|
| + // Applying the policy which restricts autoconnect should disconnect from the
|
| + // shared, unmanaged network.
|
| + base::DictionaryValue global_config;
|
| + global_config.SetBooleanWithoutPathExpansion(
|
| + ::onc::global_network_config::kAllowOnlyPolicyNetworksToAutoconnect,
|
| + true);
|
| +
|
| + SetupPolicy(kPolicy, global_config, false /* load as device policy */);
|
| EXPECT_EQ(shill::kStateIdle,
|
| GetServiceStringProperty("wifi0", shill::kStateProperty));
|
| EXPECT_EQ(shill::kStateOnline,
|
|
|