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

Side by Side Diff: chrome/browser/signin/signin_manager_unittest.cc

Issue 964563002: Replace SetAuthenticatedUsername with SetAuthenticatedAccountId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@priv
Patch Set: rebased Created 5 years, 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "components/signin/core/browser/signin_manager.h" 5 #include "components/signin/core/browser/signin_manager.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 11 matching lines...) Expand all
22 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 22 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h"
23 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h" 23 #include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
24 #include "chrome/browser/signin/gaia_cookie_manager_service_factory.h" 24 #include "chrome/browser/signin/gaia_cookie_manager_service_factory.h"
25 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 25 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
26 #include "chrome/browser/signin/signin_manager_factory.h" 26 #include "chrome/browser/signin/signin_manager_factory.h"
27 #include "chrome/browser/signin/test_signin_client_builder.h" 27 #include "chrome/browser/signin/test_signin_client_builder.h"
28 #include "chrome/common/pref_names.h" 28 #include "chrome/common/pref_names.h"
29 #include "chrome/common/url_constants.h" 29 #include "chrome/common/url_constants.h"
30 #include "chrome/test/base/testing_browser_process.h" 30 #include "chrome/test/base/testing_browser_process.h"
31 #include "chrome/test/base/testing_profile.h" 31 #include "chrome/test/base/testing_profile.h"
32 #include "components/signin/core/browser/account_tracker_service.h"
32 #include "components/signin/core/browser/profile_oauth2_token_service.h" 33 #include "components/signin/core/browser/profile_oauth2_token_service.h"
33 #include "components/signin/core/browser/test_signin_client.h" 34 #include "components/signin/core/browser/test_signin_client.h"
34 #include "content/public/browser/child_process_security_policy.h" 35 #include "content/public/browser/child_process_security_policy.h"
35 #include "content/public/browser/notification_source.h" 36 #include "content/public/browser/notification_source.h"
36 #include "content/public/test/test_browser_thread_bundle.h" 37 #include "content/public/test/test_browser_thread_bundle.h"
37 #include "google_apis/gaia/gaia_constants.h" 38 #include "google_apis/gaia/gaia_constants.h"
38 #include "google_apis/gaia/gaia_urls.h" 39 #include "google_apis/gaia/gaia_urls.h"
39 #include "net/cookies/cookie_monster.h" 40 #include "net/cookies/cookie_monster.h"
40 #include "net/url_request/test_url_fetcher_factory.h" 41 #include "net/url_request/test_url_fetcher_factory.h"
41 #include "net/url_request/url_request.h" 42 #include "net/url_request/url_request.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(), 109 builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
109 BuildFakeProfileOAuth2TokenService); 110 BuildFakeProfileOAuth2TokenService);
110 builder.AddTestingFactory(ChromeSigninClientFactory::GetInstance(), 111 builder.AddTestingFactory(ChromeSigninClientFactory::GetInstance(),
111 signin::BuildTestSigninClient); 112 signin::BuildTestSigninClient);
112 builder.AddTestingFactory(SigninManagerFactory::GetInstance(), 113 builder.AddTestingFactory(SigninManagerFactory::GetInstance(),
113 SigninManagerBuild); 114 SigninManagerBuild);
114 builder.AddTestingFactory(AccountTrackerServiceFactory::GetInstance(), 115 builder.AddTestingFactory(AccountTrackerServiceFactory::GetInstance(),
115 FakeAccountTrackerService::Build); 116 FakeAccountTrackerService::Build);
116 profile_ = builder.Build(); 117 profile_ = builder.Build();
117 118
118 signin_client()->SetURLRequestContext(profile_->GetRequestContext()); 119 TestSigninClient* client =
120 static_cast<TestSigninClient*>(
121 ChromeSigninClientFactory::GetForProfile(profile()));
122 client->SetURLRequestContext(profile_->GetRequestContext());
119 } 123 }
120 124
121 void TearDown() override { 125 void TearDown() override {
122 if (manager_) 126 if (manager_)
123 manager_->RemoveObserver(&test_observer_); 127 manager_->RemoveObserver(&test_observer_);
124 128
125 // Destroy the SigninManager here, because it relies on profile() which is 129 // Destroy the SigninManager here, because it relies on profile() which is
126 // freed in the base class. 130 // freed in the base class.
127 if (naked_manager_) { 131 if (naked_manager_) {
128 naked_manager_->Shutdown(); 132 naked_manager_->Shutdown();
129 naked_manager_.reset(NULL); 133 naked_manager_.reset(NULL);
130 } 134 }
131 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); 135 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
132 136
133 // Manually destroy PrefService and Profile so that they are shutdown 137 // Manually destroy PrefService and Profile so that they are shutdown
134 // in the correct order. Both need to be destroyed before the 138 // in the correct order. Both need to be destroyed before the
135 // |thread_bundle_| member. 139 // |thread_bundle_| member.
136 profile_.reset(); 140 profile_.reset();
137 prefs_.reset(); // LocalState needs to outlive the profile. 141 prefs_.reset(); // LocalState needs to outlive the profile.
138 } 142 }
139 143
140 TestingProfile* profile() { return profile_.get(); } 144 TestingProfile* profile() { return profile_.get(); }
141 145
142 TestSigninClient* signin_client() { 146 TestSigninClient* signin_client() {
143 return static_cast<TestSigninClient*>( 147 return static_cast<TestSigninClient*>(
144 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile())); 148 ChromeSigninClientFactory::GetInstance()->GetForProfile(profile()));
145 } 149 }
146 150
151 // Seed the account tracker with information from logged in user. Normally
152 // this is done by UI code before calling SigninManager. Returns the string
153 // to use as the account_id.
154 std::string AddToAccountTracker(const std::string& gaia_id,
155 const std::string& email) {
156 AccountTrackerService* service =
157 AccountTrackerServiceFactory::GetForProfile(profile());
158 service->SeedAccountInfo(gaia_id, email);
159 return service->PickAccountIdForAccount(gaia_id, email);
160 }
161
147 // Sets up the signin manager as a service if other code will try to get it as 162 // Sets up the signin manager as a service if other code will try to get it as
148 // a PKS. 163 // a PKS.
149 void SetUpSigninManagerAsService() { 164 void SetUpSigninManagerAsService() {
150 DCHECK(!manager_); 165 DCHECK(!manager_);
151 DCHECK(!naked_manager_); 166 DCHECK(!naked_manager_);
152 manager_ = static_cast<SigninManager*>( 167 manager_ = static_cast<SigninManager*>(
153 SigninManagerFactory::GetForProfile(profile())); 168 SigninManagerFactory::GetForProfile(profile()));
154 manager_->AddObserver(&test_observer_); 169 manager_->AddObserver(&test_observer_);
155 } 170 }
156 171
(...skipping 15 matching lines...) Expand all
172 DCHECK(manager_); 187 DCHECK(manager_);
173 manager_->RemoveObserver(&test_observer_); 188 manager_->RemoveObserver(&test_observer_);
174 manager_->Shutdown(); 189 manager_->Shutdown();
175 if (naked_manager_) 190 if (naked_manager_)
176 naked_manager_.reset(NULL); 191 naked_manager_.reset(NULL);
177 manager_ = NULL; 192 manager_ = NULL;
178 } 193 }
179 194
180 void ExpectSignInWithRefreshTokenSuccess() { 195 void ExpectSignInWithRefreshTokenSuccess() {
181 EXPECT_TRUE(manager_->IsAuthenticated()); 196 EXPECT_TRUE(manager_->IsAuthenticated());
197 EXPECT_FALSE(manager_->GetAuthenticatedAccountId().empty());
198 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty());
182 199
183 ProfileOAuth2TokenService* token_service = 200 ProfileOAuth2TokenService* token_service =
184 ProfileOAuth2TokenServiceFactory::GetForProfile(profile()); 201 ProfileOAuth2TokenServiceFactory::GetForProfile(profile());
185 EXPECT_TRUE(token_service->RefreshTokenIsAvailable( 202 EXPECT_TRUE(token_service->RefreshTokenIsAvailable(
186 manager_->GetAuthenticatedUsername())); 203 manager_->GetAuthenticatedAccountId()));
187 204
188 // Should go into token service and stop. 205 // Should go into token service and stop.
189 EXPECT_EQ(1, test_observer_.num_successful_signins_); 206 EXPECT_EQ(1, test_observer_.num_successful_signins_);
190 EXPECT_EQ(0, test_observer_.num_failed_signins_); 207 EXPECT_EQ(0, test_observer_.num_failed_signins_);
191 } 208 }
192 209
193 void CompleteSigninCallback(const std::string& oauth_token) { 210 void CompleteSigninCallback(const std::string& oauth_token) {
194 oauth_tokens_fetched_.push_back(oauth_token); 211 oauth_tokens_fetched_.push_back(oauth_token);
195 manager_->CompletePendingSignin(); 212 manager_->CompletePendingSignin();
196 } 213 }
197 214
198 content::TestBrowserThreadBundle thread_bundle_; 215 content::TestBrowserThreadBundle thread_bundle_;
199 net::TestURLFetcherFactory factory_; 216 net::TestURLFetcherFactory factory_;
200 scoped_ptr<SigninManager> naked_manager_; 217 scoped_ptr<SigninManager> naked_manager_;
201 SigninManager* manager_; 218 SigninManager* manager_;
202 TestSigninManagerObserver test_observer_; 219 TestSigninManagerObserver test_observer_;
203 scoped_ptr<TestingProfile> profile_; 220 scoped_ptr<TestingProfile> profile_;
204 std::vector<std::string> oauth_tokens_fetched_; 221 std::vector<std::string> oauth_tokens_fetched_;
205 scoped_ptr<TestingPrefServiceSimple> prefs_; 222 scoped_ptr<TestingPrefServiceSimple> prefs_;
206 std::vector<std::string> cookies_; 223 std::vector<std::string> cookies_;
207 }; 224 };
208 225
209 TEST_F(SigninManagerTest, SignInWithRefreshToken) { 226 TEST_F(SigninManagerTest, SignInWithRefreshToken) {
210 SetUpSigninManagerAsService(); 227 SetUpSigninManagerAsService();
211 EXPECT_FALSE(manager_->IsAuthenticated()); 228 EXPECT_FALSE(manager_->IsAuthenticated());
212 229
230 std::string account_id = AddToAccountTracker("gaia_id", "user@gmail.com");
213 manager_->StartSignInWithRefreshToken( 231 manager_->StartSignInWithRefreshToken(
214 "rt1", 232 "rt",
233 "gaia_id",
215 "user@gmail.com", 234 "user@gmail.com",
216 "password", 235 "password",
217 SigninManager::OAuthTokenFetchedCallback()); 236 SigninManager::OAuthTokenFetchedCallback());
218 237
219 ExpectSignInWithRefreshTokenSuccess(); 238 ExpectSignInWithRefreshTokenSuccess();
220 239
221 // Should persist across resets. 240 // Should persist across resets.
222 ShutDownManager(); 241 ShutDownManager();
223 CreateNakedSigninManager(); 242 CreateNakedSigninManager();
224 manager_->Initialize(NULL); 243 manager_->Initialize(NULL);
225 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); 244 EXPECT_EQ(account_id, manager_->GetAuthenticatedAccountId());
226 } 245 }
227 246
228 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallbackComplete) { 247 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallbackComplete) {
229 SetUpSigninManagerAsService(); 248 SetUpSigninManagerAsService();
230 EXPECT_FALSE(manager_->IsAuthenticated()); 249 EXPECT_FALSE(manager_->IsAuthenticated());
231 250
232 // Since the password is empty, must verify the gaia cookies first. 251 // Since the password is empty, must verify the gaia cookies first.
233 SigninManager::OAuthTokenFetchedCallback callback = 252 SigninManager::OAuthTokenFetchedCallback callback =
234 base::Bind(&SigninManagerTest::CompleteSigninCallback, 253 base::Bind(&SigninManagerTest::CompleteSigninCallback,
235 base::Unretained(this)); 254 base::Unretained(this));
236 manager_->StartSignInWithRefreshToken( 255 manager_->StartSignInWithRefreshToken(
237 "rt1", 256 "rt",
257 "gaia_id",
238 "user@gmail.com", 258 "user@gmail.com",
239 "password", 259 "password",
240 callback); 260 callback);
241 261
242 ExpectSignInWithRefreshTokenSuccess(); 262 ExpectSignInWithRefreshTokenSuccess();
243 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); 263 ASSERT_EQ(1U, oauth_tokens_fetched_.size());
244 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); 264 EXPECT_EQ(oauth_tokens_fetched_[0], "rt");
245 } 265 }
246 266
247 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallsPostSignout) { 267 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallsPostSignout) {
248 SetUpSigninManagerAsService(); 268 SetUpSigninManagerAsService();
249 EXPECT_FALSE(manager_->IsAuthenticated()); 269 EXPECT_FALSE(manager_->IsAuthenticated());
250 270
251 std::string gaia_id = "12345"; 271 std::string gaia_id = "12345";
252 std::string email = "user@google.com"; 272 std::string email = "user@google.com";
253 273
254 FakeAccountTrackerService* account_tracker_service = 274 FakeAccountTrackerService* account_tracker_service =
255 static_cast<FakeAccountTrackerService*>( 275 static_cast<FakeAccountTrackerService*>(
256 AccountTrackerServiceFactory::GetForProfile(profile())); 276 AccountTrackerServiceFactory::GetForProfile(profile()));
257 account_tracker_service->SeedAccountInfo(gaia_id, email); 277 account_tracker_service->SeedAccountInfo(gaia_id, email);
258 account_tracker_service->EnableNetworkFetches(); 278 account_tracker_service->EnableNetworkFetches();
259 std::string account_id = account_tracker_service->PickAccountIdForAccount( 279 std::string account_id = account_tracker_service->PickAccountIdForAccount(
260 gaia_id, email); 280 gaia_id, email);
261 281
262 ASSERT_TRUE(signin_client()->get_signed_in_password().empty()); 282 ASSERT_TRUE(signin_client()->get_signed_in_password().empty());
263 283
264 manager_->StartSignInWithRefreshToken( 284 manager_->StartSignInWithRefreshToken(
265 "rt1", 285 "rt1",
286 gaia_id,
266 email, 287 email,
267 "password", 288 "password",
268 SigninManager::OAuthTokenFetchedCallback()); 289 SigninManager::OAuthTokenFetchedCallback());
269 290
270 // PostSignedIn is not called until the AccountTrackerService returns. 291 // PostSignedIn is not called until the AccountTrackerService returns.
271 ASSERT_EQ("", signin_client()->get_signed_in_password()); 292 ASSERT_EQ("", signin_client()->get_signed_in_password());
272 293
273 account_tracker_service->FakeUserInfoFetchSuccess( 294 account_tracker_service->FakeUserInfoFetchSuccess(
274 account_id, email, gaia_id, "google.com"); 295 account_id, email, gaia_id, "google.com");
275 296
276 // AccountTracker and SigninManager are both done and PostSignedIn was called. 297 // AccountTracker and SigninManager are both done and PostSignedIn was called.
277 ASSERT_EQ("password", signin_client()->get_signed_in_password()); 298 ASSERT_EQ("password", signin_client()->get_signed_in_password());
278 299
279 ExpectSignInWithRefreshTokenSuccess(); 300 ExpectSignInWithRefreshTokenSuccess();
280 301
281 } 302 }
282 303
283 TEST_F(SigninManagerTest, SignOut) { 304 TEST_F(SigninManagerTest, SignOut) {
284 SetUpSigninManagerAsService(); 305 SetUpSigninManagerAsService();
285 manager_->StartSignInWithRefreshToken( 306 manager_->StartSignInWithRefreshToken(
286 "rt1", 307 "rt",
308 "gaia_id",
287 "user@gmail.com", 309 "user@gmail.com",
288 "password", 310 "password",
289 SigninManager::OAuthTokenFetchedCallback()); 311 SigninManager::OAuthTokenFetchedCallback());
290 manager_->SignOut(signin_metrics::SIGNOUT_TEST); 312 manager_->SignOut(signin_metrics::SIGNOUT_TEST);
291 EXPECT_FALSE(manager_->IsAuthenticated()); 313 EXPECT_FALSE(manager_->IsAuthenticated());
314 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty());
315 EXPECT_TRUE(manager_->GetAuthenticatedAccountId().empty());
292 // Should not be persisted anymore 316 // Should not be persisted anymore
293 ShutDownManager(); 317 ShutDownManager();
294 CreateNakedSigninManager(); 318 CreateNakedSigninManager();
295 manager_->Initialize(NULL); 319 manager_->Initialize(NULL);
296 EXPECT_FALSE(manager_->IsAuthenticated()); 320 EXPECT_FALSE(manager_->IsAuthenticated());
321 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty());
322 EXPECT_TRUE(manager_->GetAuthenticatedAccountId().empty());
297 } 323 }
298 324
299 TEST_F(SigninManagerTest, SignOutWhileProhibited) { 325 TEST_F(SigninManagerTest, SignOutWhileProhibited) {
300 SetUpSigninManagerAsService(); 326 SetUpSigninManagerAsService();
301 EXPECT_FALSE(manager_->IsAuthenticated()); 327 EXPECT_FALSE(manager_->IsAuthenticated());
328 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty());
329 EXPECT_TRUE(manager_->GetAuthenticatedAccountId().empty());
302 330
303 manager_->SetAuthenticatedUsername("user@gmail.com"); 331 manager_->SetAuthenticatedAccountInfo("gaia_id", "user@gmail.com");
304 manager_->ProhibitSignout(true); 332 manager_->ProhibitSignout(true);
305 manager_->SignOut(signin_metrics::SIGNOUT_TEST); 333 manager_->SignOut(signin_metrics::SIGNOUT_TEST);
306 EXPECT_TRUE(manager_->IsAuthenticated()); 334 EXPECT_TRUE(manager_->IsAuthenticated());
307 manager_->ProhibitSignout(false); 335 manager_->ProhibitSignout(false);
308 manager_->SignOut(signin_metrics::SIGNOUT_TEST); 336 manager_->SignOut(signin_metrics::SIGNOUT_TEST);
309 EXPECT_FALSE(manager_->IsAuthenticated()); 337 EXPECT_FALSE(manager_->IsAuthenticated());
310 } 338 }
311 339
312 TEST_F(SigninManagerTest, Prohibited) { 340 TEST_F(SigninManagerTest, Prohibited) {
313 g_browser_process->local_state()->SetString( 341 g_browser_process->local_state()->SetString(
(...skipping 15 matching lines...) Expand all
329 CreateNakedSigninManager(); 357 CreateNakedSigninManager();
330 manager_->Initialize(g_browser_process->local_state()); 358 manager_->Initialize(g_browser_process->local_state());
331 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com")); 359 EXPECT_TRUE(manager_->IsAllowedUsername("test@google.com"));
332 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com")); 360 EXPECT_TRUE(manager_->IsAllowedUsername("happy@google.com"));
333 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com")); 361 EXPECT_FALSE(manager_->IsAllowedUsername("test@invalid.com"));
334 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com")); 362 EXPECT_FALSE(manager_->IsAllowedUsername("test@notgoogle.com"));
335 EXPECT_FALSE(manager_->IsAllowedUsername(std::string())); 363 EXPECT_FALSE(manager_->IsAllowedUsername(std::string()));
336 } 364 }
337 365
338 TEST_F(SigninManagerTest, ProhibitedAtStartup) { 366 TEST_F(SigninManagerTest, ProhibitedAtStartup) {
339 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername, 367 std::string account_id = AddToAccountTracker("gaia_id", "user@gmail.com");
340 "monkey@invalid.com"); 368 profile()->GetPrefs()->SetString(prefs::kGoogleServicesAccountId, account_id);
341 g_browser_process->local_state()->SetString( 369 g_browser_process->local_state()->SetString(
342 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); 370 prefs::kGoogleServicesUsernamePattern, ".*@google.com");
343 CreateNakedSigninManager(); 371 CreateNakedSigninManager();
344 manager_->Initialize(g_browser_process->local_state()); 372 manager_->Initialize(g_browser_process->local_state());
345 // Currently signed in user is prohibited by policy, so should be signed out. 373 // Currently signed in user is prohibited by policy, so should be signed out.
346 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); 374 EXPECT_EQ("", manager_->GetAuthenticatedUsername());
375 EXPECT_EQ("", manager_->GetAuthenticatedAccountId());
347 } 376 }
348 377
349 TEST_F(SigninManagerTest, ProhibitedAfterStartup) { 378 TEST_F(SigninManagerTest, ProhibitedAfterStartup) {
350 std::string user("monkey@invalid.com"); 379 std::string account_id = AddToAccountTracker("gaia_id", "user@gmail.com");
351 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); 380 profile()->GetPrefs()->SetString(prefs::kGoogleServicesAccountId, account_id);
352 CreateNakedSigninManager(); 381 CreateNakedSigninManager();
353 manager_->Initialize(g_browser_process->local_state()); 382 manager_->Initialize(g_browser_process->local_state());
354 EXPECT_EQ(user, manager_->GetAuthenticatedUsername()); 383 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername());
384 EXPECT_EQ(account_id, manager_->GetAuthenticatedAccountId());
355 // Update the profile - user should be signed out. 385 // Update the profile - user should be signed out.
356 g_browser_process->local_state()->SetString( 386 g_browser_process->local_state()->SetString(
357 prefs::kGoogleServicesUsernamePattern, ".*@google.com"); 387 prefs::kGoogleServicesUsernamePattern, ".*@google.com");
358 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); 388 EXPECT_EQ("", manager_->GetAuthenticatedUsername());
389 EXPECT_EQ("", manager_->GetAuthenticatedAccountId());
359 } 390 }
360 391
361 TEST_F(SigninManagerTest, ExternalSignIn) { 392 TEST_F(SigninManagerTest, ExternalSignIn) {
362 CreateNakedSigninManager(); 393 CreateNakedSigninManager();
363 manager_->Initialize(g_browser_process->local_state()); 394 manager_->Initialize(g_browser_process->local_state());
364 EXPECT_EQ("",
365 profile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername));
366 EXPECT_EQ("", manager_->GetAuthenticatedUsername()); 395 EXPECT_EQ("", manager_->GetAuthenticatedUsername());
396 EXPECT_EQ("", manager_->GetAuthenticatedAccountId());
367 EXPECT_EQ(0, test_observer_.num_successful_signins_); 397 EXPECT_EQ(0, test_observer_.num_successful_signins_);
368 398
369 manager_->OnExternalSigninCompleted("external@example.com"); 399 std::string account_id = AddToAccountTracker("gaia_id", "user@gmail.com");
400 manager_->OnExternalSigninCompleted(account_id);
370 EXPECT_EQ(1, test_observer_.num_successful_signins_); 401 EXPECT_EQ(1, test_observer_.num_successful_signins_);
371 EXPECT_EQ(0, test_observer_.num_failed_signins_); 402 EXPECT_EQ(0, test_observer_.num_failed_signins_);
372 EXPECT_EQ("external@example.com", 403 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername());
373 profile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername)); 404 EXPECT_EQ(account_id, manager_->GetAuthenticatedAccountId());
374 EXPECT_EQ("external@example.com", manager_->GetAuthenticatedUsername());
375 } 405 }
376 406
377 TEST_F(SigninManagerTest, SigninNotAllowed) { 407 TEST_F(SigninManagerTest, SigninNotAllowed) {
378 std::string user("user@google.com"); 408 std::string user("user@google.com");
379 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); 409 profile()->GetPrefs()->SetString(prefs::kGoogleServicesAccountId, user);
380 profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); 410 profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false);
381 SetUpSigninManagerAsService(); 411 CreateNakedSigninManager();
412 AddToAccountTracker("gaia_id", user);
413 manager_->Initialize(g_browser_process->local_state());
414 // Currently signing in is prohibited by policy, so should be signed out.
415 EXPECT_EQ("", manager_->GetAuthenticatedUsername());
416 EXPECT_EQ("", manager_->GetAuthenticatedAccountId());
382 } 417 }
418
419 TEST_F(SigninManagerTest, UpgradeToNewPrefs) {
420 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername,
421 "user@gmail.com");
422 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUserAccountId,
423 "account_id");
424 CreateNakedSigninManager();
425 manager_->Initialize(g_browser_process->local_state());
426 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername());
427
428 // TODO(rogerta): until the migration to gaia id, the account id will remain
429 // the old username.
430 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedAccountId());
431 EXPECT_EQ("user@gmail.com",
432 profile()->GetPrefs()->GetString(prefs::kGoogleServicesAccountId));
433 EXPECT_EQ("",
434 profile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername));
435
436 // Make sure account tracker was updated.
437 AccountTrackerService* service =
438 AccountTrackerServiceFactory::GetForProfile(profile());
439 AccountTrackerService::AccountInfo info = service->GetAccountInfo(
440 manager_->GetAuthenticatedAccountId());
441 EXPECT_EQ("user@gmail.com", info.email);
442 EXPECT_EQ("account_id", info.gaia);
443 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698