OLD | NEW |
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/user_cloud_policy_store_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/user_cloud_policy_store_chromeos.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/files/file_util.h" | 13 #include "base/files/file_util.h" |
14 #include "base/files/scoped_temp_dir.h" | 14 #include "base/files/scoped_temp_dir.h" |
15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/memory/ptr_util.h" |
16 #include "base/message_loop/message_loop.h" | 17 #include "base/message_loop/message_loop.h" |
17 #include "base/threading/sequenced_worker_pool.h" | 18 #include "base/threading/sequenced_worker_pool.h" |
18 #include "chromeos/dbus/mock_cryptohome_client.h" | 19 #include "chromeos/dbus/mock_cryptohome_client.h" |
19 #include "chromeos/dbus/mock_session_manager_client.h" | 20 #include "chromeos/dbus/mock_session_manager_client.h" |
20 #include "components/policy/core/common/cloud/cloud_policy_constants.h" | 21 #include "components/policy/core/common/cloud/cloud_policy_constants.h" |
21 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" | 22 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" |
22 #include "components/policy/core/common/cloud/policy_builder.h" | 23 #include "components/policy/core/common/cloud/policy_builder.h" |
23 #include "components/policy/core/common/policy_types.h" | 24 #include "components/policy/core/common/policy_types.h" |
24 #include "policy/policy_constants.h" | 25 #include "policy/policy_constants.h" |
25 #include "policy/proto/cloud_policy.pb.h" | 26 #include "policy/proto/cloud_policy.pb.h" |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 RunUntilIdle(); | 112 RunUntilIdle(); |
112 } | 113 } |
113 | 114 |
114 // Verifies that store_->policy_map() has the HomepageLocation entry with | 115 // Verifies that store_->policy_map() has the HomepageLocation entry with |
115 // the |expected_value|. | 116 // the |expected_value|. |
116 void VerifyPolicyMap(const char* expected_value) { | 117 void VerifyPolicyMap(const char* expected_value) { |
117 EXPECT_EQ(1U, store_->policy_map().size()); | 118 EXPECT_EQ(1U, store_->policy_map().size()); |
118 const PolicyMap::Entry* entry = | 119 const PolicyMap::Entry* entry = |
119 store_->policy_map().Get(key::kHomepageLocation); | 120 store_->policy_map().Get(key::kHomepageLocation); |
120 ASSERT_TRUE(entry); | 121 ASSERT_TRUE(entry); |
121 EXPECT_TRUE(base::StringValue(expected_value).Equals(entry->value)); | 122 EXPECT_TRUE(base::StringValue(expected_value).Equals(entry->value.get())); |
122 } | 123 } |
123 | 124 |
124 void StoreUserPolicyKey(const std::vector<uint8_t>& public_key) { | 125 void StoreUserPolicyKey(const std::vector<uint8_t>& public_key) { |
125 ASSERT_TRUE(base::CreateDirectory(user_policy_key_file().DirName())); | 126 ASSERT_TRUE(base::CreateDirectory(user_policy_key_file().DirName())); |
126 ASSERT_TRUE( | 127 ASSERT_TRUE( |
127 base::WriteFile(user_policy_key_file(), | 128 base::WriteFile(user_policy_key_file(), |
128 reinterpret_cast<const char*>(public_key.data()), | 129 reinterpret_cast<const char*>(public_key.data()), |
129 public_key.size())); | 130 public_key.size())); |
130 } | 131 } |
131 | 132 |
(...skipping 13 matching lines...) Expand all Loading... |
145 .WillOnce(SaveArg<2>(&store_callback)); | 146 .WillOnce(SaveArg<2>(&store_callback)); |
146 store_->Store(policy_.policy()); | 147 store_->Store(policy_.policy()); |
147 RunUntilIdle(); | 148 RunUntilIdle(); |
148 Mock::VerifyAndClearExpectations(&session_manager_client_); | 149 Mock::VerifyAndClearExpectations(&session_manager_client_); |
149 ASSERT_FALSE(store_callback.is_null()); | 150 ASSERT_FALSE(store_callback.is_null()); |
150 | 151 |
151 // The new policy shouldn't be present yet. | 152 // The new policy shouldn't be present yet. |
152 PolicyMap previous_policy; | 153 PolicyMap previous_policy; |
153 EXPECT_EQ(previous_value != NULL, store_->policy() != NULL); | 154 EXPECT_EQ(previous_value != NULL, store_->policy() != NULL); |
154 if (previous_value) { | 155 if (previous_value) { |
155 previous_policy.Set(key::kHomepageLocation, | 156 previous_policy.Set( |
156 POLICY_LEVEL_MANDATORY, | 157 key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
157 POLICY_SCOPE_USER, | 158 POLICY_SOURCE_CLOUD, |
158 POLICY_SOURCE_CLOUD, | 159 base::WrapUnique(new base::StringValue(previous_value)), nullptr); |
159 new base::StringValue(previous_value), NULL); | |
160 } | 160 } |
161 EXPECT_TRUE(previous_policy.Equals(store_->policy_map())); | 161 EXPECT_TRUE(previous_policy.Equals(store_->policy_map())); |
162 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); | 162 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status()); |
163 | 163 |
164 // Store the new public key so that the validation after the retrieve | 164 // Store the new public key so that the validation after the retrieve |
165 // operation completes can verify the signature. | 165 // operation completes can verify the signature. |
166 if (new_public_key) | 166 if (new_public_key) |
167 StoreUserPolicyKey(*new_public_key); | 167 StoreUserPolicyKey(*new_public_key); |
168 | 168 |
169 // Let the store operation complete. | 169 // Let the store operation complete. |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 Mock::VerifyAndClearExpectations(&cryptohome_client_); | 663 Mock::VerifyAndClearExpectations(&cryptohome_client_); |
664 | 664 |
665 EXPECT_FALSE(store_->policy()); | 665 EXPECT_FALSE(store_->policy()); |
666 EXPECT_TRUE(store_->policy_map().empty()); | 666 EXPECT_TRUE(store_->policy_map().empty()); |
667 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); | 667 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); |
668 } | 668 } |
669 | 669 |
670 } // namespace | 670 } // namespace |
671 | 671 |
672 } // namespace policy | 672 } // namespace policy |
OLD | NEW |