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

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

Issue 11946017: Remove old cloud policy code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address nits. Created 7 years, 11 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_policy_cache.h"
6
7 #include <vector>
8
9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h"
11 #include "base/file_path.h"
12 #include "base/threading/sequenced_worker_pool.h"
13 #include "chrome/browser/chromeos/cros/cryptohome_library.h"
14 #include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
15 #include "chrome/browser/policy/cloud_policy_data_store.h"
16 #include "chrome/browser/policy/enterprise_install_attributes.h"
17 #include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
18 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
19 #include "policy/policy_constants.h"
20 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h"
22
23 using ::testing::Mock;
24
25 namespace em = enterprise_management;
26
27 namespace policy {
28
29 namespace {
30
31 class MockCloudPolicyCacheObserver : public CloudPolicyCacheBase::Observer {
32 public:
33 virtual ~MockCloudPolicyCacheObserver() {}
34
35 MOCK_METHOD1(OnCacheUpdate, void(CloudPolicyCacheBase*));
36 };
37
38 } // namespace
39
40 class DevicePolicyCacheTest : public chromeos::DeviceSettingsTestBase {
41 protected:
42 DevicePolicyCacheTest()
43 : cryptohome_(chromeos::CryptohomeLibrary::GetImpl(true)),
44 install_attributes_(cryptohome_.get()) {}
45
46 virtual void SetUp() OVERRIDE {
47 DeviceSettingsTestBase::SetUp();
48 device_policy_.payload().mutable_device_policy_refresh_rate()->
49 set_device_policy_refresh_rate(120);
50 device_policy_.Build();
51 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
52
53 data_store_.reset(CloudPolicyDataStore::CreateForDevicePolicies());
54 cache_.reset(new DevicePolicyCache(data_store_.get(),
55 &install_attributes_,
56 &device_settings_service_));
57 cache_->AddObserver(&observer_);
58 }
59
60 virtual void TearDown() OVERRIDE {
61 cache_->RemoveObserver(&observer_);
62 cache_.reset();
63
64 DeviceSettingsTestBase::TearDown();
65 }
66
67 void Startup() {
68 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get()));
69 device_settings_service_.Load();
70 device_settings_test_helper_.Flush();
71 cache_->Load();
72 Mock::VerifyAndClearExpectations(&observer_);
73 }
74
75 void MakeEnterpriseDevice() {
76 ASSERT_EQ(EnterpriseInstallAttributes::LOCK_SUCCESS,
77 install_attributes_.LockDevice(
78 device_policy_.policy_data().username(),
79 DEVICE_MODE_ENTERPRISE,
80 std::string()));
81 }
82
83 const Value* GetPolicy(const char* policy_name) {
84 return cache_->policy()->GetValue(policy_name);
85 }
86
87 MockCloudPolicyCacheObserver observer_;
88
89 scoped_ptr<chromeos::CryptohomeLibrary> cryptohome_;
90 EnterpriseInstallAttributes install_attributes_;
91
92 scoped_ptr<CloudPolicyDataStore> data_store_;
93 scoped_ptr<DevicePolicyCache> cache_;
94
95 private:
96 DISALLOW_COPY_AND_ASSIGN(DevicePolicyCacheTest);
97 };
98
99 TEST_F(DevicePolicyCacheTest, ColdStartup) {
100 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get())).Times(0);
101 cache_->Load();
102 Mock::VerifyAndClearExpectations(&observer_);
103
104 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get()));
105 ReloadDeviceSettings();
106 Mock::VerifyAndClearExpectations(&observer_);
107
108 base::FundamentalValue expected(120);
109 EXPECT_TRUE(Value::Equals(&expected,
110 GetPolicy(key::kDevicePolicyRefreshRate)));
111 }
112
113 TEST_F(DevicePolicyCacheTest, WarmStartup) {
114 Startup();
115
116 base::FundamentalValue expected(120);
117 EXPECT_TRUE(Value::Equals(&expected,
118 GetPolicy(key::kDevicePolicyRefreshRate)));
119 }
120
121 TEST_F(DevicePolicyCacheTest, SetPolicy) {
122 MakeEnterpriseDevice();
123 Startup();
124
125 base::FundamentalValue expected(120);
126 EXPECT_TRUE(Value::Equals(&expected,
127 GetPolicy(key::kDevicePolicyRefreshRate)));
128
129 // Set new policy information.
130 device_policy_.payload().mutable_device_policy_refresh_rate()->
131 set_device_policy_refresh_rate(300);
132 device_policy_.Build();
133 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get())).Times(0);
134 EXPECT_TRUE(cache_->SetPolicy(device_policy_.policy()));
135 cache_->SetFetchingDone();
136 Mock::VerifyAndClearExpectations(&observer_);
137
138 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get())).Times(0);
139 device_settings_test_helper_.FlushStore();
140 Mock::VerifyAndClearExpectations(&observer_);
141
142 // Cache update notification should only fire in the retrieve callback.
143 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get()));
144 FlushDeviceSettings();
145 Mock::VerifyAndClearExpectations(&observer_);
146
147 base::FundamentalValue updated_expected(300);
148 EXPECT_TRUE(Value::Equals(&updated_expected,
149 GetPolicy(key::kDevicePolicyRefreshRate)));
150
151 cache_->RemoveObserver(&observer_);
152 }
153
154 TEST_F(DevicePolicyCacheTest, SetPolicyOtherUserSameDomain) {
155 MakeEnterpriseDevice();
156 Startup();
157
158 // Set new policy information. This should succeed as the domain is the same.
159 device_policy_.policy_data().set_username("another_user@example.com");
160 device_policy_.Build();
161
162 EXPECT_CALL(observer_, OnCacheUpdate(cache_.get()));
163 EXPECT_TRUE(cache_->SetPolicy(device_policy_.policy()));
164 FlushDeviceSettings();
165 Mock::VerifyAndClearExpectations(&observer_);
166 EXPECT_EQ(device_policy_.GetBlob(),
167 device_settings_test_helper_.policy_blob());
168 }
169
170 TEST_F(DevicePolicyCacheTest, SetPolicyOtherUserOtherDomain) {
171 MakeEnterpriseDevice();
172 Startup();
173
174 // Set new policy information. This should fail because the user is from
175 // different domain.
176 device_policy_.policy_data().set_username("foreign_user@hackers.com");
177 device_policy_.Build();
178 EXPECT_NE(device_policy_.GetBlob(),
179 device_settings_test_helper_.policy_blob());
180
181 EXPECT_FALSE(cache_->SetPolicy(device_policy_.policy()));
182 FlushDeviceSettings();
183 EXPECT_NE(device_policy_.GetBlob(),
184 device_settings_test_helper_.policy_blob());
185 }
186
187 TEST_F(DevicePolicyCacheTest, SetPolicyNonEnterpriseDevice) {
188 Startup();
189
190 // Set new policy information. This should fail due to invalid user.
191 device_settings_test_helper_.set_policy_blob(std::string());
192
193 EXPECT_FALSE(cache_->SetPolicy(device_policy_.policy()));
194 FlushDeviceSettings();
195 EXPECT_TRUE(device_settings_test_helper_.policy_blob().empty());
196 }
197
198 TEST_F(DevicePolicyCacheTest, SetProxyPolicy) {
199 MakeEnterpriseDevice();
200
201 em::DeviceProxySettingsProto proxy_settings;
202 proxy_settings.set_proxy_mode("direct");
203 proxy_settings.set_proxy_server("http://proxy:8080");
204 proxy_settings.set_proxy_pac_url("http://proxy:8080/pac.js");
205 proxy_settings.set_proxy_bypass_list("127.0.0.1,example.com");
206 device_policy_.payload().mutable_device_proxy_settings()->CopyFrom(
207 proxy_settings);
208 device_policy_.Build();
209 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
210 Startup();
211
212 DictionaryValue expected;
213 expected.SetString(key::kProxyMode, proxy_settings.proxy_mode());
214 expected.SetString(key::kProxyServer, proxy_settings.proxy_server());
215 expected.SetString(key::kProxyPacUrl, proxy_settings.proxy_pac_url());
216 expected.SetString(key::kProxyBypassList, proxy_settings.proxy_bypass_list());
217 EXPECT_TRUE(Value::Equals(&expected, GetPolicy(key::kProxySettings)));
218 }
219
220 TEST_F(DevicePolicyCacheTest, SetDeviceNetworkConfigurationPolicy) {
221 MakeEnterpriseDevice();
222
223 std::string fake_config("{ 'NetworkConfigurations': [] }");
224 device_policy_.payload().mutable_open_network_configuration()->
225 set_open_network_configuration(fake_config);
226 device_policy_.Build();
227 device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
228 Startup();
229
230 StringValue expected_config(fake_config);
231 EXPECT_TRUE(
232 Value::Equals(&expected_config,
233 GetPolicy(key::kDeviceOpenNetworkConfiguration)));
234 }
235
236 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/device_policy_cache.cc ('k') | chrome/browser/policy/device_token_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698