| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
| 8 #include "chrome/browser/managed_mode/managed_user_refresh_token_fetcher.h" | |
| 9 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" | 8 #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" |
| 9 #include "chrome/browser/supervised_user/supervised_user_refresh_token_fetcher.h
" |
| 10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/public/test/test_browser_thread_bundle.h" | 11 #include "content/public/test/test_browser_thread_bundle.h" |
| 12 #include "google_apis/gaia/gaia_constants.h" | 12 #include "google_apis/gaia/gaia_constants.h" |
| 13 #include "google_apis/gaia/gaia_oauth_client.h" | 13 #include "google_apis/gaia/gaia_oauth_client.h" |
| 14 #include "google_apis/gaia/gaia_urls.h" | 14 #include "google_apis/gaia/gaia_urls.h" |
| 15 #include "google_apis/gaia/google_service_auth_error.h" | 15 #include "google_apis/gaia/google_service_auth_error.h" |
| 16 #include "google_apis/gaia/oauth2_token_service.h" | 16 #include "google_apis/gaia/oauth2_token_service.h" |
| 17 #include "net/base/net_errors.h" | 17 #include "net/base/net_errors.h" |
| 18 #include "net/base/url_util.h" | 18 #include "net/base/url_util.h" |
| 19 #include "net/http/http_request_headers.h" | 19 #include "net/http/http_request_headers.h" |
| 20 #include "net/http/http_status_code.h" | 20 #include "net/http/http_status_code.h" |
| 21 #include "net/url_request/test_url_fetcher_factory.h" | 21 #include "net/url_request/test_url_fetcher_factory.h" |
| 22 #include "net/url_request/url_fetcher_delegate.h" | 22 #include "net/url_request/url_fetcher_delegate.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 | 26 |
| 27 const char kAccountId[] = "account_id"; | 27 const char kAccountId[] = "account_id"; |
| 28 const char kDeviceName[] = "Compy"; | 28 const char kDeviceName[] = "Compy"; |
| 29 const char kManagedUserId[] = "abcdef"; | 29 const char kSupervisedUserId[] = "abcdef"; |
| 30 | 30 |
| 31 const char kAccessToken[] = "accesstoken"; | 31 const char kAccessToken[] = "accesstoken"; |
| 32 const char kAuthorizationCode[] = "authorizationcode"; | 32 const char kAuthorizationCode[] = "authorizationcode"; |
| 33 const char kManagedUserToken[] = "managedusertoken"; | 33 const char kSupervisedUserToken[] = "supervisedusertoken"; |
| 34 const char kOAuth2RefreshToken[] = "refreshtoken"; | 34 const char kOAuth2RefreshToken[] = "refreshtoken"; |
| 35 | 35 |
| 36 const char kIssueTokenResponseFormat[] = | 36 const char kIssueTokenResponseFormat[] = |
| 37 "{" | 37 "{" |
| 38 " \"code\": \"%s\"" | 38 " \"code\": \"%s\"" |
| 39 "}"; | 39 "}"; |
| 40 | 40 |
| 41 const char kGetRefreshTokenResponseFormat[] = | 41 const char kGetRefreshTokenResponseFormat[] = |
| 42 "{" | 42 "{" |
| 43 " \"access_token\": \"<ignored>\"," | 43 " \"access_token\": \"<ignored>\"," |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 | 78 |
| 79 void VerifyTokenRequest( | 79 void VerifyTokenRequest( |
| 80 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests) { | 80 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests) { |
| 81 ASSERT_EQ(1u, requests.size()); | 81 ASSERT_EQ(1u, requests.size()); |
| 82 EXPECT_EQ(1u, requests[0].scopes.size()); | 82 EXPECT_EQ(1u, requests[0].scopes.size()); |
| 83 EXPECT_EQ(1u, requests[0].scopes.count(GaiaConstants::kOAuth1LoginScope)); | 83 EXPECT_EQ(1u, requests[0].scopes.count(GaiaConstants::kOAuth1LoginScope)); |
| 84 } | 84 } |
| 85 | 85 |
| 86 } // namespace | 86 } // namespace |
| 87 | 87 |
| 88 class ManagedUserRefreshTokenFetcherTest : public testing::Test { | 88 class SupervisedUserRefreshTokenFetcherTest : public testing::Test { |
| 89 public: | 89 public: |
| 90 ManagedUserRefreshTokenFetcherTest(); | 90 SupervisedUserRefreshTokenFetcherTest(); |
| 91 virtual ~ManagedUserRefreshTokenFetcherTest() {} | 91 virtual ~SupervisedUserRefreshTokenFetcherTest() {} |
| 92 | 92 |
| 93 protected: | 93 protected: |
| 94 void StartFetching(); | 94 void StartFetching(); |
| 95 | 95 |
| 96 net::TestURLFetcher* GetIssueTokenRequest(); | 96 net::TestURLFetcher* GetIssueTokenRequest(); |
| 97 net::TestURLFetcher* GetRefreshTokenRequest(); | 97 net::TestURLFetcher* GetRefreshTokenRequest(); |
| 98 | 98 |
| 99 void MakeOAuth2TokenServiceRequestSucceed(); | 99 void MakeOAuth2TokenServiceRequestSucceed(); |
| 100 void MakeOAuth2TokenServiceRequestFail(GoogleServiceAuthError::State error); | 100 void MakeOAuth2TokenServiceRequestFail(GoogleServiceAuthError::State error); |
| 101 void MakeIssueTokenRequestSucceed(); | 101 void MakeIssueTokenRequestSucceed(); |
| 102 void MakeRefreshTokenFetchSucceed(); | 102 void MakeRefreshTokenFetchSucceed(); |
| 103 | 103 |
| 104 void Reset(); | 104 void Reset(); |
| 105 | 105 |
| 106 const GoogleServiceAuthError& error() const { return error_; } | 106 const GoogleServiceAuthError& error() const { return error_; } |
| 107 const std::string& token() const { return token_; } | 107 const std::string& token() const { return token_; } |
| 108 | 108 |
| 109 private: | 109 private: |
| 110 void OnTokenFetched(const GoogleServiceAuthError& error, | 110 void OnTokenFetched(const GoogleServiceAuthError& error, |
| 111 const std::string& token); | 111 const std::string& token); |
| 112 | 112 |
| 113 content::TestBrowserThreadBundle thread_bundle_; | 113 content::TestBrowserThreadBundle thread_bundle_; |
| 114 TestingProfile profile_; | 114 TestingProfile profile_; |
| 115 FakeProfileOAuth2TokenService oauth2_token_service_; | 115 FakeProfileOAuth2TokenService oauth2_token_service_; |
| 116 net::TestURLFetcherFactory url_fetcher_factory_; | 116 net::TestURLFetcherFactory url_fetcher_factory_; |
| 117 scoped_ptr<ManagedUserRefreshTokenFetcher> token_fetcher_; | 117 scoped_ptr<SupervisedUserRefreshTokenFetcher> token_fetcher_; |
| 118 | 118 |
| 119 GoogleServiceAuthError error_; | 119 GoogleServiceAuthError error_; |
| 120 std::string token_; | 120 std::string token_; |
| 121 base::WeakPtrFactory<ManagedUserRefreshTokenFetcherTest> weak_ptr_factory_; | 121 base::WeakPtrFactory<SupervisedUserRefreshTokenFetcherTest> weak_ptr_factory_; |
| 122 }; | 122 }; |
| 123 | 123 |
| 124 ManagedUserRefreshTokenFetcherTest::ManagedUserRefreshTokenFetcherTest() | 124 SupervisedUserRefreshTokenFetcherTest::SupervisedUserRefreshTokenFetcherTest() |
| 125 : token_fetcher_( | 125 : token_fetcher_(SupervisedUserRefreshTokenFetcher::Create( |
| 126 ManagedUserRefreshTokenFetcher::Create(&oauth2_token_service_, | 126 &oauth2_token_service_, |
| 127 kAccountId, | 127 kAccountId, |
| 128 profile_.GetRequestContext())), | 128 profile_.GetRequestContext())), |
| 129 error_(GoogleServiceAuthError::NONE), | 129 error_(GoogleServiceAuthError::NONE), |
| 130 weak_ptr_factory_(this) {} | 130 weak_ptr_factory_(this) {} |
| 131 | 131 |
| 132 void ManagedUserRefreshTokenFetcherTest::StartFetching() { | 132 void SupervisedUserRefreshTokenFetcherTest::StartFetching() { |
| 133 oauth2_token_service_.IssueRefreshToken(kOAuth2RefreshToken); | 133 oauth2_token_service_.IssueRefreshToken(kOAuth2RefreshToken); |
| 134 token_fetcher_->Start(kManagedUserId, kDeviceName, | 134 token_fetcher_->Start( |
| 135 base::Bind( | 135 kSupervisedUserId, |
| 136 &ManagedUserRefreshTokenFetcherTest::OnTokenFetched, | 136 kDeviceName, |
| 137 weak_ptr_factory_.GetWeakPtr())); | 137 base::Bind( |
| 138 &SupervisedUserRefreshTokenFetcherTest::OnTokenFetched, |
| 139 weak_ptr_factory_.GetWeakPtr())); |
| 138 } | 140 } |
| 139 | 141 |
| 140 net::TestURLFetcher* | 142 net::TestURLFetcher* |
| 141 ManagedUserRefreshTokenFetcherTest::GetIssueTokenRequest() { | 143 SupervisedUserRefreshTokenFetcherTest::GetIssueTokenRequest() { |
| 142 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(1); | 144 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(1); |
| 143 if (!url_fetcher) | 145 if (!url_fetcher) |
| 144 return NULL; | 146 return NULL; |
| 145 | 147 |
| 146 EXPECT_EQ(GaiaUrls::GetInstance()->oauth2_issue_token_url(), | 148 EXPECT_EQ(GaiaUrls::GetInstance()->oauth2_issue_token_url(), |
| 147 url_fetcher->GetOriginalURL()); | 149 url_fetcher->GetOriginalURL()); |
| 148 std::string access_token; | 150 std::string access_token; |
| 149 net::HttpRequestHeaders headers; | 151 net::HttpRequestHeaders headers; |
| 150 url_fetcher->GetExtraRequestHeaders(&headers); | 152 url_fetcher->GetExtraRequestHeaders(&headers); |
| 151 EXPECT_TRUE(headers.GetHeader("Authorization", &access_token)); | 153 EXPECT_TRUE(headers.GetHeader("Authorization", &access_token)); |
| 152 EXPECT_EQ(std::string("Bearer ") + kAccessToken, access_token); | 154 EXPECT_EQ(std::string("Bearer ") + kAccessToken, access_token); |
| 153 const std::string upload_data = url_fetcher->upload_data(); | 155 const std::string upload_data = url_fetcher->upload_data(); |
| 154 std::string managed_user_id; | 156 std::string supervised_user_id; |
| 155 EXPECT_TRUE(GetValueForKey(upload_data, "profile_id", &managed_user_id)); | 157 EXPECT_TRUE(GetValueForKey(upload_data, "profile_id", &supervised_user_id)); |
| 156 EXPECT_EQ(kManagedUserId, managed_user_id); | 158 EXPECT_EQ(kSupervisedUserId, supervised_user_id); |
| 157 std::string device_name; | 159 std::string device_name; |
| 158 EXPECT_TRUE(GetValueForKey(upload_data, "device_name", &device_name)); | 160 EXPECT_TRUE(GetValueForKey(upload_data, "device_name", &device_name)); |
| 159 EXPECT_EQ(kDeviceName, device_name); | 161 EXPECT_EQ(kDeviceName, device_name); |
| 160 return url_fetcher; | 162 return url_fetcher; |
| 161 } | 163 } |
| 162 | 164 |
| 163 net::TestURLFetcher* | 165 net::TestURLFetcher* |
| 164 ManagedUserRefreshTokenFetcherTest::GetRefreshTokenRequest() { | 166 SupervisedUserRefreshTokenFetcherTest::GetRefreshTokenRequest() { |
| 165 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID( | 167 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID( |
| 166 gaia::GaiaOAuthClient::kUrlFetcherId); | 168 gaia::GaiaOAuthClient::kUrlFetcherId); |
| 167 if (!url_fetcher) | 169 if (!url_fetcher) |
| 168 return NULL; | 170 return NULL; |
| 169 | 171 |
| 170 EXPECT_EQ(GaiaUrls::GetInstance()->oauth2_token_url(), | 172 EXPECT_EQ(GaiaUrls::GetInstance()->oauth2_token_url(), |
| 171 url_fetcher->GetOriginalURL()); | 173 url_fetcher->GetOriginalURL()); |
| 172 std::string auth_code; | 174 std::string auth_code; |
| 173 EXPECT_TRUE(GetValueForKey(url_fetcher->upload_data(), "code", &auth_code)); | 175 EXPECT_TRUE(GetValueForKey(url_fetcher->upload_data(), "code", &auth_code)); |
| 174 EXPECT_EQ(kAuthorizationCode, auth_code); | 176 EXPECT_EQ(kAuthorizationCode, auth_code); |
| 175 return url_fetcher; | 177 return url_fetcher; |
| 176 } | 178 } |
| 177 | 179 |
| 178 void | 180 void |
| 179 ManagedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestSucceed() { | 181 SupervisedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestSucceed() { |
| 180 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = | 182 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = |
| 181 oauth2_token_service_.GetPendingRequests(); | 183 oauth2_token_service_.GetPendingRequests(); |
| 182 VerifyTokenRequest(requests); | 184 VerifyTokenRequest(requests); |
| 183 base::Time expiration_date = base::Time::Now() + | 185 base::Time expiration_date = base::Time::Now() + |
| 184 base::TimeDelta::FromHours(1); | 186 base::TimeDelta::FromHours(1); |
| 185 oauth2_token_service_.IssueTokenForScope(requests[0].scopes, | 187 oauth2_token_service_.IssueTokenForScope(requests[0].scopes, |
| 186 kAccessToken, | 188 kAccessToken, |
| 187 expiration_date); | 189 expiration_date); |
| 188 } | 190 } |
| 189 | 191 |
| 190 void | 192 void |
| 191 ManagedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestFail( | 193 SupervisedUserRefreshTokenFetcherTest::MakeOAuth2TokenServiceRequestFail( |
| 192 GoogleServiceAuthError::State error) { | 194 GoogleServiceAuthError::State error) { |
| 193 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = | 195 std::vector<FakeProfileOAuth2TokenService::PendingRequest> requests = |
| 194 oauth2_token_service_.GetPendingRequests(); | 196 oauth2_token_service_.GetPendingRequests(); |
| 195 VerifyTokenRequest(requests); | 197 VerifyTokenRequest(requests); |
| 196 oauth2_token_service_.IssueErrorForScope(requests[0].scopes, | 198 oauth2_token_service_.IssueErrorForScope(requests[0].scopes, |
| 197 GoogleServiceAuthError(error)); | 199 GoogleServiceAuthError(error)); |
| 198 } | 200 } |
| 199 | 201 |
| 200 void ManagedUserRefreshTokenFetcherTest::MakeIssueTokenRequestSucceed() { | 202 void SupervisedUserRefreshTokenFetcherTest::MakeIssueTokenRequestSucceed() { |
| 201 SendResponse(GetIssueTokenRequest(), | 203 SendResponse(GetIssueTokenRequest(), |
| 202 base::StringPrintf(kIssueTokenResponseFormat, | 204 base::StringPrintf(kIssueTokenResponseFormat, |
| 203 kAuthorizationCode)); | 205 kAuthorizationCode)); |
| 204 } | 206 } |
| 205 | 207 |
| 206 void ManagedUserRefreshTokenFetcherTest::MakeRefreshTokenFetchSucceed() { | 208 void SupervisedUserRefreshTokenFetcherTest::MakeRefreshTokenFetchSucceed() { |
| 207 SendResponse(GetRefreshTokenRequest(), | 209 SendResponse(GetRefreshTokenRequest(), |
| 208 base::StringPrintf(kGetRefreshTokenResponseFormat, | 210 base::StringPrintf(kGetRefreshTokenResponseFormat, |
| 209 kManagedUserToken)); | 211 kSupervisedUserToken)); |
| 210 } | 212 } |
| 211 | 213 |
| 212 void ManagedUserRefreshTokenFetcherTest::Reset() { | 214 void SupervisedUserRefreshTokenFetcherTest::Reset() { |
| 213 token_fetcher_.reset(); | 215 token_fetcher_.reset(); |
| 214 } | 216 } |
| 215 | 217 |
| 216 void ManagedUserRefreshTokenFetcherTest::OnTokenFetched( | 218 void SupervisedUserRefreshTokenFetcherTest::OnTokenFetched( |
| 217 const GoogleServiceAuthError& error, | 219 const GoogleServiceAuthError& error, |
| 218 const std::string& token) { | 220 const std::string& token) { |
| 219 error_ = error; | 221 error_ = error; |
| 220 token_ = token; | 222 token_ = token; |
| 221 } | 223 } |
| 222 | 224 |
| 223 // Tests -------------------------------------------------------- | 225 // Tests -------------------------------------------------------- |
| 224 | 226 |
| 225 TEST_F(ManagedUserRefreshTokenFetcherTest, Success) { | 227 TEST_F(SupervisedUserRefreshTokenFetcherTest, Success) { |
| 226 StartFetching(); | 228 StartFetching(); |
| 227 MakeOAuth2TokenServiceRequestSucceed(); | 229 MakeOAuth2TokenServiceRequestSucceed(); |
| 228 MakeIssueTokenRequestSucceed(); | 230 MakeIssueTokenRequestSucceed(); |
| 229 MakeRefreshTokenFetchSucceed(); | 231 MakeRefreshTokenFetchSucceed(); |
| 230 | 232 |
| 231 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 233 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 232 EXPECT_EQ(kManagedUserToken, token()); | 234 EXPECT_EQ(kSupervisedUserToken, token()); |
| 233 } | 235 } |
| 234 | 236 |
| 235 TEST_F(ManagedUserRefreshTokenFetcherTest, ExpiredAccessToken) { | 237 TEST_F(SupervisedUserRefreshTokenFetcherTest, ExpiredAccessToken) { |
| 236 StartFetching(); | 238 StartFetching(); |
| 237 MakeOAuth2TokenServiceRequestSucceed(); | 239 MakeOAuth2TokenServiceRequestSucceed(); |
| 238 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); | 240 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| 239 MakeOAuth2TokenServiceRequestSucceed(); | 241 MakeOAuth2TokenServiceRequestSucceed(); |
| 240 MakeIssueTokenRequestSucceed(); | 242 MakeIssueTokenRequestSucceed(); |
| 241 MakeRefreshTokenFetchSucceed(); | 243 MakeRefreshTokenFetchSucceed(); |
| 242 | 244 |
| 243 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 245 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 244 EXPECT_EQ(kManagedUserToken, token()); | 246 EXPECT_EQ(kSupervisedUserToken, token()); |
| 245 } | 247 } |
| 246 | 248 |
| 247 TEST_F(ManagedUserRefreshTokenFetcherTest, ExpiredAccessTokenRetry) { | 249 TEST_F(SupervisedUserRefreshTokenFetcherTest, ExpiredAccessTokenRetry) { |
| 248 // If we get a 401 error for the second time, we should give up instead of | 250 // If we get a 401 error for the second time, we should give up instead of |
| 249 // retrying again. | 251 // retrying again. |
| 250 StartFetching(); | 252 StartFetching(); |
| 251 MakeOAuth2TokenServiceRequestSucceed(); | 253 MakeOAuth2TokenServiceRequestSucceed(); |
| 252 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); | 254 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| 253 MakeOAuth2TokenServiceRequestSucceed(); | 255 MakeOAuth2TokenServiceRequestSucceed(); |
| 254 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); | 256 SetHttpError(GetIssueTokenRequest(), net::HTTP_UNAUTHORIZED); |
| 255 | 257 |
| 256 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); | 258 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| 257 EXPECT_EQ(net::ERR_FAILED, error().network_error()); | 259 EXPECT_EQ(net::ERR_FAILED, error().network_error()); |
| 258 EXPECT_EQ(std::string(), token()); | 260 EXPECT_EQ(std::string(), token()); |
| 259 } | 261 } |
| 260 | 262 |
| 261 TEST_F(ManagedUserRefreshTokenFetcherTest, MalformedIssueTokenResponse) { | 263 TEST_F(SupervisedUserRefreshTokenFetcherTest, MalformedIssueTokenResponse) { |
| 262 StartFetching(); | 264 StartFetching(); |
| 263 MakeOAuth2TokenServiceRequestSucceed(); | 265 MakeOAuth2TokenServiceRequestSucceed(); |
| 264 SendResponse(GetIssueTokenRequest(), "choke"); | 266 SendResponse(GetIssueTokenRequest(), "choke"); |
| 265 | 267 |
| 266 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); | 268 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| 267 EXPECT_EQ(net::ERR_INVALID_RESPONSE, error().network_error()); | 269 EXPECT_EQ(net::ERR_INVALID_RESPONSE, error().network_error()); |
| 268 EXPECT_EQ(std::string(), token()); | 270 EXPECT_EQ(std::string(), token()); |
| 269 } | 271 } |
| 270 | 272 |
| 271 TEST_F(ManagedUserRefreshTokenFetcherTest, FetchAccessTokenFailure) { | 273 TEST_F(SupervisedUserRefreshTokenFetcherTest, FetchAccessTokenFailure) { |
| 272 StartFetching(); | 274 StartFetching(); |
| 273 MakeOAuth2TokenServiceRequestFail( | 275 MakeOAuth2TokenServiceRequestFail( |
| 274 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 276 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
| 275 | 277 |
| 276 EXPECT_EQ(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS, error().state()); | 278 EXPECT_EQ(GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS, error().state()); |
| 277 EXPECT_EQ(std::string(), token()); | 279 EXPECT_EQ(std::string(), token()); |
| 278 } | 280 } |
| 279 | 281 |
| 280 TEST_F(ManagedUserRefreshTokenFetcherTest, IssueTokenNetworkError) { | 282 TEST_F(SupervisedUserRefreshTokenFetcherTest, IssueTokenNetworkError) { |
| 281 StartFetching(); | 283 StartFetching(); |
| 282 MakeOAuth2TokenServiceRequestSucceed(); | 284 MakeOAuth2TokenServiceRequestSucceed(); |
| 283 SetNetworkError(GetIssueTokenRequest(), net::ERR_SSL_PROTOCOL_ERROR); | 285 SetNetworkError(GetIssueTokenRequest(), net::ERR_SSL_PROTOCOL_ERROR); |
| 284 | 286 |
| 285 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); | 287 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| 286 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, error().network_error()); | 288 EXPECT_EQ(net::ERR_SSL_PROTOCOL_ERROR, error().network_error()); |
| 287 EXPECT_EQ(std::string(), token()); | 289 EXPECT_EQ(std::string(), token()); |
| 288 } | 290 } |
| 289 | 291 |
| 290 TEST_F(ManagedUserRefreshTokenFetcherTest, FetchRefreshTokenNetworkError) { | 292 TEST_F(SupervisedUserRefreshTokenFetcherTest, FetchRefreshTokenNetworkError) { |
| 291 StartFetching(); | 293 StartFetching(); |
| 292 MakeOAuth2TokenServiceRequestSucceed(); | 294 MakeOAuth2TokenServiceRequestSucceed(); |
| 293 MakeIssueTokenRequestSucceed(); | 295 MakeIssueTokenRequestSucceed(); |
| 294 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); | 296 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); |
| 295 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 297 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 296 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); | 298 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); |
| 297 | 299 |
| 298 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); | 300 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| 299 EXPECT_EQ(net::ERR_FAILED, error().network_error()); | 301 EXPECT_EQ(net::ERR_FAILED, error().network_error()); |
| 300 EXPECT_EQ(std::string(), token()); | 302 EXPECT_EQ(std::string(), token()); |
| 301 } | 303 } |
| 302 | 304 |
| 303 TEST_F(ManagedUserRefreshTokenFetcherTest, | 305 TEST_F(SupervisedUserRefreshTokenFetcherTest, |
| 304 FetchRefreshTokenTransientNetworkError) { | 306 FetchRefreshTokenTransientNetworkError) { |
| 305 StartFetching(); | 307 StartFetching(); |
| 306 MakeOAuth2TokenServiceRequestSucceed(); | 308 MakeOAuth2TokenServiceRequestSucceed(); |
| 307 MakeIssueTokenRequestSucceed(); | 309 MakeIssueTokenRequestSucceed(); |
| 308 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); | 310 SetNetworkError(GetRefreshTokenRequest(), net::ERR_CONNECTION_REFUSED); |
| 309 | 311 |
| 310 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 312 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 311 MakeRefreshTokenFetchSucceed(); | 313 MakeRefreshTokenFetchSucceed(); |
| 312 | 314 |
| 313 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 315 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 314 EXPECT_EQ(kManagedUserToken, token()); | 316 EXPECT_EQ(kSupervisedUserToken, token()); |
| 315 } | 317 } |
| 316 | 318 |
| 317 TEST_F(ManagedUserRefreshTokenFetcherTest, FetchRefreshTokenBadRequest) { | 319 TEST_F(SupervisedUserRefreshTokenFetcherTest, FetchRefreshTokenBadRequest) { |
| 318 StartFetching(); | 320 StartFetching(); |
| 319 MakeOAuth2TokenServiceRequestSucceed(); | 321 MakeOAuth2TokenServiceRequestSucceed(); |
| 320 MakeIssueTokenRequestSucceed(); | 322 MakeIssueTokenRequestSucceed(); |
| 321 SetHttpError(GetRefreshTokenRequest(), net::HTTP_BAD_REQUEST); | 323 SetHttpError(GetRefreshTokenRequest(), net::HTTP_BAD_REQUEST); |
| 322 | 324 |
| 323 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); | 325 EXPECT_EQ(GoogleServiceAuthError::CONNECTION_FAILED, error().state()); |
| 324 EXPECT_EQ(net::ERR_FAILED, error().network_error()); | 326 EXPECT_EQ(net::ERR_FAILED, error().network_error()); |
| 325 EXPECT_EQ(std::string(), token()); | 327 EXPECT_EQ(std::string(), token()); |
| 326 } | 328 } |
| 327 | 329 |
| 328 TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileFetchingAccessToken) { | 330 TEST_F(SupervisedUserRefreshTokenFetcherTest, CancelWhileFetchingAccessToken) { |
| 329 StartFetching(); | 331 StartFetching(); |
| 330 Reset(); | 332 Reset(); |
| 331 | 333 |
| 332 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 334 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 333 EXPECT_EQ(std::string(), token()); | 335 EXPECT_EQ(std::string(), token()); |
| 334 } | 336 } |
| 335 | 337 |
| 336 TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileCallingIssueToken) { | 338 TEST_F(SupervisedUserRefreshTokenFetcherTest, CancelWhileCallingIssueToken) { |
| 337 StartFetching(); | 339 StartFetching(); |
| 338 MakeOAuth2TokenServiceRequestSucceed(); | 340 MakeOAuth2TokenServiceRequestSucceed(); |
| 339 Reset(); | 341 Reset(); |
| 340 | 342 |
| 341 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 343 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 342 EXPECT_EQ(std::string(), token()); | 344 EXPECT_EQ(std::string(), token()); |
| 343 } | 345 } |
| 344 | 346 |
| 345 TEST_F(ManagedUserRefreshTokenFetcherTest, CancelWhileFetchingRefreshToken) { | 347 TEST_F(SupervisedUserRefreshTokenFetcherTest, CancelWhileFetchingRefreshToken) { |
| 346 StartFetching(); | 348 StartFetching(); |
| 347 MakeOAuth2TokenServiceRequestSucceed(); | 349 MakeOAuth2TokenServiceRequestSucceed(); |
| 348 MakeIssueTokenRequestSucceed(); | 350 MakeIssueTokenRequestSucceed(); |
| 349 Reset(); | 351 Reset(); |
| 350 | 352 |
| 351 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); | 353 EXPECT_EQ(GoogleServiceAuthError::NONE, error().state()); |
| 352 EXPECT_EQ(std::string(), token()); | 354 EXPECT_EQ(std::string(), token()); |
| 353 } | 355 } |
| OLD | NEW |