| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 | 47 |
| 48 using testing::InvokeWithoutArgs; | 48 using testing::InvokeWithoutArgs; |
| 49 using testing::Mock; | 49 using testing::Mock; |
| 50 using testing::Return; | 50 using testing::Return; |
| 51 using testing::_; | 51 using testing::_; |
| 52 | 52 |
| 53 namespace em = enterprise_management; | 53 namespace em = enterprise_management; |
| 54 | 54 |
| 55 namespace policy { | 55 namespace policy { |
| 56 | 56 |
| 57 namespace { |
| 58 |
| 57 const char kDMToken[] = "dmtoken"; | 59 const char kDMToken[] = "dmtoken"; |
| 58 const char kDeviceID[] = "deviceid"; | 60 const char kDeviceID[] = "deviceid"; |
| 59 | 61 |
| 60 const char kTestExtension[] = "kjmkgkdkpedkejedfhmfcenooemhbpbo"; | 62 const char kTestExtension[] = "kjmkgkdkpedkejedfhmfcenooemhbpbo"; |
| 61 | 63 |
| 62 const base::FilePath::CharType kTestExtensionPath[] = | 64 const base::FilePath::CharType kTestExtensionPath[] = |
| 63 FILE_PATH_LITERAL("extensions/managed_extension"); | 65 FILE_PATH_LITERAL("extensions/managed_extension"); |
| 64 | 66 |
| 65 const char kTestPolicy[] = | 67 const char kTestPolicy[] = |
| 66 "{" | 68 "{" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 77 | 79 |
| 78 const char kTestPolicy2[] = | 80 const char kTestPolicy2[] = |
| 79 "{" | 81 "{" |
| 80 " \"Another\": {" | 82 " \"Another\": {" |
| 81 " \"Value\": \"turn_it_off\"" | 83 " \"Value\": \"turn_it_off\"" |
| 82 " }" | 84 " }" |
| 83 "}"; | 85 "}"; |
| 84 | 86 |
| 85 const char kTestPolicy2JSON[] = "{\"Another\":\"turn_it_off\"}"; | 87 const char kTestPolicy2JSON[] = "{\"Another\":\"turn_it_off\"}"; |
| 86 | 88 |
| 89 #if !defined(OS_CHROMEOS) |
| 87 // Same encoding as ResourceCache does for its keys. | 90 // Same encoding as ResourceCache does for its keys. |
| 88 bool Base64Encode(const std::string& value, std::string* encoded) { | 91 bool Base64UrlEncode(const std::string& value, std::string* encoded) { |
| 89 if (value.empty()) | 92 if (value.empty()) |
| 90 return false; | 93 return false; |
| 91 base::Base64Encode(value, encoded); | 94 base::Base64Encode(value, encoded); |
| 92 base::ReplaceChars(*encoded, "+", "-", encoded); | 95 base::ReplaceChars(*encoded, "+", "-", encoded); |
| 93 base::ReplaceChars(*encoded, "/", "_", encoded); | 96 base::ReplaceChars(*encoded, "/", "_", encoded); |
| 94 return true; | 97 return true; |
| 95 } | 98 } |
| 99 #endif |
| 100 |
| 101 } // namespace |
| 96 | 102 |
| 97 class ComponentCloudPolicyTest : public ExtensionBrowserTest { | 103 class ComponentCloudPolicyTest : public ExtensionBrowserTest { |
| 98 protected: | 104 protected: |
| 99 ComponentCloudPolicyTest() {} | 105 ComponentCloudPolicyTest() {} |
| 100 virtual ~ComponentCloudPolicyTest() {} | 106 virtual ~ComponentCloudPolicyTest() {} |
| 101 | 107 |
| 102 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 108 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 103 ExtensionBrowserTest::SetUpCommandLine(command_line); | 109 ExtensionBrowserTest::SetUpCommandLine(command_line); |
| 104 #if defined(OS_CHROMEOS) | 110 #if defined(OS_CHROMEOS) |
| 105 // ExtensionBrowserTest sets the login users to a non-managed value; | 111 // ExtensionBrowserTest sets the login users to a non-managed value; |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 // get policy for components working again. | 293 // get policy for components working again. |
| 288 #if !defined(OS_CHROMEOS) | 294 #if !defined(OS_CHROMEOS) |
| 289 IN_PROC_BROWSER_TEST_F(ComponentCloudPolicyTest, SignOutAndBackIn) { | 295 IN_PROC_BROWSER_TEST_F(ComponentCloudPolicyTest, SignOutAndBackIn) { |
| 290 // Read the initial policy. | 296 // Read the initial policy. |
| 291 ExtensionTestMessageListener initial_policy_listener(kTestPolicyJSON, true); | 297 ExtensionTestMessageListener initial_policy_listener(kTestPolicyJSON, true); |
| 292 event_listener_->Reply("get-policy-Name"); | 298 event_listener_->Reply("get-policy-Name"); |
| 293 EXPECT_TRUE(initial_policy_listener.WaitUntilSatisfied()); | 299 EXPECT_TRUE(initial_policy_listener.WaitUntilSatisfied()); |
| 294 | 300 |
| 295 // Verify that the policy cache exists. | 301 // Verify that the policy cache exists. |
| 296 std::string cache_key; | 302 std::string cache_key; |
| 297 ASSERT_TRUE(Base64Encode("extension-policy", &cache_key)); | 303 ASSERT_TRUE(Base64UrlEncode("extension-policy", &cache_key)); |
| 298 std::string cache_subkey; | 304 std::string cache_subkey; |
| 299 ASSERT_TRUE(Base64Encode(kTestExtension, &cache_subkey)); | 305 ASSERT_TRUE(Base64UrlEncode(kTestExtension, &cache_subkey)); |
| 300 base::FilePath cache_path = browser()->profile()->GetPath() | 306 base::FilePath cache_path = browser()->profile()->GetPath() |
| 301 .Append(FILE_PATH_LITERAL("Policy")) | 307 .Append(FILE_PATH_LITERAL("Policy")) |
| 302 .Append(FILE_PATH_LITERAL("Components")) | 308 .Append(FILE_PATH_LITERAL("Components")) |
| 303 .AppendASCII(cache_key) | 309 .AppendASCII(cache_key) |
| 304 .AppendASCII(cache_subkey); | 310 .AppendASCII(cache_subkey); |
| 305 EXPECT_TRUE(base::PathExists(cache_path)); | 311 EXPECT_TRUE(base::PathExists(cache_path)); |
| 306 | 312 |
| 307 // Now sign-out. The policy cache should be removed, and the extension should | 313 // Now sign-out. The policy cache should be removed, and the extension should |
| 308 // get an empty policy update. | 314 // get an empty policy update. |
| 309 ExtensionTestMessageListener event_listener("event", true); | 315 ExtensionTestMessageListener event_listener("event", true); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 328 ExtensionTestMessageListener signin_policy_listener(kTestPolicyJSON, true); | 334 ExtensionTestMessageListener signin_policy_listener(kTestPolicyJSON, true); |
| 329 event_listener2.Reply("get-policy-Name"); | 335 event_listener2.Reply("get-policy-Name"); |
| 330 EXPECT_TRUE(signin_policy_listener.WaitUntilSatisfied()); | 336 EXPECT_TRUE(signin_policy_listener.WaitUntilSatisfied()); |
| 331 | 337 |
| 332 // And the cache is back. | 338 // And the cache is back. |
| 333 EXPECT_TRUE(base::PathExists(cache_path)); | 339 EXPECT_TRUE(base::PathExists(cache_path)); |
| 334 } | 340 } |
| 335 #endif | 341 #endif |
| 336 | 342 |
| 337 } // namespace policy | 343 } // namespace policy |
| OLD | NEW |