Index: chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc |
diff --git a/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc b/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc |
index 591bb1027bf03981746c105def5a44524056e6a0..cdeae6fbb39592192404a26e01e7571e1ca63a5d 100644 |
--- a/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc |
+++ b/chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc |
@@ -9,11 +9,14 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop.h" |
#include "base/run_loop.h" |
+#include "base/values.h" |
#include "chrome/browser/chromeos/cros/mock_network_library.h" |
#include "chrome/browser/policy/mock_configuration_policy_provider.h" |
#include "chrome/browser/policy/policy_map.h" |
#include "chrome/browser/policy/policy_service_impl.h" |
+#include "chromeos/network/mock_certificate_handler.h" |
#include "chromeos/network/onc/onc_constants.h" |
+#include "chromeos/network/onc/onc_test_utils.h" |
#include "chromeos/network/onc/onc_utils.h" |
#include "content/public/test/test_browser_thread.h" |
#include "content/public/test/test_utils.h" |
@@ -29,24 +32,56 @@ using testing::AnyNumber; |
using testing::Mock; |
using testing::Ne; |
using testing::Return; |
+using testing::StrictMock; |
using testing::_; |
+namespace onc = ::chromeos::onc; |
+ |
namespace policy { |
namespace { |
-const char kFakeONC[] = "{ \"GUID\": \"1234\" }"; |
+const char kFakeONC[] = |
+ "{ \"NetworkConfigurations\": [" |
+ " { \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5040}\"," |
+ " \"Type\": \"WiFi\"," |
+ " \"Name\": \"My WiFi Network\"," |
+ " \"WiFi\": {" |
+ " \"SSID\": \"ssid-none\"," |
+ " \"Security\": \"None\" }" |
+ " }" |
+ " ]," |
+ " \"Certificates\": [" |
+ " { \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\"," |
+ " \"PKCS12\": \"abc\"," |
+ " \"Type\": \"Client\" }" |
+ " ]," |
+ " \"Type\": \"UnencryptedConfiguration\"" |
+ "}"; |
+ |
+std::string ValueToString(const base::Value* value) { |
+ std::stringstream str; |
+ str << *value; |
+ return str.str(); |
+} |
+ |
+// Matcher to match base::Value. |
+MATCHER_P(IsEqualTo, |
+ value, |
+ std::string(negation ? "isn't" : "is") + " equal to " + |
+ ValueToString(value)) { |
+ return value->Equals(&arg); |
+} |
ACTION_P(SetCertificateList, list) { |
- *arg3 = list; |
+ *arg2 = list; |
return true; |
} |
} // namespace |
// Tests of NetworkConfigurationUpdaterImplCros |
-class NetworkConfigurationUpdaterTest |
- : public testing::TestWithParam<const char*>{ |
+class NetworkConfigurationUpdaterTest : public testing::Test { |
protected: |
NetworkConfigurationUpdaterTest() |
: ui_thread_(content::BrowserThread::UI, &loop_), |
@@ -59,6 +94,28 @@ class NetworkConfigurationUpdaterTest |
PolicyServiceImpl::Providers providers; |
providers.push_back(&provider_); |
policy_service_.reset(new PolicyServiceImpl(providers)); |
+ |
+ empty_network_configs_.reset(new base::ListValue); |
+ empty_certificates_.reset(new base::ListValue); |
+ |
+ scoped_ptr<base::DictionaryValue> fake_toplevel_onc = |
+ onc::ReadDictionaryFromJson(kFakeONC); |
+ |
+ base::Value* network_configs_value = NULL; |
+ base::ListValue* network_configs = NULL; |
+ fake_toplevel_onc->RemoveWithoutPathExpansion( |
+ onc::toplevel_config::kNetworkConfigurations, |
+ &network_configs_value); |
+ network_configs_value->GetAsList(&network_configs); |
+ fake_network_configs_.reset(network_configs); |
+ |
+ base::Value* certs_value = NULL; |
+ base::ListValue* certs = NULL; |
+ fake_toplevel_onc->RemoveWithoutPathExpansion( |
+ onc::toplevel_config::kCertificates, |
+ &certs_value); |
+ certs_value->GetAsList(&certs); |
+ fake_certificates_.reset(certs); |
} |
virtual void TearDown() OVERRIDE { |
@@ -73,24 +130,81 @@ class NetworkConfigurationUpdaterTest |
} |
// Maps configuration policy name to corresponding ONC source. |
- static chromeos::onc::ONCSource NameToONCSource( |
+ static onc::ONCSource NameToONCSource( |
const std::string& name) { |
if (name == key::kDeviceOpenNetworkConfiguration) |
- return chromeos::onc::ONC_SOURCE_DEVICE_POLICY; |
+ return onc::ONC_SOURCE_DEVICE_POLICY; |
if (name == key::kOpenNetworkConfiguration) |
- return chromeos::onc::ONC_SOURCE_USER_POLICY; |
- return chromeos::onc::ONC_SOURCE_NONE; |
+ return onc::ONC_SOURCE_USER_POLICY; |
+ return onc::ONC_SOURCE_NONE; |
} |
- chromeos::MockNetworkLibrary network_library_; |
- MockConfigurationPolicyProvider provider_; |
+ scoped_ptr<base::ListValue> empty_network_configs_; |
+ scoped_ptr<base::ListValue> empty_certificates_; |
+ scoped_ptr<base::ListValue> fake_network_configs_; |
+ scoped_ptr<base::ListValue> fake_certificates_; |
+ StrictMock<chromeos::MockNetworkLibrary> network_library_; |
+ StrictMock<MockConfigurationPolicyProvider> provider_; |
scoped_ptr<PolicyServiceImpl> policy_service_; |
MessageLoop loop_; |
content::TestBrowserThread ui_thread_; |
content::TestBrowserThread io_thread_; |
}; |
-TEST_P(NetworkConfigurationUpdaterTest, InitialUpdates) { |
+TEST_F(NetworkConfigurationUpdaterTest, PolicyIsValidatedAndRepaired) { |
+ std::string onc_policy = |
+ onc::test_utils::ReadTestData("toplevel_partially_invalid.onc"); |
+ |
+ scoped_ptr<base::DictionaryValue> onc_repaired = |
+ onc::test_utils::ReadTestDictionary( |
+ "repaired_toplevel_partially_invalid.onc"); |
+ |
+ base::ListValue* network_configs_repaired = NULL; |
+ onc_repaired->GetListWithoutPathExpansion( |
+ onc::toplevel_config::kNetworkConfigurations, |
+ &network_configs_repaired); |
+ ASSERT_TRUE(network_configs_repaired); |
+ |
+ PolicyMap policy; |
+ policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY, |
+ POLICY_SCOPE_USER, Value::CreateStringValue(onc_policy)); |
+ UpdateProviderPolicy(policy); |
+ |
+ EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); |
+ |
+ // Ignore the device policy update. |
+ EXPECT_CALL(network_library_, LoadOncNetworks(_, _)); |
+ StrictMock<chromeos::MockCertificateHandler>* certificate_handler = |
+ new StrictMock<chromeos::MockCertificateHandler>(); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)); |
+ |
+ NetworkConfigurationUpdaterImplCros updater( |
+ policy_service_.get(), |
+ &network_library_, |
+ make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler)); |
+ Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ |
+ // After the user policy is initialized, we always push both policies to the |
+ // NetworkLibrary. Ignore the device policy. |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ _, onc::ONC_SOURCE_DEVICE_POLICY)); |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(network_configs_repaired), |
+ onc::ONC_SOURCE_USER_POLICY)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)).Times(2); |
+ |
+ EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
+ |
+ updater.OnUserPolicyInitialized(); |
+} |
+ |
+class NetworkConfigurationUpdaterTestWithParam |
+ : public NetworkConfigurationUpdaterTest, |
+ public testing::WithParamInterface<const char*> { |
+}; |
+ |
+TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) { |
PolicyMap policy; |
policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
Value::CreateStringValue(kFakeONC)); |
@@ -100,140 +214,184 @@ TEST_P(NetworkConfigurationUpdaterTest, InitialUpdates) { |
// Initially, only the device policy is applied. The user policy is only |
// applied after the user profile was initialized. |
- const char* device_onc = GetParam() == key::kDeviceOpenNetworkConfiguration ? |
- kFakeONC : chromeos::onc::kEmptyUnencryptedConfiguration; |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- device_onc, "", chromeos::onc::ONC_SOURCE_DEVICE_POLICY, _)); |
- |
- { |
- NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), |
- &network_library_); |
- Mock::VerifyAndClearExpectations(&network_library_); |
- |
- // After the user policy is initialized, we always push both policies to the |
- // NetworkLibrary. |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- kFakeONC, "", NameToONCSource(GetParam()), _)); |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- chromeos::onc::kEmptyUnencryptedConfiguration, |
- "", |
- Ne(NameToONCSource(GetParam())), |
- _)); |
- |
- EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
- |
- updater.OnUserPolicyInitialized(); |
+ base::ListValue* device_networks; |
+ base::ListValue* device_certs; |
+ base::ListValue* user_networks; |
+ base::ListValue* user_certs; |
+ if (GetParam() == key::kDeviceOpenNetworkConfiguration) { |
+ device_networks = fake_network_configs_.get(); |
+ device_certs = fake_certificates_.get(); |
+ user_networks = empty_network_configs_.get(); |
+ user_certs = empty_certificates_.get(); |
+ } else { |
+ device_networks = empty_network_configs_.get(); |
+ device_certs = empty_certificates_.get(); |
+ user_networks = fake_network_configs_.get(); |
+ user_certs = fake_certificates_.get(); |
} |
+ |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(device_networks), onc::ONC_SOURCE_DEVICE_POLICY)); |
+ StrictMock<chromeos::MockCertificateHandler>* certificate_handler = |
+ new StrictMock<chromeos::MockCertificateHandler>(); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(device_certs), onc::ONC_SOURCE_DEVICE_POLICY, _)); |
+ |
+ NetworkConfigurationUpdaterImplCros updater( |
+ policy_service_.get(), |
+ &network_library_, |
+ make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler)); |
Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ |
+ // After the user policy is initialized, we always push both policies to the |
+ // NetworkLibrary. |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(device_networks), onc::ONC_SOURCE_DEVICE_POLICY)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(device_certs), onc::ONC_SOURCE_DEVICE_POLICY, _)); |
+ |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(user_networks), onc::ONC_SOURCE_USER_POLICY)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(user_certs), onc::ONC_SOURCE_USER_POLICY, _)); |
+ |
+ EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
+ |
+ updater.OnUserPolicyInitialized(); |
} |
-TEST_P(NetworkConfigurationUpdaterTest, AllowTrustedCertificatesFromPolicy) { |
- { |
- EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); |
- |
- const net::CertificateList empty_cert_list; |
- |
- const net::CertificateList cert_list = |
- net::CreateCertificateListFromFile(net::GetTestCertsDirectory(), |
- "ok_cert.pem", |
- net::X509Certificate::FORMAT_AUTO); |
- ASSERT_EQ(1u, cert_list.size()); |
- |
- EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) |
- .WillRepeatedly(SetCertificateList(empty_cert_list)); |
- NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), |
- &network_library_); |
- net::CertTrustAnchorProvider* trust_provider = |
- updater.GetCertTrustAnchorProvider(); |
- ASSERT_TRUE(trust_provider); |
- // The initial list of trust anchors is empty. |
- content::RunAllPendingInMessageLoop(content::BrowserThread::IO); |
- EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); |
+TEST_P(NetworkConfigurationUpdaterTestWithParam, |
+ AllowTrustedCertificatesFromPolicy) { |
+ EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); |
- // Initially, certificates imported from policy don't have trust flags. |
- updater.OnUserPolicyInitialized(); |
- content::RunAllPendingInMessageLoop(content::BrowserThread::IO); |
- Mock::VerifyAndClearExpectations(&network_library_); |
- EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); |
- |
- // Certificates with the "Web" trust flag set should be forwarded to the |
- // trust provider. |
- EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) |
- .WillRepeatedly(SetCertificateList(empty_cert_list)); |
- chromeos::onc::ONCSource current_source = NameToONCSource(GetParam()); |
- EXPECT_CALL(network_library_, LoadOncNetworks(_, _, current_source, _)) |
- .WillRepeatedly(SetCertificateList(cert_list)); |
- updater.set_allow_trusted_certificates_from_policy(true); |
- // Trigger a policy update. |
- PolicyMap policy; |
- policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateStringValue(kFakeONC)); |
- UpdateProviderPolicy(policy); |
- Mock::VerifyAndClearExpectations(&network_library_); |
- |
- // Certificates are only provided as trust anchors if they come from user |
- // policy. |
- size_t expected_certs = 0u; |
- if (GetParam() == key::kOpenNetworkConfiguration) |
- expected_certs = 1u; |
- EXPECT_EQ(expected_certs, |
- trust_provider->GetAdditionalTrustAnchors().size()); |
- |
- EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
- } |
+ const net::CertificateList empty_cert_list; |
+ |
+ const net::CertificateList cert_list = |
+ net::CreateCertificateListFromFile(net::GetTestCertsDirectory(), |
+ "ok_cert.pem", |
+ net::X509Certificate::FORMAT_AUTO); |
+ ASSERT_EQ(1u, cert_list.size()); |
+ |
+ EXPECT_CALL(network_library_, LoadOncNetworks(_, _)).Times(AnyNumber()); |
+ StrictMock<chromeos::MockCertificateHandler>* certificate_handler = |
+ new StrictMock<chromeos::MockCertificateHandler>(); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)) |
+ .WillRepeatedly(SetCertificateList(empty_cert_list)); |
+ NetworkConfigurationUpdaterImplCros updater( |
+ policy_service_.get(), |
+ &network_library_, |
+ make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler)); |
+ net::CertTrustAnchorProvider* trust_provider = |
+ updater.GetCertTrustAnchorProvider(); |
+ ASSERT_TRUE(trust_provider); |
+ // The initial list of trust anchors is empty. |
+ content::RunAllPendingInMessageLoop(content::BrowserThread::IO); |
+ EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); |
+ |
+ // Initially, certificates imported from policy don't have trust flags. |
+ updater.OnUserPolicyInitialized(); |
+ content::RunAllPendingInMessageLoop(content::BrowserThread::IO); |
+ Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); |
+ |
+ // Certificates with the "Web" trust flag set should be forwarded to the |
+ // trust provider. |
+ EXPECT_CALL(network_library_, LoadOncNetworks(_, _)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)) |
+ .WillRepeatedly(SetCertificateList(empty_cert_list)); |
+ onc::ONCSource current_source = NameToONCSource(GetParam()); |
+ EXPECT_CALL(network_library_, LoadOncNetworks(_, current_source)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, current_source, _)) |
+ .WillRepeatedly(SetCertificateList(cert_list)); |
+ updater.set_allow_trusted_certificates_from_policy(true); |
+ // Trigger a policy update. |
+ PolicyMap policy; |
+ policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ base::Value::CreateStringValue(kFakeONC)); |
+ UpdateProviderPolicy(policy); |
Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ |
+ // Certificates are only provided as trust anchors if they come from user |
+ // policy. |
+ size_t expected_certs = 0u; |
+ if (GetParam() == key::kOpenNetworkConfiguration) |
+ expected_certs = 1u; |
+ EXPECT_EQ(expected_certs, |
+ trust_provider->GetAdditionalTrustAnchors().size()); |
+ |
+ EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
} |
-TEST_P(NetworkConfigurationUpdaterTest, PolicyChange) { |
- { |
- EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); |
- |
- // Ignore the initial updates. |
- EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) |
- .Times(AnyNumber()); |
- NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), |
- &network_library_); |
- updater.OnUserPolicyInitialized(); |
- Mock::VerifyAndClearExpectations(&network_library_); |
- |
- // We should update if policy changes. |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- kFakeONC, "", NameToONCSource(GetParam()), _)); |
- |
- // In the current implementation, we always apply both policies. |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- chromeos::onc::kEmptyUnencryptedConfiguration, |
- "", |
- Ne(NameToONCSource(GetParam())), |
- _)); |
- |
- PolicyMap policy; |
- policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- Value::CreateStringValue(kFakeONC)); |
- UpdateProviderPolicy(policy); |
- Mock::VerifyAndClearExpectations(&network_library_); |
- |
- // Another update is expected if the policy goes away. In the current |
- // implementation, we always apply both policies. |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- chromeos::onc::kEmptyUnencryptedConfiguration, "", |
- chromeos::onc::ONC_SOURCE_DEVICE_POLICY, _)); |
- |
- EXPECT_CALL(network_library_, LoadOncNetworks( |
- chromeos::onc::kEmptyUnencryptedConfiguration, "", |
- chromeos::onc::ONC_SOURCE_USER_POLICY, _)); |
- |
- EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
- |
- policy.Erase(GetParam()); |
- UpdateProviderPolicy(policy); |
- } |
+TEST_P(NetworkConfigurationUpdaterTestWithParam, PolicyChange) { |
+ EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); |
+ |
+ // Ignore the initial updates. |
+ EXPECT_CALL(network_library_, LoadOncNetworks(_, _)) |
+ .Times(AnyNumber()); |
+ StrictMock<chromeos::MockCertificateHandler>* certificate_handler = |
+ new StrictMock<chromeos::MockCertificateHandler>(); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)) |
+ .Times(AnyNumber()); |
+ NetworkConfigurationUpdaterImplCros updater( |
+ policy_service_.get(), |
+ &network_library_, |
+ make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler)); |
+ updater.OnUserPolicyInitialized(); |
Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ |
+ // We should update if policy changes. |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(fake_network_configs_.get()), NameToONCSource(GetParam()))); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(fake_certificates_.get()), NameToONCSource(GetParam()), _)); |
+ |
+ // In the current implementation, we always apply both policies. |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(empty_network_configs_.get()), |
+ Ne(NameToONCSource(GetParam())))); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(empty_certificates_.get()), |
+ Ne(NameToONCSource(GetParam())), |
+ _)); |
+ |
+ PolicyMap policy; |
+ policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
+ Value::CreateStringValue(kFakeONC)); |
+ UpdateProviderPolicy(policy); |
+ Mock::VerifyAndClearExpectations(&network_library_); |
+ Mock::VerifyAndClearExpectations(&certificate_handler); |
+ |
+ // Another update is expected if the policy goes away. In the current |
+ // implementation, we always apply both policies. |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(empty_network_configs_.get()), |
+ onc::ONC_SOURCE_DEVICE_POLICY)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(empty_certificates_.get()), |
+ onc::ONC_SOURCE_DEVICE_POLICY, |
+ _)); |
+ |
+ EXPECT_CALL(network_library_, LoadOncNetworks( |
+ IsEqualTo(empty_network_configs_.get()), |
+ onc::ONC_SOURCE_USER_POLICY)); |
+ EXPECT_CALL(*certificate_handler, ImportCertificates( |
+ IsEqualTo(empty_certificates_.get()), |
+ onc::ONC_SOURCE_USER_POLICY, |
+ _)); |
+ |
+ EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); |
+ |
+ policy.Erase(GetParam()); |
+ UpdateProviderPolicy(policy); |
} |
INSTANTIATE_TEST_CASE_P( |
- NetworkConfigurationUpdaterTestInstance, |
- NetworkConfigurationUpdaterTest, |
+ NetworkConfigurationUpdaterTestWithParamInstance, |
+ NetworkConfigurationUpdaterTestWithParam, |
testing::Values(key::kDeviceOpenNetworkConfiguration, |
key::kOpenNetworkConfiguration)); |