OLD | NEW |
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/device_token_fetcher.h" | 5 #include "chrome/browser/policy/device_token_fetcher.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/scoped_temp_dir.h" | 8 #include "base/scoped_temp_dir.h" |
9 #include "chrome/browser/policy/cloud_policy_data_store.h" | 9 #include "chrome/browser/policy/cloud_policy_data_store.h" |
10 #include "chrome/browser/policy/logging_work_scheduler.h" | 10 #include "chrome/browser/policy/logging_work_scheduler.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 class DeviceTokenFetcherTest : public testing::Test { | 29 class DeviceTokenFetcherTest : public testing::Test { |
30 protected: | 30 protected: |
31 DeviceTokenFetcherTest() | 31 DeviceTokenFetcherTest() |
32 : ui_thread_(BrowserThread::UI, &loop_), | 32 : ui_thread_(BrowserThread::UI, &loop_), |
33 file_thread_(BrowserThread::FILE, &loop_) { | 33 file_thread_(BrowserThread::FILE, &loop_) { |
34 EXPECT_TRUE(temp_user_data_dir_.CreateUniqueTempDir()); | 34 EXPECT_TRUE(temp_user_data_dir_.CreateUniqueTempDir()); |
35 } | 35 } |
36 | 36 |
37 virtual void SetUp() { | 37 virtual void SetUp() { |
38 cache_.reset(new UserPolicyCache( | 38 cache_.reset(new UserPolicyCache( |
39 temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"))); | 39 temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"), |
| 40 false /* wait_for_policy_fetch */)); |
40 EXPECT_CALL(service_, CreateBackend()) | 41 EXPECT_CALL(service_, CreateBackend()) |
41 .Times(AnyNumber()) | 42 .Times(AnyNumber()) |
42 .WillRepeatedly(MockDeviceManagementServiceProxyBackend(&backend_)); | 43 .WillRepeatedly(MockDeviceManagementServiceProxyBackend(&backend_)); |
43 data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies()); | 44 data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies()); |
44 data_store_->AddObserver(&observer_); | 45 data_store_->AddObserver(&observer_); |
45 } | 46 } |
46 | 47 |
47 virtual void TearDown() { | 48 virtual void TearDown() { |
48 loop_.RunAllPending(); | 49 loop_.RunAllPending(); |
49 data_store_->RemoveObserver(&observer_); | 50 data_store_->RemoveObserver(&observer_); |
50 } | 51 } |
51 | 52 |
52 void FetchToken(DeviceTokenFetcher* fetcher) { | 53 void FetchToken(DeviceTokenFetcher* fetcher) { |
53 data_store_->SetupForTesting("", "fake_device_id", "fake_user_name", | 54 data_store_->SetupForTesting("", "fake_device_id", "fake_user_name", |
54 "fake_auth_token", true); | 55 "fake_auth_token", true); |
55 fetcher->FetchToken(); | 56 fetcher->FetchToken(); |
56 } | 57 } |
57 | 58 |
| 59 void CreateNewWaitingCache() { |
| 60 cache_.reset(new UserPolicyCache( |
| 61 temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"), |
| 62 true /* wait_for_policy_fetch */)); |
| 63 // Make this cache's disk cache ready, but have it still waiting for a |
| 64 // policy fetch. |
| 65 cache_->Load(); |
| 66 loop_.RunAllPending(); |
| 67 ASSERT_TRUE(cache_->last_policy_refresh_time().is_null()); |
| 68 ASSERT_FALSE(cache_->IsReady()); |
| 69 } |
| 70 |
58 MessageLoop loop_; | 71 MessageLoop loop_; |
59 MockDeviceManagementBackend backend_; | 72 MockDeviceManagementBackend backend_; |
60 MockDeviceManagementService service_; | 73 MockDeviceManagementService service_; |
61 scoped_ptr<CloudPolicyCacheBase> cache_; | 74 scoped_ptr<CloudPolicyCacheBase> cache_; |
62 scoped_ptr<CloudPolicyDataStore> data_store_; | 75 scoped_ptr<CloudPolicyDataStore> data_store_; |
63 MockCloudPolicyDataStoreObserver observer_; | 76 MockCloudPolicyDataStoreObserver observer_; |
64 PolicyNotifier notifier_; | 77 PolicyNotifier notifier_; |
65 ScopedTempDir temp_user_data_dir_; | 78 ScopedTempDir temp_user_data_dir_; |
66 | 79 |
67 private: | 80 private: |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), | 131 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), |
119 ¬ifier_); | 132 ¬ifier_); |
120 EXPECT_CALL(observer_, OnDeviceTokenChanged()).Times(0); | 133 EXPECT_CALL(observer_, OnDeviceTokenChanged()).Times(0); |
121 FetchToken(&fetcher); | 134 FetchToken(&fetcher); |
122 loop_.RunAllPending(); | 135 loop_.RunAllPending(); |
123 Mock::VerifyAndClearExpectations(&observer_); | 136 Mock::VerifyAndClearExpectations(&observer_); |
124 EXPECT_EQ("", data_store_->device_token()); | 137 EXPECT_EQ("", data_store_->device_token()); |
125 EXPECT_TRUE(cache_->is_unmanaged()); | 138 EXPECT_TRUE(cache_->is_unmanaged()); |
126 } | 139 } |
127 | 140 |
| 141 TEST_F(DeviceTokenFetcherTest, DontSetFetchingDone) { |
| 142 CreateNewWaitingCache(); |
| 143 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), |
| 144 ¬ifier_); |
| 145 EXPECT_FALSE(cache_->IsReady()); |
| 146 } |
| 147 |
| 148 TEST_F(DeviceTokenFetcherTest, DontSetFetchingDoneWithoutPolicyFetch) { |
| 149 CreateNewWaitingCache(); |
| 150 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _, _)).WillOnce( |
| 151 MockDeviceManagementBackendSucceedRegister()); |
| 152 EXPECT_CALL(observer_, OnDeviceTokenChanged()); |
| 153 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), |
| 154 ¬ifier_); |
| 155 FetchToken(&fetcher); |
| 156 loop_.RunAllPending(); |
| 157 // On successful token fetching the cache isn't set to ready, since the next |
| 158 // step is to fetch policy. Only failures to fetch the token should make |
| 159 // the cache ready. |
| 160 EXPECT_FALSE(cache_->IsReady()); |
| 161 } |
| 162 |
| 163 TEST_F(DeviceTokenFetcherTest, SetFetchingDoneWhenUnmanaged) { |
| 164 CreateNewWaitingCache(); |
| 165 cache_->SetUnmanaged(); |
| 166 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), |
| 167 ¬ifier_); |
| 168 EXPECT_TRUE(cache_->IsReady()); |
| 169 } |
| 170 |
| 171 TEST_F(DeviceTokenFetcherTest, SetFetchingDoneOnFailures) { |
| 172 CreateNewWaitingCache(); |
| 173 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _, _)).WillOnce( |
| 174 MockDeviceManagementBackendFailRegister( |
| 175 DeviceManagementBackend::kErrorRequestFailed)); |
| 176 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(), |
| 177 ¬ifier_); |
| 178 FetchToken(&fetcher); |
| 179 loop_.RunAllPending(); |
| 180 // This is the opposite case of DontSetFetchingDone1. |
| 181 EXPECT_TRUE(cache_->IsReady()); |
| 182 } |
| 183 |
128 } // namespace policy | 184 } // namespace policy |
OLD | NEW |