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

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

Issue 8499021: UserPolicyCache only becomes ready after policy has been fetched. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 9 years, 1 month 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/policy/cloud_policy_controller.h" 5 #include "chrome/browser/policy/cloud_policy_controller.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/scoped_temp_dir.h" 9 #include "base/scoped_temp_dir.h"
10 #include "chrome/browser/policy/cloud_policy_data_store.h" 10 #include "chrome/browser/policy/cloud_policy_data_store.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 public: 44 public:
45 CloudPolicyControllerTest() 45 CloudPolicyControllerTest()
46 : ui_thread_(BrowserThread::UI, &loop_), 46 : ui_thread_(BrowserThread::UI, &loop_),
47 file_thread_(BrowserThread::FILE, &loop_) {} 47 file_thread_(BrowserThread::FILE, &loop_) {}
48 48
49 virtual ~CloudPolicyControllerTest() {} 49 virtual ~CloudPolicyControllerTest() {}
50 50
51 virtual void SetUp() { 51 virtual void SetUp() {
52 ASSERT_TRUE(temp_user_data_dir_.CreateUniqueTempDir()); 52 ASSERT_TRUE(temp_user_data_dir_.CreateUniqueTempDir());
53 cache_.reset(new UserPolicyCache( 53 cache_.reset(new UserPolicyCache(
54 temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"))); 54 temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"),
55 false /* wait_for_policy_fetch */));
55 token_fetcher_.reset(new MockDeviceTokenFetcher(cache_.get())); 56 token_fetcher_.reset(new MockDeviceTokenFetcher(cache_.get()));
56 EXPECT_CALL(service_, CreateBackend()) 57 EXPECT_CALL(service_, CreateBackend())
57 .Times(AnyNumber()) 58 .Times(AnyNumber())
58 .WillRepeatedly(MockDeviceManagementServiceProxyBackend(&backend_)); 59 .WillRepeatedly(MockDeviceManagementServiceProxyBackend(&backend_));
59 data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies()); 60 data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies());
60 } 61 }
61 62
62 virtual void TearDown() { 63 virtual void TearDown() {
63 controller_.reset(); // Unregisters observers. 64 controller_.reset(); // Unregisters observers.
64 data_store_.reset(); 65 data_store_.reset();
65 } 66 }
66 67
67 void CreateNewController() { 68 void CreateNewController() {
68 controller_.reset(new CloudPolicyController( 69 controller_.reset(new CloudPolicyController(
69 &service_, cache_.get(), token_fetcher_.get(), data_store_.get(), 70 &service_, cache_.get(), token_fetcher_.get(), data_store_.get(),
70 &notifier_, new DummyWorkScheduler)); 71 &notifier_, new DummyWorkScheduler));
71 } 72 }
72 73
74 void CreateNewWaitingCache() {
75 cache_.reset(new UserPolicyCache(
76 temp_user_data_dir_.path().AppendASCII("CloudPolicyControllerTest"),
77 true /* wait_for_policy_fetch */));
78 // Make this cache's disk cache ready, but have it still waiting for a
79 // policy fetch.
80 cache_->Load();
81 loop_.RunAllPending();
82 ASSERT_TRUE(cache_->last_policy_refresh_time().is_null());
83 ASSERT_FALSE(cache_->IsReady());
84 }
85
73 void ExpectHasSpdyPolicy() { 86 void ExpectHasSpdyPolicy() {
74 base::FundamentalValue expected(true); 87 base::FundamentalValue expected(true);
75 const PolicyMap* policy_map = cache_->policy( 88 const PolicyMap* policy_map = cache_->policy(
76 CloudPolicyCacheBase::POLICY_LEVEL_MANDATORY); 89 CloudPolicyCacheBase::POLICY_LEVEL_MANDATORY);
77 ASSERT_TRUE(Value::Equals(&expected, policy_map->Get(kPolicyDisableSpdy))); 90 ASSERT_TRUE(Value::Equals(&expected, policy_map->Get(kPolicyDisableSpdy)));
78 } 91 }
79 92
80 void StopMessageLoop() { 93 void StopMessageLoop() {
81 loop_.QuitNow(); 94 loop_.QuitNow();
82 } 95 }
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 data_store_->SetupForTesting("device_token", "device_id", 245 data_store_->SetupForTesting("device_token", "device_id",
233 "who@what.com", "auth", true); 246 "who@what.com", "auth", true);
234 EXPECT_CALL(backend_, ProcessPolicyRequest(_, _, _, _, _)).WillOnce( 247 EXPECT_CALL(backend_, ProcessPolicyRequest(_, _, _, _, _)).WillOnce(
235 MockDeviceManagementBackendFailPolicy( 248 MockDeviceManagementBackendFailPolicy(
236 DeviceManagementBackend::kErrorServiceInvalidSerialNumber)); 249 DeviceManagementBackend::kErrorServiceInvalidSerialNumber));
237 EXPECT_CALL(*token_fetcher_.get(), SetSerialNumberInvalidState()).Times(1); 250 EXPECT_CALL(*token_fetcher_.get(), SetSerialNumberInvalidState()).Times(1);
238 CreateNewController(); 251 CreateNewController();
239 loop_.RunAllPending(); 252 loop_.RunAllPending();
240 } 253 }
241 254
255 TEST_F(CloudPolicyControllerTest, DontSetFetchingDoneWithoutTokens) {
256 CreateNewWaitingCache();
257 CreateNewController();
258 // Initialized without an oauth token, goes into TOKEN_UNAVAILABLE state.
259 // This means the controller is still waiting for an oauth token fetch.
260 EXPECT_FALSE(cache_->IsReady());
261 }
262
263 TEST_F(CloudPolicyControllerTest, DontSetFetchingDoneWithoutFetching) {
264 CreateNewWaitingCache();
265 data_store_->SetupForTesting("device_token", "device_id",
266 "who@what.com", "auth", true);
267 CreateNewController();
268 // Initialized with an oauth token, goes into TOKEN_VALID state.
269 // This means the controller has an oauth token and should fetch the next
270 // token, which is the dm server register token.
271 EXPECT_FALSE(cache_->IsReady());
272 }
273
274 TEST_F(CloudPolicyControllerTest, SetFetchingDoneForUnmanagedUsers) {
275 CreateNewWaitingCache();
276 data_store_->SetupForTesting("", "device_id",
277 "user@gmail.com", "auth", true);
278 CreateNewController();
279 loop_.RunAllPending();
280 // User is in an unmanaged domain.
281 EXPECT_TRUE(cache_->IsReady());
282 EXPECT_TRUE(cache_->last_policy_refresh_time().is_null());
283 }
284
285 TEST_F(CloudPolicyControllerTest, SetFetchingDoneAfterPolicyFetch) {
286 CreateNewWaitingCache();
287 data_store_->SetupForTesting("device_token", "device_id",
288 "user@enterprise.com", "auth", true);
289 EXPECT_CALL(backend_, ProcessPolicyRequest(_, _, _, _, _)).WillOnce(DoAll(
290 InvokeWithoutArgs(this, &CloudPolicyControllerTest::StopMessageLoop),
291 MockDeviceManagementBackendSucceedSpdyCloudPolicy()));
292 CreateNewController();
293 loop_.RunAllPending();
294 EXPECT_TRUE(cache_->IsReady());
295 EXPECT_FALSE(cache_->last_policy_refresh_time().is_null());
296 }
297
298 TEST_F(CloudPolicyControllerTest, SetFetchingDoneAfterPolicyFetchFails) {
299 CreateNewWaitingCache();
300 data_store_->SetupForTesting("device_token", "device_id",
301 "user@enterprise.com", "auth", true);
302 EXPECT_CALL(backend_, ProcessPolicyRequest(_, _, _, _, _)).WillOnce(DoAll(
303 InvokeWithoutArgs(this, &CloudPolicyControllerTest::StopMessageLoop),
304 MockDeviceManagementBackendFailPolicy(
305 DeviceManagementBackend::kErrorRequestFailed)));
306 CreateNewController();
307 loop_.RunAllPending();
308 EXPECT_TRUE(cache_->IsReady());
309 EXPECT_TRUE(cache_->last_policy_refresh_time().is_null());
310 }
311
242 } // namespace policy 312 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698