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

Side by Side Diff: chrome/browser/chromeos/policy/network_configuration_updater_impl_cros_unittest.cc

Issue 14192017: Extract certificate policy application from NetworkLibrary. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/policy/network_configuration_updater_impl_cros .h" 5 #include "chrome/browser/chromeos/policy/network_configuration_updater_impl_cros .h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/values.h"
12 #include "chrome/browser/chromeos/cros/mock_network_library.h" 13 #include "chrome/browser/chromeos/cros/mock_network_library.h"
13 #include "chrome/browser/policy/mock_configuration_policy_provider.h" 14 #include "chrome/browser/policy/mock_configuration_policy_provider.h"
14 #include "chrome/browser/policy/policy_map.h" 15 #include "chrome/browser/policy/policy_map.h"
15 #include "chrome/browser/policy/policy_service_impl.h" 16 #include "chrome/browser/policy/policy_service_impl.h"
17 #include "chromeos/network/mock_certificate_handler.h"
16 #include "chromeos/network/onc/onc_constants.h" 18 #include "chromeos/network/onc/onc_constants.h"
19 #include "chromeos/network/onc/onc_test_utils.h"
17 #include "chromeos/network/onc/onc_utils.h" 20 #include "chromeos/network/onc/onc_utils.h"
18 #include "content/public/test/test_browser_thread.h" 21 #include "content/public/test/test_browser_thread.h"
19 #include "content/public/test/test_utils.h" 22 #include "content/public/test/test_utils.h"
20 #include "net/base/test_data_directory.h" 23 #include "net/base/test_data_directory.h"
21 #include "net/cert/cert_trust_anchor_provider.h" 24 #include "net/cert/cert_trust_anchor_provider.h"
22 #include "net/cert/x509_certificate.h" 25 #include "net/cert/x509_certificate.h"
23 #include "net/test/cert_test_util.h" 26 #include "net/test/cert_test_util.h"
24 #include "policy/policy_constants.h" 27 #include "policy/policy_constants.h"
25 #include "testing/gmock/include/gmock/gmock.h" 28 #include "testing/gmock/include/gmock/gmock.h"
26 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
27 30
28 using testing::AnyNumber; 31 using testing::AnyNumber;
29 using testing::Mock; 32 using testing::Mock;
30 using testing::Ne; 33 using testing::Ne;
31 using testing::Return; 34 using testing::Return;
35 using testing::StrictMock;
32 using testing::_; 36 using testing::_;
33 37
38 namespace onc = ::chromeos::onc;
39
34 namespace policy { 40 namespace policy {
35 41
36 namespace { 42 namespace {
37 43
38 const char kFakeONC[] = "{ \"GUID\": \"1234\" }"; 44 const char kFakeONC[] =
45 "{ \"NetworkConfigurations\": ["
46 " { \"GUID\": \"{485d6076-dd44-6b6d-69787465725f5040}\","
47 " \"Type\": \"WiFi\","
48 " \"Name\": \"My WiFi Network\","
49 " \"WiFi\": {"
50 " \"SSID\": \"ssid-none\","
51 " \"Security\": \"None\" }"
52 " }"
53 " ],"
54 " \"Certificates\": ["
55 " { \"GUID\": \"{f998f760-272b-6939-4c2beffe428697ac}\","
56 " \"PKCS12\": \"abc\","
57 " \"Type\": \"Client\" }"
58 " ],"
59 " \"Type\": \"UnencryptedConfiguration\""
60 "}";
61
62 std::string ValueToString(const base::Value* value) {
63 std::stringstream str;
64 str << *value;
65 return str.str();
66 }
67
68 // Matcher to match base::Value.
69 MATCHER_P(IsEqualTo,
70 value,
71 std::string(negation ? "isn't" : "is") + " equal to " +
72 ValueToString(value)) {
73 return value->Equals(&arg);
74 }
39 75
40 ACTION_P(SetCertificateList, list) { 76 ACTION_P(SetCertificateList, list) {
41 *arg3 = list; 77 *arg2 = list;
42 return true; 78 return true;
43 } 79 }
44 80
45 } // namespace 81 } // namespace
46 82
47 // Tests of NetworkConfigurationUpdaterImplCros 83 // Tests of NetworkConfigurationUpdaterImplCros
48 class NetworkConfigurationUpdaterTest 84 class NetworkConfigurationUpdaterTest : public testing::Test {
49 : public testing::TestWithParam<const char*>{
50 protected: 85 protected:
51 NetworkConfigurationUpdaterTest() 86 NetworkConfigurationUpdaterTest()
52 : ui_thread_(content::BrowserThread::UI, &loop_), 87 : ui_thread_(content::BrowserThread::UI, &loop_),
53 io_thread_(content::BrowserThread::IO, &loop_) {} 88 io_thread_(content::BrowserThread::IO, &loop_) {}
54 89
55 virtual void SetUp() OVERRIDE { 90 virtual void SetUp() OVERRIDE {
56 EXPECT_CALL(provider_, IsInitializationComplete(_)) 91 EXPECT_CALL(provider_, IsInitializationComplete(_))
57 .WillRepeatedly(Return(true)); 92 .WillRepeatedly(Return(true));
58 provider_.Init(); 93 provider_.Init();
59 PolicyServiceImpl::Providers providers; 94 PolicyServiceImpl::Providers providers;
60 providers.push_back(&provider_); 95 providers.push_back(&provider_);
61 policy_service_.reset(new PolicyServiceImpl(providers)); 96 policy_service_.reset(new PolicyServiceImpl(providers));
97
98 empty_network_configs_.reset(new base::ListValue);
99 empty_certificates_.reset(new base::ListValue);
100
101 scoped_ptr<base::DictionaryValue> fake_toplevel_onc =
102 onc::ReadDictionaryFromJson(kFakeONC);
103
104 base::Value* network_configs_value = NULL;
105 base::ListValue* network_configs = NULL;
106 fake_toplevel_onc->RemoveWithoutPathExpansion(
107 onc::toplevel_config::kNetworkConfigurations,
108 &network_configs_value);
109 network_configs_value->GetAsList(&network_configs);
110 fake_network_configs_.reset(network_configs);
111
112 base::Value* certs_value = NULL;
113 base::ListValue* certs = NULL;
114 fake_toplevel_onc->RemoveWithoutPathExpansion(
115 onc::toplevel_config::kCertificates,
116 &certs_value);
117 certs_value->GetAsList(&certs);
118 fake_certificates_.reset(certs);
62 } 119 }
63 120
64 virtual void TearDown() OVERRIDE { 121 virtual void TearDown() OVERRIDE {
65 provider_.Shutdown(); 122 provider_.Shutdown();
66 content::RunAllPendingInMessageLoop(content::BrowserThread::IO); 123 content::RunAllPendingInMessageLoop(content::BrowserThread::IO);
67 } 124 }
68 125
69 void UpdateProviderPolicy(const PolicyMap& policy) { 126 void UpdateProviderPolicy(const PolicyMap& policy) {
70 provider_.UpdateChromePolicy(policy); 127 provider_.UpdateChromePolicy(policy);
71 base::RunLoop loop; 128 base::RunLoop loop;
72 loop.RunUntilIdle(); 129 loop.RunUntilIdle();
73 } 130 }
74 131
75 // Maps configuration policy name to corresponding ONC source. 132 // Maps configuration policy name to corresponding ONC source.
76 static chromeos::onc::ONCSource NameToONCSource( 133 static onc::ONCSource NameToONCSource(
77 const std::string& name) { 134 const std::string& name) {
78 if (name == key::kDeviceOpenNetworkConfiguration) 135 if (name == key::kDeviceOpenNetworkConfiguration)
79 return chromeos::onc::ONC_SOURCE_DEVICE_POLICY; 136 return onc::ONC_SOURCE_DEVICE_POLICY;
80 if (name == key::kOpenNetworkConfiguration) 137 if (name == key::kOpenNetworkConfiguration)
81 return chromeos::onc::ONC_SOURCE_USER_POLICY; 138 return onc::ONC_SOURCE_USER_POLICY;
82 return chromeos::onc::ONC_SOURCE_NONE; 139 return onc::ONC_SOURCE_NONE;
83 } 140 }
84 141
85 chromeos::MockNetworkLibrary network_library_; 142 scoped_ptr<base::ListValue> empty_network_configs_;
86 MockConfigurationPolicyProvider provider_; 143 scoped_ptr<base::ListValue> empty_certificates_;
144 scoped_ptr<base::ListValue> fake_network_configs_;
145 scoped_ptr<base::ListValue> fake_certificates_;
146 StrictMock<chromeos::MockNetworkLibrary> network_library_;
147 StrictMock<MockConfigurationPolicyProvider> provider_;
87 scoped_ptr<PolicyServiceImpl> policy_service_; 148 scoped_ptr<PolicyServiceImpl> policy_service_;
88 MessageLoop loop_; 149 MessageLoop loop_;
89 content::TestBrowserThread ui_thread_; 150 content::TestBrowserThread ui_thread_;
90 content::TestBrowserThread io_thread_; 151 content::TestBrowserThread io_thread_;
91 }; 152 };
92 153
93 TEST_P(NetworkConfigurationUpdaterTest, InitialUpdates) { 154 TEST_F(NetworkConfigurationUpdaterTest, PolicyIsValidatedAndRepaired) {
155 std::string onc_policy =
156 onc::test_utils::ReadTestData("toplevel_partially_invalid.onc");
157
158 scoped_ptr<base::DictionaryValue> onc_repaired =
159 onc::test_utils::ReadTestDictionary(
160 "repaired_toplevel_partially_invalid.onc");
161
162 base::ListValue* network_configs_repaired = NULL;
163 onc_repaired->GetListWithoutPathExpansion(
164 onc::toplevel_config::kNetworkConfigurations,
165 &network_configs_repaired);
166 ASSERT_TRUE(network_configs_repaired);
167
168 PolicyMap policy;
169 policy.Set(key::kOpenNetworkConfiguration, POLICY_LEVEL_MANDATORY,
170 POLICY_SCOPE_USER, Value::CreateStringValue(onc_policy));
171 UpdateProviderPolicy(policy);
172
173 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_));
174
175 // Ignore the device policy update.
176 EXPECT_CALL(network_library_, LoadOncNetworks(_, _));
177 StrictMock<chromeos::MockCertificateHandler>* certificate_handler =
178 new StrictMock<chromeos::MockCertificateHandler>();
179 EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _));
180
181 NetworkConfigurationUpdaterImplCros updater(
182 policy_service_.get(),
183 &network_library_,
184 make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler));
185 Mock::VerifyAndClearExpectations(&network_library_);
186 Mock::VerifyAndClearExpectations(&certificate_handler);
187
188 // After the user policy is initialized, we always push both policies to the
189 // NetworkLibrary. Ignore the device policy.
190 EXPECT_CALL(network_library_, LoadOncNetworks(
191 _, onc::ONC_SOURCE_DEVICE_POLICY));
192 EXPECT_CALL(network_library_, LoadOncNetworks(
193 IsEqualTo(network_configs_repaired),
194 onc::ONC_SOURCE_USER_POLICY));
195 EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _)).Times(2);
196
197 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_));
198
199 updater.OnUserPolicyInitialized();
200 }
201
202 class NetworkConfigurationUpdaterTestWithParam
203 : public NetworkConfigurationUpdaterTest,
204 public testing::WithParamInterface<const char*> {
205 };
206
207 TEST_P(NetworkConfigurationUpdaterTestWithParam, InitialUpdates) {
94 PolicyMap policy; 208 PolicyMap policy;
95 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 209 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
96 Value::CreateStringValue(kFakeONC)); 210 Value::CreateStringValue(kFakeONC));
97 UpdateProviderPolicy(policy); 211 UpdateProviderPolicy(policy);
98 212
99 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); 213 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_));
100 214
101 // Initially, only the device policy is applied. The user policy is only 215 // Initially, only the device policy is applied. The user policy is only
102 // applied after the user profile was initialized. 216 // applied after the user profile was initialized.
103 const char* device_onc = GetParam() == key::kDeviceOpenNetworkConfiguration ? 217 base::ListValue* device_networks;
104 kFakeONC : chromeos::onc::kEmptyUnencryptedConfiguration; 218 base::ListValue* device_certs;
219 base::ListValue* user_networks;
220 base::ListValue* user_certs;
221 if (GetParam() == key::kDeviceOpenNetworkConfiguration) {
222 device_networks = fake_network_configs_.get();
223 device_certs = fake_certificates_.get();
224 user_networks = empty_network_configs_.get();
225 user_certs = empty_certificates_.get();
226 } else {
227 device_networks = empty_network_configs_.get();
228 device_certs = empty_certificates_.get();
229 user_networks = fake_network_configs_.get();
230 user_certs = fake_certificates_.get();
231 }
232
105 EXPECT_CALL(network_library_, LoadOncNetworks( 233 EXPECT_CALL(network_library_, LoadOncNetworks(
106 device_onc, "", chromeos::onc::ONC_SOURCE_DEVICE_POLICY, _)); 234 IsEqualTo(device_networks), onc::ONC_SOURCE_DEVICE_POLICY));
235 StrictMock<chromeos::MockCertificateHandler>* certificate_handler =
236 new StrictMock<chromeos::MockCertificateHandler>();
237 EXPECT_CALL(*certificate_handler, ImportCertificates(
238 IsEqualTo(device_certs), onc::ONC_SOURCE_DEVICE_POLICY, _));
107 239
108 { 240 NetworkConfigurationUpdaterImplCros updater(
109 NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), 241 policy_service_.get(),
110 &network_library_); 242 &network_library_,
111 Mock::VerifyAndClearExpectations(&network_library_); 243 make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler));
244 Mock::VerifyAndClearExpectations(&network_library_);
245 Mock::VerifyAndClearExpectations(&certificate_handler);
112 246
113 // After the user policy is initialized, we always push both policies to the 247 // After the user policy is initialized, we always push both policies to the
114 // NetworkLibrary. 248 // NetworkLibrary.
115 EXPECT_CALL(network_library_, LoadOncNetworks( 249 EXPECT_CALL(network_library_, LoadOncNetworks(
116 kFakeONC, "", NameToONCSource(GetParam()), _)); 250 IsEqualTo(device_networks), onc::ONC_SOURCE_DEVICE_POLICY));
117 EXPECT_CALL(network_library_, LoadOncNetworks( 251 EXPECT_CALL(*certificate_handler, ImportCertificates(
118 chromeos::onc::kEmptyUnencryptedConfiguration, 252 IsEqualTo(device_certs), onc::ONC_SOURCE_DEVICE_POLICY, _));
119 "",
120 Ne(NameToONCSource(GetParam())),
121 _));
122 253
123 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); 254 EXPECT_CALL(network_library_, LoadOncNetworks(
255 IsEqualTo(user_networks), onc::ONC_SOURCE_USER_POLICY));
256 EXPECT_CALL(*certificate_handler, ImportCertificates(
257 IsEqualTo(user_certs), onc::ONC_SOURCE_USER_POLICY, _));
124 258
125 updater.OnUserPolicyInitialized(); 259 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_));
126 } 260
127 Mock::VerifyAndClearExpectations(&network_library_); 261 updater.OnUserPolicyInitialized();
128 } 262 }
129 263
130 TEST_P(NetworkConfigurationUpdaterTest, AllowTrustedCertificatesFromPolicy) { 264 TEST_P(NetworkConfigurationUpdaterTestWithParam,
131 { 265 AllowTrustedCertificatesFromPolicy) {
132 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_)); 266 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_));
133 267
134 const net::CertificateList empty_cert_list; 268 const net::CertificateList empty_cert_list;
135 269
136 const net::CertificateList cert_list = 270 const net::CertificateList cert_list =
137 net::CreateCertificateListFromFile(net::GetTestCertsDirectory(), 271 net::CreateCertificateListFromFile(net::GetTestCertsDirectory(),
138 "ok_cert.pem", 272 "ok_cert.pem",
139 net::X509Certificate::FORMAT_AUTO); 273 net::X509Certificate::FORMAT_AUTO);
140 ASSERT_EQ(1u, cert_list.size()); 274 ASSERT_EQ(1u, cert_list.size());
141 275
142 EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) 276 EXPECT_CALL(network_library_, LoadOncNetworks(_, _)).Times(AnyNumber());
143 .WillRepeatedly(SetCertificateList(empty_cert_list)); 277 StrictMock<chromeos::MockCertificateHandler>* certificate_handler =
144 NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), 278 new StrictMock<chromeos::MockCertificateHandler>();
145 &network_library_); 279 EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _))
146 net::CertTrustAnchorProvider* trust_provider = 280 .WillRepeatedly(SetCertificateList(empty_cert_list));
147 updater.GetCertTrustAnchorProvider(); 281 NetworkConfigurationUpdaterImplCros updater(
148 ASSERT_TRUE(trust_provider); 282 policy_service_.get(),
149 // The initial list of trust anchors is empty. 283 &network_library_,
150 content::RunAllPendingInMessageLoop(content::BrowserThread::IO); 284 make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler));
151 EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); 285 net::CertTrustAnchorProvider* trust_provider =
286 updater.GetCertTrustAnchorProvider();
287 ASSERT_TRUE(trust_provider);
288 // The initial list of trust anchors is empty.
289 content::RunAllPendingInMessageLoop(content::BrowserThread::IO);
290 EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty());
152 291
153 // Initially, certificates imported from policy don't have trust flags. 292 // Initially, certificates imported from policy don't have trust flags.
154 updater.OnUserPolicyInitialized(); 293 updater.OnUserPolicyInitialized();
155 content::RunAllPendingInMessageLoop(content::BrowserThread::IO); 294 content::RunAllPendingInMessageLoop(content::BrowserThread::IO);
156 Mock::VerifyAndClearExpectations(&network_library_); 295 Mock::VerifyAndClearExpectations(&network_library_);
157 EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty()); 296 Mock::VerifyAndClearExpectations(&certificate_handler);
297 EXPECT_TRUE(trust_provider->GetAdditionalTrustAnchors().empty());
158 298
159 // Certificates with the "Web" trust flag set should be forwarded to the 299 // Certificates with the "Web" trust flag set should be forwarded to the
160 // trust provider. 300 // trust provider.
161 EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) 301 EXPECT_CALL(network_library_, LoadOncNetworks(_, _));
162 .WillRepeatedly(SetCertificateList(empty_cert_list)); 302 EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _))
163 chromeos::onc::ONCSource current_source = NameToONCSource(GetParam()); 303 .WillRepeatedly(SetCertificateList(empty_cert_list));
164 EXPECT_CALL(network_library_, LoadOncNetworks(_, _, current_source, _)) 304 onc::ONCSource current_source = NameToONCSource(GetParam());
165 .WillRepeatedly(SetCertificateList(cert_list)); 305 EXPECT_CALL(network_library_, LoadOncNetworks(_, current_source));
166 updater.set_allow_trusted_certificates_from_policy(true); 306 EXPECT_CALL(*certificate_handler, ImportCertificates(_, current_source, _))
167 // Trigger a policy update. 307 .WillRepeatedly(SetCertificateList(cert_list));
168 PolicyMap policy; 308 updater.set_allow_trusted_certificates_from_policy(true);
169 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 309 // Trigger a policy update.
170 base::Value::CreateStringValue(kFakeONC)); 310 PolicyMap policy;
171 UpdateProviderPolicy(policy); 311 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
172 Mock::VerifyAndClearExpectations(&network_library_); 312 base::Value::CreateStringValue(kFakeONC));
313 UpdateProviderPolicy(policy);
314 Mock::VerifyAndClearExpectations(&network_library_);
315 Mock::VerifyAndClearExpectations(&certificate_handler);
173 316
174 // Certificates are only provided as trust anchors if they come from user 317 // Certificates are only provided as trust anchors if they come from user
175 // policy. 318 // policy.
176 size_t expected_certs = 0u; 319 size_t expected_certs = 0u;
177 if (GetParam() == key::kOpenNetworkConfiguration) 320 if (GetParam() == key::kOpenNetworkConfiguration)
178 expected_certs = 1u; 321 expected_certs = 1u;
179 EXPECT_EQ(expected_certs, 322 EXPECT_EQ(expected_certs,
180 trust_provider->GetAdditionalTrustAnchors().size()); 323 trust_provider->GetAdditionalTrustAnchors().size());
181 324
182 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); 325 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_));
183 }
184 Mock::VerifyAndClearExpectations(&network_library_);
185 } 326 }
186 327
187 TEST_P(NetworkConfigurationUpdaterTest, PolicyChange) { 328 TEST_P(NetworkConfigurationUpdaterTestWithParam, PolicyChange) {
188 { 329 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_));
189 EXPECT_CALL(network_library_, AddNetworkProfileObserver(_));
190 330
191 // Ignore the initial updates. 331 // Ignore the initial updates.
192 EXPECT_CALL(network_library_, LoadOncNetworks(_, _, _, _)) 332 EXPECT_CALL(network_library_, LoadOncNetworks(_, _))
193 .Times(AnyNumber()); 333 .Times(AnyNumber());
194 NetworkConfigurationUpdaterImplCros updater(policy_service_.get(), 334 StrictMock<chromeos::MockCertificateHandler>* certificate_handler =
195 &network_library_); 335 new StrictMock<chromeos::MockCertificateHandler>();
196 updater.OnUserPolicyInitialized(); 336 EXPECT_CALL(*certificate_handler, ImportCertificates(_, _, _))
197 Mock::VerifyAndClearExpectations(&network_library_); 337 .Times(AnyNumber());
338 NetworkConfigurationUpdaterImplCros updater(
339 policy_service_.get(),
340 &network_library_,
341 make_scoped_ptr<chromeos::CertificateHandler>(certificate_handler));
342 updater.OnUserPolicyInitialized();
343 Mock::VerifyAndClearExpectations(&network_library_);
344 Mock::VerifyAndClearExpectations(&certificate_handler);
198 345
199 // We should update if policy changes. 346 // We should update if policy changes.
200 EXPECT_CALL(network_library_, LoadOncNetworks( 347 EXPECT_CALL(network_library_, LoadOncNetworks(
201 kFakeONC, "", NameToONCSource(GetParam()), _)); 348 IsEqualTo(fake_network_configs_.get()), NameToONCSource(GetParam())));
349 EXPECT_CALL(*certificate_handler, ImportCertificates(
350 IsEqualTo(fake_certificates_.get()), NameToONCSource(GetParam()), _));
202 351
203 // In the current implementation, we always apply both policies. 352 // In the current implementation, we always apply both policies.
204 EXPECT_CALL(network_library_, LoadOncNetworks( 353 EXPECT_CALL(network_library_, LoadOncNetworks(
205 chromeos::onc::kEmptyUnencryptedConfiguration, 354 IsEqualTo(empty_network_configs_.get()),
206 "", 355 Ne(NameToONCSource(GetParam()))));
207 Ne(NameToONCSource(GetParam())), 356 EXPECT_CALL(*certificate_handler, ImportCertificates(
208 _)); 357 IsEqualTo(empty_certificates_.get()),
358 Ne(NameToONCSource(GetParam())),
359 _));
209 360
210 PolicyMap policy; 361 PolicyMap policy;
211 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, 362 policy.Set(GetParam(), POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
212 Value::CreateStringValue(kFakeONC)); 363 Value::CreateStringValue(kFakeONC));
213 UpdateProviderPolicy(policy); 364 UpdateProviderPolicy(policy);
214 Mock::VerifyAndClearExpectations(&network_library_); 365 Mock::VerifyAndClearExpectations(&network_library_);
366 Mock::VerifyAndClearExpectations(&certificate_handler);
215 367
216 // Another update is expected if the policy goes away. In the current 368 // Another update is expected if the policy goes away. In the current
217 // implementation, we always apply both policies. 369 // implementation, we always apply both policies.
218 EXPECT_CALL(network_library_, LoadOncNetworks( 370 EXPECT_CALL(network_library_, LoadOncNetworks(
219 chromeos::onc::kEmptyUnencryptedConfiguration, "", 371 IsEqualTo(empty_network_configs_.get()),
220 chromeos::onc::ONC_SOURCE_DEVICE_POLICY, _)); 372 onc::ONC_SOURCE_DEVICE_POLICY));
373 EXPECT_CALL(*certificate_handler, ImportCertificates(
374 IsEqualTo(empty_certificates_.get()),
375 onc::ONC_SOURCE_DEVICE_POLICY,
376 _));
221 377
222 EXPECT_CALL(network_library_, LoadOncNetworks( 378 EXPECT_CALL(network_library_, LoadOncNetworks(
223 chromeos::onc::kEmptyUnencryptedConfiguration, "", 379 IsEqualTo(empty_network_configs_.get()),
224 chromeos::onc::ONC_SOURCE_USER_POLICY, _)); 380 onc::ONC_SOURCE_USER_POLICY));
381 EXPECT_CALL(*certificate_handler, ImportCertificates(
382 IsEqualTo(empty_certificates_.get()),
383 onc::ONC_SOURCE_USER_POLICY,
384 _));
225 385
226 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_)); 386 EXPECT_CALL(network_library_, RemoveNetworkProfileObserver(_));
227 387
228 policy.Erase(GetParam()); 388 policy.Erase(GetParam());
229 UpdateProviderPolicy(policy); 389 UpdateProviderPolicy(policy);
230 }
231 Mock::VerifyAndClearExpectations(&network_library_);
232 } 390 }
233 391
234 INSTANTIATE_TEST_CASE_P( 392 INSTANTIATE_TEST_CASE_P(
235 NetworkConfigurationUpdaterTestInstance, 393 NetworkConfigurationUpdaterTestWithParamInstance,
236 NetworkConfigurationUpdaterTest, 394 NetworkConfigurationUpdaterTestWithParam,
237 testing::Values(key::kDeviceOpenNetworkConfiguration, 395 testing::Values(key::kDeviceOpenNetworkConfiguration,
238 key::kOpenNetworkConfiguration)); 396 key::kOpenNetworkConfiguration));
239 397
240 } // namespace policy 398 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698