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/file_util.h" | 7 #include "base/file_util.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/browser_thread.h" | 10 #include "chrome/browser/browser_thread.h" |
11 #include "chrome/browser/net/gaia/token_service.h" | 11 #include "chrome/browser/net/gaia/token_service.h" |
12 #include "chrome/browser/policy/cloud_policy_cache.h" | 12 #include "chrome/browser/policy/cloud_policy_cache.h" |
13 #include "chrome/browser/policy/device_management_service.h" | 13 #include "chrome/browser/policy/device_management_service.h" |
| 14 #include "chrome/browser/policy/proto/device_management_backend.pb.h" |
14 #include "chrome/browser/policy/mock_device_management_backend.h" | 15 #include "chrome/browser/policy/mock_device_management_backend.h" |
15 #include "chrome/common/net/gaia/gaia_constants.h" | 16 #include "chrome/common/net/gaia/gaia_constants.h" |
16 #include "chrome/test/testing_profile.h" | 17 #include "chrome/test/testing_profile.h" |
17 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
19 | 20 |
20 namespace policy { | 21 namespace policy { |
21 | 22 |
22 const char kTestToken[] = "device_token_fetcher_test_auth_token"; | 23 const char kTestToken[] = "device_token_fetcher_test_auth_token"; |
23 | 24 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 request, delegate); | 79 request, delegate); |
79 } | 80 } |
80 virtual void ProcessPolicyRequest( | 81 virtual void ProcessPolicyRequest( |
81 const std::string& device_management_token, | 82 const std::string& device_management_token, |
82 const std::string& device_id, | 83 const std::string& device_id, |
83 const em::DevicePolicyRequest& request, | 84 const em::DevicePolicyRequest& request, |
84 DevicePolicyResponseDelegate* delegate) { | 85 DevicePolicyResponseDelegate* delegate) { |
85 backend_->ProcessPolicyRequest(device_management_token, device_id, | 86 backend_->ProcessPolicyRequest(device_management_token, device_id, |
86 request, delegate); | 87 request, delegate); |
87 } | 88 } |
88 virtual void ProcessCloudPolicyRequest( | |
89 const std::string& device_management_token, | |
90 const std::string& device_id, | |
91 const em::CloudPolicyRequest& request, | |
92 DevicePolicyResponseDelegate* delegate) { | |
93 backend_->ProcessCloudPolicyRequest(device_management_token, device_id, | |
94 request, delegate); | |
95 } | |
96 | 89 |
97 private: | 90 private: |
98 DeviceManagementBackend* backend_; // weak | 91 DeviceManagementBackend* backend_; // weak |
99 DISALLOW_COPY_AND_ASSIGN(ProxyDeviceManagementBackend); | 92 DISALLOW_COPY_AND_ASSIGN(ProxyDeviceManagementBackend); |
100 }; | 93 }; |
101 | 94 |
102 DeviceManagementBackend* | 95 DeviceManagementBackend* |
103 MockDeviceManagementService::CreateBackend() { | 96 MockDeviceManagementService::CreateBackend() { |
104 return new ProxyDeviceManagementBackend(backend_); | 97 return new ProxyDeviceManagementBackend(backend_); |
105 } | 98 } |
(...skipping 29 matching lines...) Expand all Loading... |
135 | 128 |
136 TEST_F(DeviceTokenFetcherTest, FetchToken) { | 129 TEST_F(DeviceTokenFetcherTest, FetchToken) { |
137 testing::InSequence s; | 130 testing::InSequence s; |
138 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( | 131 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
139 MockDeviceManagementBackendSucceedRegister()); | 132 MockDeviceManagementBackendSucceedRegister()); |
140 DeviceTokenFetcher fetcher(&service_, cache_.get()); | 133 DeviceTokenFetcher fetcher(&service_, cache_.get()); |
141 MockTokenAvailableObserver observer; | 134 MockTokenAvailableObserver observer; |
142 EXPECT_CALL(observer, OnDeviceTokenAvailable()); | 135 EXPECT_CALL(observer, OnDeviceTokenAvailable()); |
143 fetcher.AddObserver(&observer); | 136 fetcher.AddObserver(&observer); |
144 EXPECT_EQ("", fetcher.GetDeviceToken()); | 137 EXPECT_EQ("", fetcher.GetDeviceToken()); |
145 fetcher.FetchToken("fake_auth_token", "fake_device_id"); | 138 fetcher.FetchToken("fake_auth_token", "fake_device_id", |
| 139 em::DeviceRegisterRequest::USER, "fake_machine_id"); |
146 loop_.RunAllPending(); | 140 loop_.RunAllPending(); |
147 Mock::VerifyAndClearExpectations(&observer); | 141 Mock::VerifyAndClearExpectations(&observer); |
148 std::string token = fetcher.GetDeviceToken(); | 142 std::string token = fetcher.GetDeviceToken(); |
149 EXPECT_NE("", token); | 143 EXPECT_NE("", token); |
150 | 144 |
151 // Calling FetchToken() again should result in a new token being fetched. | 145 // Calling FetchToken() again should result in a new token being fetched. |
152 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( | 146 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
153 MockDeviceManagementBackendSucceedRegister()); | 147 MockDeviceManagementBackendSucceedRegister()); |
154 EXPECT_CALL(observer, OnDeviceTokenAvailable()); | 148 EXPECT_CALL(observer, OnDeviceTokenAvailable()); |
155 fetcher.FetchToken("fake_auth_token", "fake_device_id"); | 149 fetcher.FetchToken("fake_auth_token", "fake_device_id", |
| 150 em::DeviceRegisterRequest::USER, "fake_machine_id"); |
156 loop_.RunAllPending(); | 151 loop_.RunAllPending(); |
157 Mock::VerifyAndClearExpectations(&observer); | 152 Mock::VerifyAndClearExpectations(&observer); |
158 std::string token2 = fetcher.GetDeviceToken(); | 153 std::string token2 = fetcher.GetDeviceToken(); |
159 EXPECT_NE("", token2); | 154 EXPECT_NE("", token2); |
160 EXPECT_NE(token, token2); | 155 EXPECT_NE(token, token2); |
161 fetcher.RemoveObserver(&observer); | 156 fetcher.RemoveObserver(&observer); |
162 } | 157 } |
163 | 158 |
164 TEST_F(DeviceTokenFetcherTest, RetryOnError) { | 159 TEST_F(DeviceTokenFetcherTest, RetryOnError) { |
165 testing::InSequence s; | 160 testing::InSequence s; |
166 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( | 161 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
167 MockDeviceManagementBackendFailRegister( | 162 MockDeviceManagementBackendFailRegister( |
168 DeviceManagementBackend::kErrorRequestFailed)).WillOnce( | 163 DeviceManagementBackend::kErrorRequestFailed)).WillOnce( |
169 MockDeviceManagementBackendSucceedRegister()); | 164 MockDeviceManagementBackendSucceedRegister()); |
170 DeviceTokenFetcher fetcher(&service_, cache_.get(), 0, 0); | 165 DeviceTokenFetcher fetcher(&service_, cache_.get(), 0, 0); |
171 MockTokenAvailableObserver observer; | 166 MockTokenAvailableObserver observer; |
172 EXPECT_CALL(observer, OnDeviceTokenAvailable()); | 167 EXPECT_CALL(observer, OnDeviceTokenAvailable()); |
173 fetcher.AddObserver(&observer); | 168 fetcher.AddObserver(&observer); |
174 fetcher.FetchToken("fake_auth_token", "fake_device_id"); | 169 fetcher.FetchToken("fake_auth_token", "fake_device_id", |
| 170 em::DeviceRegisterRequest::USER, "fake_machine_id"); |
175 loop_.RunAllPending(); | 171 loop_.RunAllPending(); |
176 Mock::VerifyAndClearExpectations(&observer); | 172 Mock::VerifyAndClearExpectations(&observer); |
177 EXPECT_NE("", fetcher.GetDeviceToken()); | 173 EXPECT_NE("", fetcher.GetDeviceToken()); |
178 fetcher.RemoveObserver(&observer); | 174 fetcher.RemoveObserver(&observer); |
179 } | 175 } |
180 | 176 |
181 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { | 177 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { |
182 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( | 178 EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
183 MockDeviceManagementBackendFailRegister( | 179 MockDeviceManagementBackendFailRegister( |
184 DeviceManagementBackend::kErrorServiceManagementNotSupported)); | 180 DeviceManagementBackend::kErrorServiceManagementNotSupported)); |
185 EXPECT_FALSE(cache_->is_unmanaged()); | 181 EXPECT_FALSE(cache_->is_unmanaged()); |
186 DeviceTokenFetcher fetcher(&service_, cache_.get()); | 182 DeviceTokenFetcher fetcher(&service_, cache_.get()); |
187 MockTokenAvailableObserver observer; | 183 MockTokenAvailableObserver observer; |
188 EXPECT_CALL(observer, OnDeviceTokenAvailable()).Times(0); | 184 EXPECT_CALL(observer, OnDeviceTokenAvailable()).Times(0); |
189 fetcher.AddObserver(&observer); | 185 fetcher.AddObserver(&observer); |
190 fetcher.FetchToken("fake_auth_token", "fake_device_id"); | 186 fetcher.FetchToken("fake_auth_token", "fake_device_id", |
| 187 em::DeviceRegisterRequest::USER, "fake_machine_id"); |
191 loop_.RunAllPending(); | 188 loop_.RunAllPending(); |
192 Mock::VerifyAndClearExpectations(&observer); | 189 Mock::VerifyAndClearExpectations(&observer); |
193 EXPECT_EQ("", fetcher.GetDeviceToken()); | 190 EXPECT_EQ("", fetcher.GetDeviceToken()); |
194 EXPECT_TRUE(cache_->is_unmanaged()); | 191 EXPECT_TRUE(cache_->is_unmanaged()); |
195 fetcher.RemoveObserver(&observer); | 192 fetcher.RemoveObserver(&observer); |
196 } | 193 } |
197 | 194 |
198 } // namespace policy | 195 } // namespace policy |
OLD | NEW |