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

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

Powered by Google App Engine
This is Rietveld 408576698