OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <memory> | 5 #include <memory> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/dir_reader_posix.h" | 8 #include "base/files/dir_reader_posix.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 EXPECT_TRUE(connector->GetDeviceCloudPolicyInitializer()); | 79 EXPECT_TRUE(connector->GetDeviceCloudPolicyInitializer()); |
80 } | 80 } |
81 | 81 |
82 // This class is the base class for the tests of the behavior regarding | 82 // This class is the base class for the tests of the behavior regarding |
83 // extensions installed on the signin screen (which is generally possible only | 83 // extensions installed on the signin screen (which is generally possible only |
84 // through an admin policy, but the tests may install the extensions directly | 84 // through an admin policy, but the tests may install the extensions directly |
85 // for the test purposes). | 85 // for the test purposes). |
86 class SigninExtensionsDeviceCloudPolicyBrowserTestBase | 86 class SigninExtensionsDeviceCloudPolicyBrowserTestBase |
87 : public DevicePolicyCrosBrowserTest { | 87 : public DevicePolicyCrosBrowserTest { |
88 protected: | 88 protected: |
89 static constexpr const char* kTestExtensionId = | 89 constexpr static const char* kTestExtensionId = |
90 "baogpbmpccplckhhehfipokjaflkmbno"; | 90 "baogpbmpccplckhhehfipokjaflkmbno"; |
91 static constexpr const char* kTestExtensionSourceDir = | 91 constexpr static const char* kTestExtensionSourceDir = |
92 "extensions/signin_screen_managed_storage"; | 92 "extensions/signin_screen_managed_storage"; |
93 static constexpr const char* kTestExtensionVersion = "1.0"; | 93 constexpr static const char* kTestExtensionVersion = "1.0"; |
94 static constexpr const char* kTestExtensionTestPage = "test.html"; | 94 constexpr static const char* kTestExtensionTestPage = "test.html"; |
95 static constexpr const char* kFakePolicyUrl = | 95 constexpr static const char* kFakePolicyUrl = |
96 "http://example.org/test-policy.json"; | 96 "http://example.org/test-policy.json"; |
97 static constexpr const char* kFakePolicy = | 97 constexpr static const char* kFakePolicy = |
98 "{\"string-policy\": {\"Value\": \"value\"}}"; | 98 "{\"string-policy\": {\"Value\": \"value\"}}"; |
99 static constexpr int kFakePolicyPublicKeyVersion = 1; | 99 constexpr static const char* kPolicyProtoCacheKey = "signinextension-policy"; |
100 static constexpr const char* kPolicyProtoCacheKey = "signinextension-policy"; | 100 constexpr static const char* kPolicyDataCacheKey = |
101 static constexpr const char* kPolicyDataCacheKey = | |
102 "signinextension-policy-data"; | 101 "signinextension-policy-data"; |
103 | 102 |
104 SigninExtensionsDeviceCloudPolicyBrowserTestBase() {} | 103 SigninExtensionsDeviceCloudPolicyBrowserTestBase() {} |
105 | 104 |
106 void SetUpCommandLine(base::CommandLine* command_line) override { | 105 void SetUpCommandLine(base::CommandLine* command_line) override { |
107 DevicePolicyCrosBrowserTest::SetUpCommandLine(command_line); | 106 DevicePolicyCrosBrowserTest::SetUpCommandLine(command_line); |
108 command_line->AppendSwitch(chromeos::switches::kLoginManager); | 107 command_line->AppendSwitch(chromeos::switches::kLoginManager); |
109 command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests); | 108 command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests); |
110 // This flag is required for the successful installation of the test | 109 // This flag is required for the successful installation of the test |
111 // extension into the signin profile, due to some checks in | 110 // extension into the signin profile, due to some checks in |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 148 |
150 static const extensions::Extension* GetTestExtension() { | 149 static const extensions::Extension* GetTestExtension() { |
151 extensions::ExtensionRegistry* registry = | 150 extensions::ExtensionRegistry* registry = |
152 extensions::ExtensionRegistry::Get(GetSigninProfile()); | 151 extensions::ExtensionRegistry::Get(GetSigninProfile()); |
153 const extensions::Extension* extension = | 152 const extensions::Extension* extension = |
154 registry->enabled_extensions().GetByID(kTestExtensionId); | 153 registry->enabled_extensions().GetByID(kTestExtensionId); |
155 EXPECT_TRUE(extension); | 154 EXPECT_TRUE(extension); |
156 return extension; | 155 return extension; |
157 } | 156 } |
158 | 157 |
159 static enterprise_management::PolicyFetchResponse BuildTestComponentPolicy() { | 158 enterprise_management::PolicyFetchResponse BuildTestComponentPolicy() { |
160 ComponentPolicyBuilder builder; | 159 ComponentPolicyBuilder builder; |
161 MakeTestComponentPolicyBuilder(&builder); | 160 MakeTestComponentPolicyBuilder(&builder); |
162 return builder.policy(); | 161 return builder.policy(); |
163 } | 162 } |
164 | 163 |
165 static enterprise_management::ExternalPolicyData | 164 enterprise_management::ExternalPolicyData BuildTestComponentPolicyPayload() { |
166 BuildTestComponentPolicyPayload() { | |
167 ComponentPolicyBuilder builder; | 165 ComponentPolicyBuilder builder; |
168 MakeTestComponentPolicyBuilder(&builder); | 166 MakeTestComponentPolicyBuilder(&builder); |
169 return builder.payload(); | 167 return builder.payload(); |
170 } | 168 } |
171 | 169 |
172 private: | 170 private: |
173 void SetFakeDevicePolicy() { | 171 void SetFakeDevicePolicy() { |
174 device_policy()->policy_data().set_username(PolicyBuilder::kFakeUsername); | 172 device_policy()->policy_data().set_username(PolicyBuilder::kFakeUsername); |
175 device_policy()->policy_data().set_public_key_version( | 173 device_policy()->SetDefaultSigningKey(); |
176 kFakePolicyPublicKeyVersion); | |
177 device_policy()->Build(); | 174 device_policy()->Build(); |
178 session_manager_client()->set_device_policy(device_policy()->GetBlob()); | 175 session_manager_client()->set_device_policy(device_policy()->GetBlob()); |
179 } | 176 } |
180 | 177 |
181 static void MakeTestComponentPolicyBuilder(ComponentPolicyBuilder* builder) { | 178 void MakeTestComponentPolicyBuilder(ComponentPolicyBuilder* builder) { |
182 builder->policy_data().set_policy_type( | 179 builder->policy_data().set_policy_type( |
183 dm_protocol::kChromeSigninExtensionPolicyType); | 180 dm_protocol::kChromeSigninExtensionPolicyType); |
184 builder->policy_data().set_username(PolicyBuilder::kFakeUsername); | 181 builder->policy_data().set_username( |
| 182 device_policy()->policy_data().username()); |
185 builder->policy_data().set_settings_entity_id(kTestExtensionId); | 183 builder->policy_data().set_settings_entity_id(kTestExtensionId); |
186 builder->policy_data().set_public_key_version(kFakePolicyPublicKeyVersion); | 184 builder->policy_data().set_public_key_version(1); |
187 builder->payload().set_download_url(kFakePolicyUrl); | 185 builder->payload().set_download_url(kFakePolicyUrl); |
188 builder->payload().set_secure_hash(crypto::SHA256HashString(kFakePolicy)); | 186 builder->payload().set_secure_hash(crypto::SHA256HashString(kFakePolicy)); |
| 187 builder->SetDefaultSigningKey(); |
189 builder->Build(); | 188 builder->Build(); |
190 } | 189 } |
191 | 190 |
192 DISALLOW_COPY_AND_ASSIGN(SigninExtensionsDeviceCloudPolicyBrowserTestBase); | 191 DISALLOW_COPY_AND_ASSIGN(SigninExtensionsDeviceCloudPolicyBrowserTestBase); |
193 }; | 192 }; |
194 | 193 |
195 // This class tests whether the component policy is successfully processed and | 194 // This class tests whether the component policy is successfully processed and |
196 // passed to the extension that is installed into the signin profile after the | 195 // passed to the extension that is installed into the signin profile after the |
197 // initialization finishes. | 196 // initialization finishes. |
198 // | 197 // |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 net::URLRequestStatus::SUCCESS); | 271 net::URLRequestStatus::SUCCESS); |
273 } | 272 } |
274 | 273 |
275 LocalPolicyTestServer policy_test_server_; | 274 LocalPolicyTestServer policy_test_server_; |
276 net::URLFetcherImplFactory fetcher_impl_factory_; | 275 net::URLFetcherImplFactory fetcher_impl_factory_; |
277 net::FakeURLFetcherFactory fetcher_factory_; | 276 net::FakeURLFetcherFactory fetcher_factory_; |
278 base::FilePath component_policy_cache_dir_; | 277 base::FilePath component_policy_cache_dir_; |
279 std::unique_ptr<base::AutoReset<bool>> signin_policy_provided_disabler_; | 278 std::unique_ptr<base::AutoReset<bool>> signin_policy_provided_disabler_; |
280 }; | 279 }; |
281 | 280 |
| 281 // DISABLED: see crbug.com/666720, crbug.com/644304. TODO(emaxx): Enable the |
| 282 // test back. |
282 IN_PROC_BROWSER_TEST_F(SigninExtensionsDeviceCloudPolicyBrowserTest, | 283 IN_PROC_BROWSER_TEST_F(SigninExtensionsDeviceCloudPolicyBrowserTest, |
283 InstallAndRunInWindow) { | 284 DISABLED_InstallAndRunInWindow) { |
284 const extensions::Extension* extension = InstallAndLoadTestExtension(); | 285 const extensions::Extension* extension = InstallAndLoadTestExtension(); |
285 ASSERT_TRUE(extension); | 286 ASSERT_TRUE(extension); |
286 Browser* browser = CreateBrowser(GetSigninProfile()); | 287 Browser* browser = CreateBrowser(GetSigninProfile()); |
287 extensions::ResultCatcher result_catcher; | 288 extensions::ResultCatcher result_catcher; |
288 ui_test_utils::NavigateToURL( | 289 ui_test_utils::NavigateToURL( |
289 browser, extension->GetResourceURL(kTestExtensionTestPage)); | 290 browser, extension->GetResourceURL(kTestExtensionTestPage)); |
290 EXPECT_TRUE(result_catcher.GetNextResult()); | 291 EXPECT_TRUE(result_catcher.GetNextResult()); |
291 CloseBrowserSynchronously(browser); | 292 CloseBrowserSynchronously(browser); |
292 } | 293 } |
293 | 294 |
294 // This class tests that the cached component policy is successfully loaded and | 295 // This class tests that the cached component policy is successfully loaded and |
295 // passed to the extension that is already installed into the signin profile. | 296 // passed to the extension that is already installed into the signin profile. |
296 // | 297 // |
297 // To accomplish this, the class prefills the signin profile with, first, the | 298 // To accomplish this, the class prefills the signin profile with, first, the |
298 // installed test extension, and, second, with the cached component policy. | 299 // installed test extension, and, second, with the cached component policy. |
299 class PreinstalledSigninExtensionsDeviceCloudPolicyBrowserTest | 300 class PreinstalledSigninExtensionsDeviceCloudPolicyBrowserTest |
300 : public SigninExtensionsDeviceCloudPolicyBrowserTestBase { | 301 : public SigninExtensionsDeviceCloudPolicyBrowserTestBase { |
301 protected: | 302 protected: |
302 static constexpr const char* kFakeProfileSourceDir = | 303 constexpr static const char* kFakeProfileSourceDir = |
303 "extensions/profiles/signin_screen_managed_storage"; | 304 "extensions/profiles/signin_screen_managed_storage"; |
304 | 305 |
| 306 std::unique_ptr<base::AutoReset<bool>> signin_policy_provided_disabler_; |
| 307 |
305 bool SetUpUserDataDirectory() override { | 308 bool SetUpUserDataDirectory() override { |
306 PrefillSigninProfile(); | 309 PrefillSigninProfile(); |
307 PrefillComponentPolicyCache(); | 310 PrefillComponentPolicyCache(); |
308 return DevicePolicyCrosBrowserTest::SetUpUserDataDirectory(); | 311 return DevicePolicyCrosBrowserTest::SetUpUserDataDirectory(); |
309 } | 312 } |
310 | 313 |
311 void SetUpInProcessBrowserTestFixture() override { | 314 void SetUpInProcessBrowserTestFixture() override { |
312 SigninExtensionsDeviceCloudPolicyBrowserTestBase:: | 315 SigninExtensionsDeviceCloudPolicyBrowserTestBase:: |
313 SetUpInProcessBrowserTestFixture(); | 316 SetUpInProcessBrowserTestFixture(); |
314 signin_policy_provided_disabler_ = | 317 signin_policy_provided_disabler_ = |
315 chromeos::GetScopedSigninScreenPolicyProviderDisablerForTesting(); | 318 chromeos::GetScopedSigninScreenPolicyProviderDisablerForTesting(); |
316 } | 319 } |
317 | 320 |
318 private: | |
319 static void PrefillSigninProfile() { | 321 static void PrefillSigninProfile() { |
320 base::FilePath profile_source_path; | 322 base::FilePath profile_source_path; |
321 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &profile_source_path)); | 323 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &profile_source_path)); |
322 profile_source_path = profile_source_path.AppendASCII(kFakeProfileSourceDir) | 324 profile_source_path = profile_source_path.AppendASCII(kFakeProfileSourceDir) |
323 .AppendASCII(chrome::kInitialProfile); | 325 .AppendASCII(chrome::kInitialProfile); |
324 | 326 |
325 base::FilePath profile_target_path; | 327 base::FilePath profile_target_path; |
326 EXPECT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &profile_target_path)); | 328 EXPECT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &profile_target_path)); |
327 | 329 |
328 EXPECT_TRUE( | 330 EXPECT_TRUE( |
(...skipping 16 matching lines...) Expand all Loading... |
345 base::FilePath cache_dir; | 347 base::FilePath cache_dir; |
346 EXPECT_TRUE(PathService::Get(chromeos::DIR_SIGNIN_PROFILE_COMPONENT_POLICY, | 348 EXPECT_TRUE(PathService::Get(chromeos::DIR_SIGNIN_PROFILE_COMPONENT_POLICY, |
347 &cache_dir)); | 349 &cache_dir)); |
348 | 350 |
349 ResourceCache cache(cache_dir, new base::NullTaskRunner); | 351 ResourceCache cache(cache_dir, new base::NullTaskRunner); |
350 EXPECT_TRUE(cache.Store(kPolicyProtoCacheKey, kTestExtensionId, | 352 EXPECT_TRUE(cache.Store(kPolicyProtoCacheKey, kTestExtensionId, |
351 BuildTestComponentPolicy().SerializeAsString())); | 353 BuildTestComponentPolicy().SerializeAsString())); |
352 EXPECT_TRUE( | 354 EXPECT_TRUE( |
353 cache.Store(kPolicyDataCacheKey, kTestExtensionId, kFakePolicy)); | 355 cache.Store(kPolicyDataCacheKey, kTestExtensionId, kFakePolicy)); |
354 } | 356 } |
355 | |
356 std::unique_ptr<base::AutoReset<bool>> signin_policy_provided_disabler_; | |
357 }; | 357 }; |
358 | 358 |
| 359 // DISABLED: see crbug.com/666720, crbug.com/644304. TODO(emaxx): Enable the |
| 360 // test back. |
359 IN_PROC_BROWSER_TEST_F(PreinstalledSigninExtensionsDeviceCloudPolicyBrowserTest, | 361 IN_PROC_BROWSER_TEST_F(PreinstalledSigninExtensionsDeviceCloudPolicyBrowserTest, |
360 OfflineStart) { | 362 DISABLED_OfflineStart) { |
361 const extensions::Extension* extension = GetTestExtension(); | 363 const extensions::Extension* extension = GetTestExtension(); |
362 ASSERT_TRUE(extension); | 364 ASSERT_TRUE(extension); |
363 Browser* browser = CreateBrowser(GetSigninProfile()); | 365 Browser* browser = CreateBrowser(GetSigninProfile()); |
364 extensions::ResultCatcher result_catcher; | 366 extensions::ResultCatcher result_catcher; |
365 ui_test_utils::NavigateToURL( | 367 ui_test_utils::NavigateToURL( |
366 browser, extension->GetResourceURL(kTestExtensionTestPage)); | 368 browser, extension->GetResourceURL(kTestExtensionTestPage)); |
367 EXPECT_TRUE(result_catcher.GetNextResult()); | 369 EXPECT_TRUE(result_catcher.GetNextResult()); |
368 CloseBrowserSynchronously(browser); | 370 CloseBrowserSynchronously(browser); |
369 } | 371 } |
370 | 372 |
371 } // namespace policy | 373 } // namespace policy |
OLD | NEW |