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

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

Issue 7298012: Consolidate data storage and notifications in the cloud policy subsystem (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 5 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
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/file_util.h"
8 #include "base/message_loop.h" 7 #include "base/message_loop.h"
9 #include "base/scoped_temp_dir.h" 8 #include "base/scoped_temp_dir.h"
10 #include "chrome/browser/net/gaia/token_service.h" 9 #include "chrome/browser/policy/cloud_policy_data_store.h"
11 #include "chrome/browser/policy/device_management_service.h"
12 #include "chrome/browser/policy/logging_work_scheduler.h" 10 #include "chrome/browser/policy/logging_work_scheduler.h"
13 #include "chrome/browser/policy/mock_device_management_backend.h" 11 #include "chrome/browser/policy/mock_device_management_backend.h"
14 #include "chrome/browser/policy/mock_device_management_service.h" 12 #include "chrome/browser/policy/mock_device_management_service.h"
15 #include "chrome/browser/policy/policy_notifier.h" 13 #include "chrome/browser/policy/policy_notifier.h"
16 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
17 #include "chrome/browser/policy/user_policy_cache.h" 14 #include "chrome/browser/policy/user_policy_cache.h"
18 #include "chrome/common/net/gaia/gaia_constants.h"
19 #include "chrome/test/testing_profile.h"
20 #include "content/browser/browser_thread.h" 15 #include "content/browser/browser_thread.h"
21 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
23 18
24 namespace policy { 19 namespace policy {
25 20
26 const char kTestToken[] = "device_token_fetcher_test_auth_token"; 21 const char kTestToken[] = "device_token_fetcher_test_auth_token";
27 22
28 using testing::_; 23 using testing::_;
29 using testing::Mock; 24 using testing::Mock;
30 25
31 class MockTokenAvailableObserver : public DeviceTokenFetcher::Observer { 26 class MockTokenAvailableObserver : public CloudPolicyDataStore::Observer {
32 public: 27 public:
33 MockTokenAvailableObserver() {} 28 MockTokenAvailableObserver() {}
34 virtual ~MockTokenAvailableObserver() {} 29 virtual ~MockTokenAvailableObserver() {}
35 30
36 MOCK_METHOD0(OnDeviceTokenAvailable, void()); 31 MOCK_METHOD0(OnDeviceTokenChanged, void());
32 MOCK_METHOD0(OnCredentialsChanged, void());
33 MOCK_METHOD0(OnDataStoreGoingAway, void());
37 34
38 private: 35 private:
39 DISALLOW_COPY_AND_ASSIGN(MockTokenAvailableObserver); 36 DISALLOW_COPY_AND_ASSIGN(MockTokenAvailableObserver);
40 }; 37 };
41 38
42 class DeviceTokenFetcherTest : public testing::Test { 39 class DeviceTokenFetcherTest : public testing::Test {
43 protected: 40 protected:
44 DeviceTokenFetcherTest() 41 DeviceTokenFetcherTest()
45 : ui_thread_(BrowserThread::UI, &loop_), 42 : ui_thread_(BrowserThread::UI, &loop_),
46 file_thread_(BrowserThread::FILE, &loop_) { 43 file_thread_(BrowserThread::FILE, &loop_) {
47 EXPECT_TRUE(temp_user_data_dir_.CreateUniqueTempDir()); 44 EXPECT_TRUE(temp_user_data_dir_.CreateUniqueTempDir());
48 } 45 }
49 46
50 virtual void SetUp() { 47 virtual void SetUp() {
51 cache_.reset(new UserPolicyCache( 48 cache_.reset(new UserPolicyCache(
52 temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"))); 49 temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest")));
53 service_.set_backend(&backend_); 50 service_.set_backend(&backend_);
51 data_store_.reset(CloudPolicyDataStore::CreateForUserPolicies());
52 data_store_->AddObserver(&observer_);
54 } 53 }
55 54
56 virtual void TearDown() { 55 virtual void TearDown() {
57 loop_.RunAllPending(); 56 loop_.RunAllPending();
57 data_store_->RemoveObserver(&observer_);
58 }
59
60 void FetchToken(DeviceTokenFetcher* fetcher) {
61 data_store_->SetupForTesting("", "fake_device_id", "fake_user_name",
62 "fake_auth_token", true);
63 fetcher->FetchToken();
58 } 64 }
59 65
60 MessageLoop loop_; 66 MessageLoop loop_;
61 MockDeviceManagementBackend backend_; 67 MockDeviceManagementBackend backend_;
62 MockDeviceManagementService service_; 68 MockDeviceManagementService service_;
63 scoped_ptr<CloudPolicyCacheBase> cache_; 69 scoped_ptr<CloudPolicyCacheBase> cache_;
70 scoped_ptr<CloudPolicyDataStore> data_store_;
71 MockTokenAvailableObserver observer_;
64 PolicyNotifier notifier_; 72 PolicyNotifier notifier_;
65 ScopedTempDir temp_user_data_dir_; 73 ScopedTempDir temp_user_data_dir_;
66 74
67 private: 75 private:
68 BrowserThread ui_thread_; 76 BrowserThread ui_thread_;
69 BrowserThread file_thread_; 77 BrowserThread file_thread_;
70 }; 78 };
71 79
72 TEST_F(DeviceTokenFetcherTest, FetchToken) { 80 TEST_F(DeviceTokenFetcherTest, FetchToken) {
73 testing::InSequence s; 81 testing::InSequence s;
74 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( 82 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
75 MockDeviceManagementBackendSucceedRegister()); 83 MockDeviceManagementBackendSucceedRegister());
76 DeviceTokenFetcher fetcher(&service_, cache_.get(), &notifier_); 84 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
77 MockTokenAvailableObserver observer; 85 &notifier_);
78 EXPECT_CALL(observer, OnDeviceTokenAvailable()); 86 EXPECT_CALL(observer_, OnDeviceTokenChanged());
79 fetcher.AddObserver(&observer); 87 EXPECT_EQ("", data_store_->device_token());
80 EXPECT_EQ("", fetcher.GetDeviceToken()); 88 FetchToken(&fetcher);
81 fetcher.FetchToken("fake_auth_token", "fake_device_id",
82 em::DeviceRegisterRequest::USER,
83 "fake_machine_id", "fake_machine_model");
84 loop_.RunAllPending(); 89 loop_.RunAllPending();
85 Mock::VerifyAndClearExpectations(&observer); 90 Mock::VerifyAndClearExpectations(&observer_);
86 std::string token = fetcher.GetDeviceToken(); 91 std::string token = data_store_->device_token();
87 EXPECT_NE("", token); 92 EXPECT_NE("", token);
88 93
89 // Calling FetchToken() again should result in a new token being fetched. 94 // Calling FetchToken() again should result in a new token being fetched.
90 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( 95 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
91 MockDeviceManagementBackendSucceedRegister()); 96 MockDeviceManagementBackendSucceedRegister());
92 EXPECT_CALL(observer, OnDeviceTokenAvailable()); 97 EXPECT_CALL(observer_, OnDeviceTokenChanged());
93 fetcher.FetchToken("fake_auth_token", "fake_device_id", 98 FetchToken(&fetcher);
94 em::DeviceRegisterRequest::USER,
95 "fake_machine_id", "fake_machine_model");
96 loop_.RunAllPending(); 99 loop_.RunAllPending();
97 Mock::VerifyAndClearExpectations(&observer); 100 Mock::VerifyAndClearExpectations(&observer_);
98 std::string token2 = fetcher.GetDeviceToken(); 101 std::string token2 = data_store_->device_token();
99 EXPECT_NE("", token2); 102 EXPECT_NE("", token2);
100 EXPECT_NE(token, token2); 103 EXPECT_NE(token, token2);
101 fetcher.RemoveObserver(&observer);
102 } 104 }
103 105
104 TEST_F(DeviceTokenFetcherTest, RetryOnError) { 106 TEST_F(DeviceTokenFetcherTest, RetryOnError) {
105 testing::InSequence s; 107 testing::InSequence s;
106 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( 108 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
107 MockDeviceManagementBackendFailRegister( 109 MockDeviceManagementBackendFailRegister(
108 DeviceManagementBackend::kErrorRequestFailed)).WillOnce( 110 DeviceManagementBackend::kErrorRequestFailed)).WillOnce(
109 MockDeviceManagementBackendSucceedRegister()); 111 MockDeviceManagementBackendSucceedRegister());
110 DeviceTokenFetcher fetcher(&service_, cache_.get(), &notifier_, 112 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
111 new DummyWorkScheduler); 113 &notifier_, new DummyWorkScheduler);
112 MockTokenAvailableObserver observer; 114 EXPECT_CALL(observer_, OnDeviceTokenChanged());
113 EXPECT_CALL(observer, OnDeviceTokenAvailable()); 115 FetchToken(&fetcher);
114 fetcher.AddObserver(&observer);
115 fetcher.FetchToken("fake_auth_token", "fake_device_id",
116 em::DeviceRegisterRequest::USER,
117 "fake_machine_id", "fake_machine_model");
118 loop_.RunAllPending(); 116 loop_.RunAllPending();
119 Mock::VerifyAndClearExpectations(&observer); 117 Mock::VerifyAndClearExpectations(&observer_);
120 EXPECT_NE("", fetcher.GetDeviceToken()); 118 EXPECT_NE("", data_store_->device_token());
121 fetcher.RemoveObserver(&observer);
122 } 119 }
123 120
124 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { 121 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) {
125 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( 122 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
126 MockDeviceManagementBackendFailRegister( 123 MockDeviceManagementBackendFailRegister(
127 DeviceManagementBackend::kErrorServiceManagementNotSupported)); 124 DeviceManagementBackend::kErrorServiceManagementNotSupported));
128 EXPECT_FALSE(cache_->is_unmanaged()); 125 EXPECT_FALSE(cache_->is_unmanaged());
129 DeviceTokenFetcher fetcher(&service_, cache_.get(), &notifier_); 126 DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
130 MockTokenAvailableObserver observer; 127 &notifier_);
131 EXPECT_CALL(observer, OnDeviceTokenAvailable()).Times(0); 128 EXPECT_CALL(observer_, OnDeviceTokenChanged()).Times(0);
132 fetcher.AddObserver(&observer); 129 FetchToken(&fetcher);
133 fetcher.FetchToken("fake_auth_token", "fake_device_id",
134 em::DeviceRegisterRequest::USER,
135 "fake_machine_id", "fake_machine_model");
136 loop_.RunAllPending(); 130 loop_.RunAllPending();
137 Mock::VerifyAndClearExpectations(&observer); 131 Mock::VerifyAndClearExpectations(&observer_);
138 EXPECT_EQ("", fetcher.GetDeviceToken()); 132 EXPECT_EQ("", data_store_->device_token());
139 EXPECT_TRUE(cache_->is_unmanaged()); 133 EXPECT_TRUE(cache_->is_unmanaged());
140 fetcher.RemoveObserver(&observer);
141 } 134 }
142 135
143 } // namespace policy 136 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/device_token_fetcher.cc ('k') | chrome/browser/policy/logging_work_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698