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

Side by Side Diff: chrome/browser/policy/device_cloud_policy_store_chromeos_unittest.cc

Issue 12189011: Split up chrome/browser/policy subdirectory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, add chrome/browser/chromeos/policy/OWNERS Created 7 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/policy/device_cloud_policy_store_chromeos.h"
6
7 #include <vector>
8
9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
13 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
14 #include "chrome/browser/policy/enterprise_install_attributes.h"
15 #include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
16 #include "policy/policy_constants.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18
19 namespace policy {
20
21 class DeviceCloudPolicyStoreChromeOSTest
22 : public chromeos::DeviceSettingsTestBase {
23 protected:
24 DeviceCloudPolicyStoreChromeOSTest()
25 : cryptohome_library_(chromeos::CryptohomeLibrary::GetImpl(true)),
26 install_attributes_(
27 new EnterpriseInstallAttributes(cryptohome_library_.get())),
28 store_(new DeviceCloudPolicyStoreChromeOS(&device_settings_service_,
29 install_attributes_.get())) {}
30
31 virtual void SetUp() OVERRIDE {
32 DeviceSettingsTestBase::SetUp();
33
34 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS,
35 install_attributes_->LockDevice(PolicyBuilder::kFakeUsername,
36 DEVICE_MODE_ENTERPRISE,
37 PolicyBuilder::kFakeDeviceId));
38 }
39
40 void ExpectFailure(CloudPolicyStore::Status expected_status) {
41 EXPECT_EQ(expected_status, store_->status());
42 EXPECT_TRUE(store_->is_initialized());
43 EXPECT_FALSE(store_->has_policy());
44 EXPECT_FALSE(store_->is_managed());
45 }
46
47 void ExpectSuccess() {
48 EXPECT_EQ(CloudPolicyStore::STATUS_OK, store_->status());
49 EXPECT_TRUE(store_->is_initialized());
50 EXPECT_TRUE(store_->has_policy());
51 EXPECT_TRUE(store_->is_managed());
52 EXPECT_TRUE(store_->policy());
53 base::FundamentalValue expected(false);
54 EXPECT_TRUE(
55 base::Value::Equals(&expected,
56 store_->policy_map().GetValue(
57 key::kDeviceMetricsReportingEnabled)));
58 }
59
60 void PrepareExistingPolicy() {
61 store_->Load();
62 FlushDeviceSettings();
63 ExpectSuccess();
64
65 device_policy_.set_new_signing_key(scoped_ptr<crypto::RSAPrivateKey>());
66 device_policy_.Build();
67 }
68
69 void PrepareNewSigningKey() {
70 device_policy_.set_new_signing_key(
71 PolicyBuilder::CreateTestNewSigningKey());
72 device_policy_.Build();
73 owner_key_util_->SetPublicKeyFromPrivateKey(
74 device_policy_.new_signing_key());
75 }
76
77 void ResetToNonEnterprise() {
78 store_.reset();
79 cryptohome_library_->InstallAttributesSet("enterprise.owned",
80 std::string());
81 install_attributes_.reset(
82 new EnterpriseInstallAttributes(cryptohome_library_.get()));
83 store_.reset(new DeviceCloudPolicyStoreChromeOS(&device_settings_service_,
84 install_attributes_.get()));
85 }
86
87 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_library_;
88 scoped_ptr<EnterpriseInstallAttributes> install_attributes_;
89
90 scoped_ptr<DeviceCloudPolicyStoreChromeOS> store_;
91
92 private:
93 DISALLOW_COPY_AND_ASSIGN(DeviceCloudPolicyStoreChromeOSTest);
94 };
95
96 TEST_F(DeviceCloudPolicyStoreChromeOSTest, LoadNoKey) {
97 owner_key_util_->Clear();
98 store_->Load();
99 FlushDeviceSettings();
100 ExpectFailure(CloudPolicyStore::STATUS_BAD_STATE);
101 }
102
103 TEST_F(DeviceCloudPolicyStoreChromeOSTest, LoadNoPolicy) {
104 device_settings_test_helper_.set_policy_blob(std::string());
105 store_->Load();
106 FlushDeviceSettings();
107 ExpectFailure(CloudPolicyStore::STATUS_LOAD_ERROR);
108 }
109
110 TEST_F(DeviceCloudPolicyStoreChromeOSTest, LoadNotEnterprise) {
111 ResetToNonEnterprise();
112 store_->Load();
113 FlushDeviceSettings();
114 ExpectFailure(CloudPolicyStore::STATUS_BAD_STATE);
115 }
116
117 TEST_F(DeviceCloudPolicyStoreChromeOSTest, LoadSuccess) {
118 store_->Load();
119 FlushDeviceSettings();
120 ExpectSuccess();
121 }
122
123 TEST_F(DeviceCloudPolicyStoreChromeOSTest, StoreSuccess) {
124 PrepareExistingPolicy();
125 store_->Store(device_policy_.policy());
126 FlushDeviceSettings();
127 ExpectSuccess();
128 }
129
130 TEST_F(DeviceCloudPolicyStoreChromeOSTest, StoreNoSignature) {
131 PrepareExistingPolicy();
132 device_policy_.policy().clear_policy_data_signature();
133 store_->Store(device_policy_.policy());
134 FlushDeviceSettings();
135 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status());
136 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_SIGNATURE,
137 store_->validation_status());
138 }
139
140 TEST_F(DeviceCloudPolicyStoreChromeOSTest, StoreBadSignature) {
141 PrepareExistingPolicy();
142 device_policy_.policy().set_policy_data_signature("invalid");
143 store_->Store(device_policy_.policy());
144 FlushDeviceSettings();
145 EXPECT_EQ(CloudPolicyStore::STATUS_VALIDATION_ERROR, store_->status());
146 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_SIGNATURE,
147 store_->validation_status());
148 }
149
150 TEST_F(DeviceCloudPolicyStoreChromeOSTest, StoreKeyRotation) {
151 PrepareExistingPolicy();
152 device_policy_.set_new_signing_key(PolicyBuilder::CreateTestNewSigningKey());
153 device_policy_.Build();
154 store_->Store(device_policy_.policy());
155 device_settings_test_helper_.FlushLoops();
156 device_settings_test_helper_.FlushStore();
157 owner_key_util_->SetPublicKeyFromPrivateKey(device_policy_.new_signing_key());
158 ReloadDeviceSettings();
159 ExpectSuccess();
160 }
161
162 TEST_F(DeviceCloudPolicyStoreChromeOSTest, InstallInitialPolicySuccess) {
163 PrepareNewSigningKey();
164 store_->InstallInitialPolicy(device_policy_.policy());
165 FlushDeviceSettings();
166 ExpectSuccess();
167 }
168
169 TEST_F(DeviceCloudPolicyStoreChromeOSTest, InstallInitialPolicyNoSignature) {
170 PrepareNewSigningKey();
171 device_policy_.policy().clear_policy_data_signature();
172 store_->InstallInitialPolicy(device_policy_.policy());
173 FlushDeviceSettings();
174 ExpectFailure(CloudPolicyStore::STATUS_VALIDATION_ERROR);
175 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_INITIAL_SIGNATURE,
176 store_->validation_status());
177 }
178
179 TEST_F(DeviceCloudPolicyStoreChromeOSTest, InstallInitialPolicyNoKey) {
180 PrepareNewSigningKey();
181 device_policy_.policy().clear_new_public_key();
182 store_->InstallInitialPolicy(device_policy_.policy());
183 FlushDeviceSettings();
184 ExpectFailure(CloudPolicyStore::STATUS_VALIDATION_ERROR);
185 EXPECT_EQ(CloudPolicyValidatorBase::VALIDATION_BAD_INITIAL_SIGNATURE,
186 store_->validation_status());
187 }
188
189 TEST_F(DeviceCloudPolicyStoreChromeOSTest, InstallInitialPolicyNotEnterprise) {
190 PrepareNewSigningKey();
191 ResetToNonEnterprise();
192 store_->InstallInitialPolicy(device_policy_.policy());
193 FlushDeviceSettings();
194 ExpectFailure(CloudPolicyStore::STATUS_BAD_STATE);
195 }
196
197 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/device_cloud_policy_store_chromeos.cc ('k') | chrome/browser/policy/device_local_account_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698