| 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 |