Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 158 void ShutDownManager() { | 158 void ShutDownManager() { |
| 159 DCHECK(manager_); | 159 DCHECK(manager_); |
| 160 manager_->RemoveObserver(&test_observer_); | 160 manager_->RemoveObserver(&test_observer_); |
| 161 manager_->Shutdown(); | 161 manager_->Shutdown(); |
| 162 if (naked_manager_) | 162 if (naked_manager_) |
| 163 naked_manager_.reset(NULL); | 163 naked_manager_.reset(NULL); |
| 164 manager_ = NULL; | 164 manager_ = NULL; |
| 165 } | 165 } |
| 166 | 166 |
| 167 void ExpectSignInWithRefreshTokenSuccess() { | 167 void ExpectSignInWithRefreshTokenSuccess() { |
| 168 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 168 EXPECT_FALSE(!manager_->IsAuthenticated()); |
|
guohui
2014/08/27 18:11:01
nits: EXPECT_TRUE(manager_>IsAuthenticated());
Roger Tawa OOO till Jul 10th
2014/08/27 18:53:46
Done.
| |
| 169 | 169 |
| 170 ProfileOAuth2TokenService* token_service = | 170 ProfileOAuth2TokenService* token_service = |
| 171 ProfileOAuth2TokenServiceFactory::GetForProfile(profile()); | 171 ProfileOAuth2TokenServiceFactory::GetForProfile(profile()); |
| 172 EXPECT_TRUE(token_service->RefreshTokenIsAvailable( | 172 EXPECT_TRUE(token_service->RefreshTokenIsAvailable( |
| 173 manager_->GetAuthenticatedUsername())); | 173 manager_->GetAuthenticatedUsername())); |
| 174 | 174 |
| 175 // Should go into token service and stop. | 175 // Should go into token service and stop. |
| 176 EXPECT_EQ(1, test_observer_.num_successful_signins_); | 176 EXPECT_EQ(1, test_observer_.num_successful_signins_); |
| 177 EXPECT_EQ(0, test_observer_.num_failed_signins_); | 177 EXPECT_EQ(0, test_observer_.num_failed_signins_); |
| 178 } | 178 } |
| 179 | 179 |
| 180 void CompleteSigninCallback(const std::string& oauth_token) { | 180 void CompleteSigninCallback(const std::string& oauth_token) { |
| 181 oauth_tokens_fetched_.push_back(oauth_token); | 181 oauth_tokens_fetched_.push_back(oauth_token); |
| 182 manager_->CompletePendingSignin(); | 182 manager_->CompletePendingSignin(); |
| 183 } | 183 } |
| 184 | 184 |
| 185 content::TestBrowserThreadBundle thread_bundle_; | 185 content::TestBrowserThreadBundle thread_bundle_; |
| 186 net::TestURLFetcherFactory factory_; | 186 net::TestURLFetcherFactory factory_; |
| 187 scoped_ptr<SigninManager> naked_manager_; | 187 scoped_ptr<SigninManager> naked_manager_; |
| 188 SigninManager* manager_; | 188 SigninManager* manager_; |
| 189 TestSigninManagerObserver test_observer_; | 189 TestSigninManagerObserver test_observer_; |
| 190 scoped_ptr<TestingProfile> profile_; | 190 scoped_ptr<TestingProfile> profile_; |
| 191 std::vector<std::string> oauth_tokens_fetched_; | 191 std::vector<std::string> oauth_tokens_fetched_; |
| 192 scoped_ptr<TestingPrefServiceSimple> prefs_; | 192 scoped_ptr<TestingPrefServiceSimple> prefs_; |
| 193 std::vector<std::string> cookies_; | 193 std::vector<std::string> cookies_; |
| 194 }; | 194 }; |
| 195 | 195 |
| 196 TEST_F(SigninManagerTest, SignInWithRefreshToken) { | 196 TEST_F(SigninManagerTest, SignInWithRefreshToken) { |
| 197 SetUpSigninManagerAsService(); | 197 SetUpSigninManagerAsService(); |
| 198 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 198 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 199 | 199 |
| 200 manager_->StartSignInWithRefreshToken( | 200 manager_->StartSignInWithRefreshToken( |
| 201 "rt1", | 201 "rt1", |
| 202 "user@gmail.com", | 202 "user@gmail.com", |
| 203 "password", | 203 "password", |
| 204 SigninManager::OAuthTokenFetchedCallback()); | 204 SigninManager::OAuthTokenFetchedCallback()); |
| 205 | 205 |
| 206 ExpectSignInWithRefreshTokenSuccess(); | 206 ExpectSignInWithRefreshTokenSuccess(); |
| 207 | 207 |
| 208 // Should persist across resets. | 208 // Should persist across resets. |
| 209 ShutDownManager(); | 209 ShutDownManager(); |
| 210 CreateNakedSigninManager(); | 210 CreateNakedSigninManager(); |
| 211 manager_->Initialize(NULL); | 211 manager_->Initialize(NULL); |
| 212 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); | 212 EXPECT_EQ("user@gmail.com", manager_->GetAuthenticatedUsername()); |
| 213 } | 213 } |
| 214 | 214 |
| 215 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallbackComplete) { | 215 TEST_F(SigninManagerTest, SignInWithRefreshTokenCallbackComplete) { |
| 216 SetUpSigninManagerAsService(); | 216 SetUpSigninManagerAsService(); |
| 217 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 217 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 218 | 218 |
| 219 // Since the password is empty, must verify the gaia cookies first. | 219 // Since the password is empty, must verify the gaia cookies first. |
| 220 SigninManager::OAuthTokenFetchedCallback callback = | 220 SigninManager::OAuthTokenFetchedCallback callback = |
| 221 base::Bind(&SigninManagerTest::CompleteSigninCallback, | 221 base::Bind(&SigninManagerTest::CompleteSigninCallback, |
| 222 base::Unretained(this)); | 222 base::Unretained(this)); |
| 223 manager_->StartSignInWithRefreshToken( | 223 manager_->StartSignInWithRefreshToken( |
| 224 "rt1", | 224 "rt1", |
| 225 "user@gmail.com", | 225 "user@gmail.com", |
| 226 "password", | 226 "password", |
| 227 callback); | 227 callback); |
| 228 | 228 |
| 229 ExpectSignInWithRefreshTokenSuccess(); | 229 ExpectSignInWithRefreshTokenSuccess(); |
| 230 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); | 230 ASSERT_EQ(1U, oauth_tokens_fetched_.size()); |
| 231 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); | 231 EXPECT_EQ(oauth_tokens_fetched_[0], "rt1"); |
| 232 } | 232 } |
| 233 | 233 |
| 234 TEST_F(SigninManagerTest, SignOut) { | 234 TEST_F(SigninManagerTest, SignOut) { |
| 235 SetUpSigninManagerAsService(); | 235 SetUpSigninManagerAsService(); |
| 236 manager_->StartSignInWithRefreshToken( | 236 manager_->StartSignInWithRefreshToken( |
| 237 "rt1", | 237 "rt1", |
| 238 "user@gmail.com", | 238 "user@gmail.com", |
| 239 "password", | 239 "password", |
| 240 SigninManager::OAuthTokenFetchedCallback()); | 240 SigninManager::OAuthTokenFetchedCallback()); |
| 241 manager_->SignOut(signin_metrics::SIGNOUT_TEST); | 241 manager_->SignOut(signin_metrics::SIGNOUT_TEST); |
| 242 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 242 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 243 // Should not be persisted anymore | 243 // Should not be persisted anymore |
| 244 ShutDownManager(); | 244 ShutDownManager(); |
| 245 CreateNakedSigninManager(); | 245 CreateNakedSigninManager(); |
| 246 manager_->Initialize(NULL); | 246 manager_->Initialize(NULL); |
| 247 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 247 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(SigninManagerTest, SignOutWhileProhibited) { | 250 TEST_F(SigninManagerTest, SignOutWhileProhibited) { |
| 251 SetUpSigninManagerAsService(); | 251 SetUpSigninManagerAsService(); |
| 252 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 252 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 253 | 253 |
| 254 manager_->SetAuthenticatedUsername("user@gmail.com"); | 254 manager_->SetAuthenticatedUsername("user@gmail.com"); |
| 255 manager_->ProhibitSignout(true); | 255 manager_->ProhibitSignout(true); |
| 256 manager_->SignOut(signin_metrics::SIGNOUT_TEST); | 256 manager_->SignOut(signin_metrics::SIGNOUT_TEST); |
| 257 EXPECT_FALSE(manager_->GetAuthenticatedUsername().empty()); | 257 EXPECT_TRUE(manager_->IsAuthenticated()); |
| 258 manager_->ProhibitSignout(false); | 258 manager_->ProhibitSignout(false); |
| 259 manager_->SignOut(signin_metrics::SIGNOUT_TEST); | 259 manager_->SignOut(signin_metrics::SIGNOUT_TEST); |
| 260 EXPECT_TRUE(manager_->GetAuthenticatedUsername().empty()); | 260 EXPECT_FALSE(manager_->IsAuthenticated()); |
| 261 } | 261 } |
| 262 | 262 |
| 263 TEST_F(SigninManagerTest, TestIsWebBasedSigninFlowURL) { | 263 TEST_F(SigninManagerTest, TestIsWebBasedSigninFlowURL) { |
| 264 EXPECT_FALSE(SigninManager::IsWebBasedSigninFlowURL( | 264 EXPECT_FALSE(SigninManager::IsWebBasedSigninFlowURL( |
| 265 GURL("http://www.google.com"))); | 265 GURL("http://www.google.com"))); |
| 266 EXPECT_TRUE(SigninManager::IsWebBasedSigninFlowURL( | 266 EXPECT_TRUE(SigninManager::IsWebBasedSigninFlowURL( |
| 267 GURL("https://accounts.google.com/ServiceLogin?service=chromiumsync"))); | 267 GURL("https://accounts.google.com/ServiceLogin?service=chromiumsync"))); |
| 268 EXPECT_FALSE(SigninManager::IsWebBasedSigninFlowURL( | 268 EXPECT_FALSE(SigninManager::IsWebBasedSigninFlowURL( |
| 269 GURL("http://accounts.google.com/ServiceLogin?service=chromiumsync"))); | 269 GURL("http://accounts.google.com/ServiceLogin?service=chromiumsync"))); |
| 270 // http, not https, should not be treated as web based signin. | 270 // http, not https, should not be treated as web based signin. |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 341 profile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername)); | 341 profile()->GetPrefs()->GetString(prefs::kGoogleServicesUsername)); |
| 342 EXPECT_EQ("external@example.com", manager_->GetAuthenticatedUsername()); | 342 EXPECT_EQ("external@example.com", manager_->GetAuthenticatedUsername()); |
| 343 } | 343 } |
| 344 | 344 |
| 345 TEST_F(SigninManagerTest, SigninNotAllowed) { | 345 TEST_F(SigninManagerTest, SigninNotAllowed) { |
| 346 std::string user("user@google.com"); | 346 std::string user("user@google.com"); |
| 347 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); | 347 profile()->GetPrefs()->SetString(prefs::kGoogleServicesUsername, user); |
| 348 profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); | 348 profile()->GetPrefs()->SetBoolean(prefs::kSigninAllowed, false); |
| 349 SetUpSigninManagerAsService(); | 349 SetUpSigninManagerAsService(); |
| 350 } | 350 } |
| OLD | NEW |