| 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 <string> | 10 #include <string> |
| 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/location.h" | 15 #include "base/location.h" |
| 16 #include "base/macros.h" | 16 #include "base/macros.h" |
| 17 #include "base/memory/ptr_util.h" | 17 #include "base/memory/ptr_util.h" |
| 18 #include "base/message_loop/message_loop.h" | |
| 19 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
| 20 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
| 20 #include "base/test/scoped_task_environment.h" |
| 21 #include "base/threading/sequenced_worker_pool.h" | 21 #include "base/threading/sequenced_worker_pool.h" |
| 22 #include "base/threading/thread_task_runner_handle.h" | 22 #include "base/threading/thread_task_runner_handle.h" |
| 23 #include "chromeos/dbus/mock_cryptohome_client.h" | 23 #include "chromeos/dbus/mock_cryptohome_client.h" |
| 24 #include "chromeos/dbus/mock_session_manager_client.h" | 24 #include "chromeos/dbus/mock_session_manager_client.h" |
| 25 #include "components/policy/core/common/cloud/cloud_policy_constants.h" | 25 #include "components/policy/core/common/cloud/cloud_policy_constants.h" |
| 26 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" | 26 #include "components/policy/core/common/cloud/mock_cloud_policy_store.h" |
| 27 #include "components/policy/core/common/cloud/policy_builder.h" | 27 #include "components/policy/core/common/cloud/policy_builder.h" |
| 28 #include "components/policy/core/common/policy_types.h" | 28 #include "components/policy/core/common/policy_types.h" |
| 29 #include "components/policy/policy_constants.h" | 29 #include "components/policy/policy_constants.h" |
| 30 #include "components/policy/proto/cloud_policy.pb.h" | 30 #include "components/policy/proto/cloud_policy.pb.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 55 "0123456789ABCDEF0123456789ABCDEF012345678@example.com"; | 55 "0123456789ABCDEF0123456789ABCDEF012345678@example.com"; |
| 56 const char kDefaultHomepage[] = "http://chromium.org"; | 56 const char kDefaultHomepage[] = "http://chromium.org"; |
| 57 | 57 |
| 58 ACTION_P2(SendSanitizedUsername, call_status, sanitized_username) { | 58 ACTION_P2(SendSanitizedUsername, call_status, sanitized_username) { |
| 59 base::ThreadTaskRunnerHandle::Get()->PostTask( | 59 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 60 FROM_HERE, base::Bind(arg1, call_status, sanitized_username)); | 60 FROM_HERE, base::Bind(arg1, call_status, sanitized_username)); |
| 61 } | 61 } |
| 62 | 62 |
| 63 class UserCloudPolicyStoreChromeOSTest : public testing::Test { | 63 class UserCloudPolicyStoreChromeOSTest : public testing::Test { |
| 64 protected: | 64 protected: |
| 65 UserCloudPolicyStoreChromeOSTest() {} | 65 UserCloudPolicyStoreChromeOSTest() |
| 66 : scoped_task_environment_( |
| 67 base::test::ScopedTaskEnvironment::MainThreadType::UI) {} |
| 66 | 68 |
| 67 void SetUp() override { | 69 void SetUp() override { |
| 68 EXPECT_CALL(cryptohome_client_, GetSanitizedUsername(cryptohome_id_, _)) | 70 EXPECT_CALL(cryptohome_client_, GetSanitizedUsername(cryptohome_id_, _)) |
| 69 .Times(AnyNumber()) | 71 .Times(AnyNumber()) |
| 70 .WillRepeatedly(SendSanitizedUsername( | 72 .WillRepeatedly(SendSanitizedUsername( |
| 71 chromeos::DBUS_METHOD_CALL_SUCCESS, kSanitizedUsername)); | 73 chromeos::DBUS_METHOD_CALL_SUCCESS, kSanitizedUsername)); |
| 72 | 74 |
| 73 ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir()); | 75 ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir()); |
| 74 store_.reset(new UserCloudPolicyStoreChromeOS( | 76 store_.reset(new UserCloudPolicyStoreChromeOS( |
| 75 &cryptohome_client_, &session_manager_client_, loop_.task_runner(), | 77 &cryptohome_client_, &session_manager_client_, |
| 76 account_id_, user_policy_dir(), false /* is_active_directory */)); | 78 base::ThreadTaskRunnerHandle::Get(), account_id_, user_policy_dir(), |
| 79 false /* is_active_directory */)); |
| 77 store_->AddObserver(&observer_); | 80 store_->AddObserver(&observer_); |
| 78 | 81 |
| 79 // Install the initial public key, so that by default the validation of | 82 // Install the initial public key, so that by default the validation of |
| 80 // the stored/loaded policy blob succeeds. | 83 // the stored/loaded policy blob succeeds. |
| 81 std::string public_key = policy_.GetPublicSigningKeyAsString(); | 84 std::string public_key = policy_.GetPublicSigningKeyAsString(); |
| 82 ASSERT_FALSE(public_key.empty()); | 85 ASSERT_FALSE(public_key.empty()); |
| 83 StoreUserPolicyKey(public_key); | 86 StoreUserPolicyKey(public_key); |
| 84 | 87 |
| 85 policy_.payload().mutable_homepagelocation()->set_value(kDefaultHomepage); | 88 policy_.payload().mutable_homepagelocation()->set_value(kDefaultHomepage); |
| 86 policy_.Build(); | 89 policy_.Build(); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 | 208 |
| 206 base::FilePath user_policy_dir() { | 209 base::FilePath user_policy_dir() { |
| 207 return tmp_dir_.GetPath().AppendASCII("var_run_user_policy"); | 210 return tmp_dir_.GetPath().AppendASCII("var_run_user_policy"); |
| 208 } | 211 } |
| 209 | 212 |
| 210 base::FilePath user_policy_key_file() { | 213 base::FilePath user_policy_key_file() { |
| 211 return user_policy_dir().AppendASCII(kSanitizedUsername) | 214 return user_policy_dir().AppendASCII(kSanitizedUsername) |
| 212 .AppendASCII("policy.pub"); | 215 .AppendASCII("policy.pub"); |
| 213 } | 216 } |
| 214 | 217 |
| 215 base::MessageLoopForUI loop_; | 218 base::test::ScopedTaskEnvironment scoped_task_environment_; |
| 216 chromeos::MockCryptohomeClient cryptohome_client_; | 219 chromeos::MockCryptohomeClient cryptohome_client_; |
| 217 chromeos::MockSessionManagerClient session_manager_client_; | 220 chromeos::MockSessionManagerClient session_manager_client_; |
| 218 UserPolicyBuilder policy_; | 221 UserPolicyBuilder policy_; |
| 219 MockCloudPolicyStoreObserver observer_; | 222 MockCloudPolicyStoreObserver observer_; |
| 220 std::unique_ptr<UserCloudPolicyStoreChromeOS> store_; | 223 std::unique_ptr<UserCloudPolicyStoreChromeOS> store_; |
| 221 const AccountId account_id_ = | 224 const AccountId account_id_ = |
| 222 AccountId::FromUserEmail(PolicyBuilder::kFakeUsername); | 225 AccountId::FromUserEmail(PolicyBuilder::kFakeUsername); |
| 223 const cryptohome::Identification cryptohome_id_ = | 226 const cryptohome::Identification cryptohome_id_ = |
| 224 cryptohome::Identification(account_id_); | 227 cryptohome::Identification(account_id_); |
| 225 | 228 |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 | 599 |
| 597 EXPECT_FALSE(store_->policy()); | 600 EXPECT_FALSE(store_->policy()); |
| 598 EXPECT_TRUE(store_->policy_map().empty()); | 601 EXPECT_TRUE(store_->policy_map().empty()); |
| 599 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); | 602 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status()); |
| 600 EXPECT_EQ(std::string(), store_->policy_signature_public_key()); | 603 EXPECT_EQ(std::string(), store_->policy_signature_public_key()); |
| 601 } | 604 } |
| 602 | 605 |
| 603 } // namespace | 606 } // namespace |
| 604 | 607 |
| 605 } // namespace policy | 608 } // namespace policy |
| OLD | NEW |