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

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

Powered by Google App Engine
This is Rietveld 408576698