| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <string> | 5 #include <string> |
| 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" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 ScopedTempDir temp_user_data_dir_; | 83 ScopedTempDir temp_user_data_dir_; |
| 84 scoped_refptr<DeviceTokenFetcher> fetcher_; | 84 scoped_refptr<DeviceTokenFetcher> fetcher_; |
| 85 | 85 |
| 86 private: | 86 private: |
| 87 BrowserThread ui_thread_; | 87 BrowserThread ui_thread_; |
| 88 BrowserThread file_thread_; | 88 BrowserThread file_thread_; |
| 89 }; | 89 }; |
| 90 | 90 |
| 91 TEST_F(DeviceTokenFetcherTest, IsPending) { | 91 TEST_F(DeviceTokenFetcherTest, IsPending) { |
| 92 ASSERT_TRUE(fetcher_->IsTokenPending()); | 92 ASSERT_TRUE(fetcher_->IsTokenPending()); |
| 93 backend_->AllShouldSucceed(); | 93 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 94 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 94 SucceedRegister()); |
| 95 SimulateSuccessfulLoginAndRunPending(); | 95 SimulateSuccessfulLoginAndRunPending(); |
| 96 ASSERT_FALSE(fetcher_->IsTokenPending()); | 96 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 97 } | 97 } |
| 98 | 98 |
| 99 TEST_F(DeviceTokenFetcherTest, StoreAndLoad) { | 99 TEST_F(DeviceTokenFetcherTest, StoreAndLoad) { |
| 100 backend_->AllShouldSucceed(); | 100 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 101 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 101 SucceedRegister()); |
| 102 SimulateSuccessfulLoginAndRunPending(); | 102 SimulateSuccessfulLoginAndRunPending(); |
| 103 ASSERT_FALSE(fetcher_->IsTokenPending()); | 103 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 104 std::string device_token = fetcher_->GetDeviceToken(); | 104 std::string device_token = fetcher_->GetDeviceToken(); |
| 105 std::string device_id = fetcher_->GetDeviceID(); | 105 std::string device_id = fetcher_->GetDeviceID(); |
| 106 ASSERT_NE("", device_id); | 106 ASSERT_NE("", device_id); |
| 107 | 107 |
| 108 FilePath token_path; | 108 FilePath token_path; |
| 109 GetDeviceTokenPath(fetcher_, &token_path); | 109 GetDeviceTokenPath(fetcher_, &token_path); |
| 110 scoped_refptr<DeviceTokenFetcher> fetcher2( | 110 scoped_refptr<DeviceTokenFetcher> fetcher2( |
| 111 new DeviceTokenFetcher(backend_.get(), token_service_.get(), token_path)); | 111 new DeviceTokenFetcher(backend_.get(), token_service_.get(), token_path)); |
| 112 fetcher2->StartFetching(); | 112 fetcher2->StartFetching(); |
| 113 loop_.RunAllPending(); | 113 loop_.RunAllPending(); |
| 114 ASSERT_EQ(device_id, fetcher2->GetDeviceID()); | 114 ASSERT_EQ(device_id, fetcher2->GetDeviceID()); |
| 115 ASSERT_EQ(device_token, fetcher2->GetDeviceToken()); | 115 ASSERT_EQ(device_token, fetcher2->GetDeviceToken()); |
| 116 } | 116 } |
| 117 | 117 |
| 118 TEST_F(DeviceTokenFetcherTest, SimpleFetchSingleLogin) { | 118 TEST_F(DeviceTokenFetcherTest, SimpleFetchSingleLogin) { |
| 119 backend_->AllShouldSucceed(); | 119 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 120 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 120 SucceedRegister()); |
| 121 SimulateSuccessfulLoginAndRunPending(); | 121 SimulateSuccessfulLoginAndRunPending(); |
| 122 ASSERT_FALSE(fetcher_->IsTokenPending()); | 122 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 123 ASSERT_TRUE(fetcher_->IsTokenValid()); | 123 ASSERT_TRUE(fetcher_->IsTokenValid()); |
| 124 const std::string token(fetcher_->GetDeviceToken()); | 124 const std::string token(fetcher_->GetDeviceToken()); |
| 125 EXPECT_NE("", token); | 125 EXPECT_NE("", token); |
| 126 } | 126 } |
| 127 | 127 |
| 128 TEST_F(DeviceTokenFetcherTest, SimpleFetchDoubleLogin) { | 128 TEST_F(DeviceTokenFetcherTest, SimpleFetchDoubleLogin) { |
| 129 backend_->AllShouldSucceed(); | 129 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 130 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 130 SucceedRegister()); |
| 131 SimulateSuccessfulLoginAndRunPending(); | 131 SimulateSuccessfulLoginAndRunPending(); |
| 132 ASSERT_FALSE(fetcher_->IsTokenPending()); | 132 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 133 const std::string token(fetcher_->GetDeviceToken()); | 133 const std::string token(fetcher_->GetDeviceToken()); |
| 134 EXPECT_NE("", token); | 134 EXPECT_NE("", token); |
| 135 | 135 |
| 136 SimulateSuccessfulLoginAndRunPending(); | 136 SimulateSuccessfulLoginAndRunPending(); |
| 137 ASSERT_FALSE(fetcher_->IsTokenPending()); | 137 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 138 const std::string token2(fetcher_->GetDeviceToken()); | 138 const std::string token2(fetcher_->GetDeviceToken()); |
| 139 EXPECT_NE("", token2); | 139 EXPECT_NE("", token2); |
| 140 EXPECT_EQ(token, token2); | 140 EXPECT_EQ(token, token2); |
| 141 } | 141 } |
| 142 | 142 |
| 143 TEST_F(DeviceTokenFetcherTest, FetchBetweenBrowserLaunchAndNotify) { | 143 TEST_F(DeviceTokenFetcherTest, FetchBetweenBrowserLaunchAndNotify) { |
| 144 MockTokenAvailableObserver observer; | 144 MockTokenAvailableObserver observer; |
| 145 DeviceTokenFetcher::ObserverRegistrar registrar; | 145 DeviceTokenFetcher::ObserverRegistrar registrar; |
| 146 registrar.Init(fetcher_); | 146 registrar.Init(fetcher_); |
| 147 registrar.AddObserver(&observer); | 147 registrar.AddObserver(&observer); |
| 148 EXPECT_CALL(observer, OnTokenSuccess()).Times(1); | 148 EXPECT_CALL(observer, OnTokenSuccess()).Times(1); |
| 149 EXPECT_CALL(observer, OnTokenError()).Times(0); | 149 EXPECT_CALL(observer, OnTokenError()).Times(0); |
| 150 backend_->AllShouldSucceed(); | 150 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 151 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 151 SucceedRegister()); |
| 152 SimulateSuccessfulLoginAndRunPending(); | 152 SimulateSuccessfulLoginAndRunPending(); |
| 153 ASSERT_FALSE(fetcher_->IsTokenPending()); | 153 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 154 const std::string token(fetcher_->GetDeviceToken()); | 154 const std::string token(fetcher_->GetDeviceToken()); |
| 155 EXPECT_NE("", token); | 155 EXPECT_NE("", token); |
| 156 Mock::VerifyAndClearExpectations(&observer); | 156 Mock::VerifyAndClearExpectations(&observer); |
| 157 | 157 |
| 158 // Swap out the fetchers, including copying the device management token on | 158 // Swap out the fetchers, including copying the device management token on |
| 159 // disk to where the new fetcher expects it. | 159 // disk to where the new fetcher expects it. |
| 160 registrar.RemoveAll(); | 160 registrar.RemoveAll(); |
| 161 fetcher_ = NewTestFetcher(temp_user_data_dir_.path()); | 161 fetcher_ = NewTestFetcher(temp_user_data_dir_.path()); |
| 162 registrar.Init(fetcher_); | 162 registrar.Init(fetcher_); |
| 163 fetcher_->StartFetching(); | 163 fetcher_->StartFetching(); |
| 164 ASSERT_TRUE(fetcher_->IsTokenPending()); | 164 ASSERT_TRUE(fetcher_->IsTokenPending()); |
| 165 loop_.RunAllPending(); | 165 loop_.RunAllPending(); |
| 166 ASSERT_FALSE(fetcher_->IsTokenPending()); | 166 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 167 const std::string token2(fetcher_->GetDeviceToken()); | 167 const std::string token2(fetcher_->GetDeviceToken()); |
| 168 EXPECT_NE("", token2); | 168 EXPECT_NE("", token2); |
| 169 EXPECT_EQ(token, token2); | 169 EXPECT_EQ(token, token2); |
| 170 } | 170 } |
| 171 | 171 |
| 172 TEST_F(DeviceTokenFetcherTest, FailedServerRequest) { | 172 TEST_F(DeviceTokenFetcherTest, FailedServerRequest) { |
| 173 MockTokenAvailableObserver observer; | 173 MockTokenAvailableObserver observer; |
| 174 DeviceTokenFetcher::ObserverRegistrar registrar; | 174 DeviceTokenFetcher::ObserverRegistrar registrar; |
| 175 registrar.Init(fetcher_); | 175 registrar.Init(fetcher_); |
| 176 registrar.AddObserver(&observer); | 176 registrar.AddObserver(&observer); |
| 177 EXPECT_CALL(observer, OnTokenSuccess()).Times(0); | 177 EXPECT_CALL(observer, OnTokenSuccess()).Times(0); |
| 178 EXPECT_CALL(observer, OnTokenError()).Times(1); | 178 EXPECT_CALL(observer, OnTokenError()).Times(1); |
| 179 backend_->AllShouldFail(); | 179 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 180 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 180 FailRegister(DeviceManagementBackend::kErrorRequestFailed)); |
| 181 SimulateSuccessfulLoginAndRunPending(); | 181 SimulateSuccessfulLoginAndRunPending(); |
| 182 ASSERT_FALSE(fetcher_->IsTokenPending()); | 182 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 183 const std::string token(fetcher_->GetDeviceToken()); | 183 const std::string token(fetcher_->GetDeviceToken()); |
| 184 EXPECT_EQ("", token); | 184 EXPECT_EQ("", token); |
| 185 } | 185 } |
| 186 | 186 |
| 187 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { | 187 TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) { |
| 188 FilePath token_path; | 188 FilePath token_path; |
| 189 GetDeviceTokenPath(fetcher_, &token_path); | 189 GetDeviceTokenPath(fetcher_, &token_path); |
| 190 file_util::WriteFile(token_path, "foo", 3); | 190 file_util::WriteFile(token_path, "foo", 3); |
| 191 ASSERT_TRUE(file_util::PathExists(token_path)); | 191 ASSERT_TRUE(file_util::PathExists(token_path)); |
| 192 backend_->UnmanagedDevice(); | 192 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
| 193 EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1); | 193 FailRegister( |
| 194 DeviceManagementBackend::kErrorServiceManagementNotSupported)); |
| 194 SimulateSuccessfulLoginAndRunPending(); | 195 SimulateSuccessfulLoginAndRunPending(); |
| 195 ASSERT_FALSE(fetcher_->IsTokenPending()); | 196 ASSERT_FALSE(fetcher_->IsTokenPending()); |
| 196 ASSERT_EQ("", fetcher_->GetDeviceToken()); | 197 ASSERT_EQ("", fetcher_->GetDeviceToken()); |
| 197 ASSERT_EQ("", device_id(fetcher_)); | 198 ASSERT_EQ("", device_id(fetcher_)); |
| 198 ASSERT_FALSE(file_util::PathExists(token_path)); | 199 ASSERT_FALSE(file_util::PathExists(token_path)); |
| 199 } | 200 } |
| 200 | 201 |
| 201 } // namespace policy | 202 } // namespace policy |
| OLD | NEW |