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

Unified Diff: chrome/browser/signin/oauth2_token_service_unittest.cc

Issue 22581003: Handling of multiple concurrent requests from different clients in OAuth2TokenService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/signin/oauth2_token_service_unittest.cc
diff --git a/chrome/browser/signin/oauth2_token_service_unittest.cc b/chrome/browser/signin/oauth2_token_service_unittest.cc
index 730c30365c6d8d4a32e7501e22b1c7e89ad6e326..983d593b0576a2474df99b1cb06dc5f0afefd21f 100644
--- a/chrome/browser/signin/oauth2_token_service_unittest.cc
+++ b/chrome/browser/signin/oauth2_token_service_unittest.cc
@@ -523,3 +523,53 @@ TEST_F(OAuth2TokenServiceTest, CancelRequestsForToken) {
EXPECT_EQ(0, consumer_.number_of_successful_tokens_);
EXPECT_EQ(3, consumer_.number_of_errors_);
}
+
+#if defined(OS_CHROMEOS)
+TEST_F(OAuth2TokenServiceTest, SameScopesRequestedForDifferentClients) {
+ std::string client_id_1("client1");
+ std::string client_secret_1("secret1");
+ std::string client_id_2("client2");
+ std::string client_secret_2("secret2");
+ std::set<std::string> scope_set;
+ scope_set.insert("scope1");
+ scope_set.insert("scope2");
+
+ oauth2_service_->set_refresh_token("refreshToken");
+
+ scoped_ptr<OAuth2TokenService::Request> request1(
+ oauth2_service_->StartRequestForClient(client_id_1,
+ client_secret_1,
+ scope_set,
+ &consumer_));
+ scoped_ptr<OAuth2TokenService::Request> request2(
+ oauth2_service_->StartRequestForClient(client_id_2,
+ client_secret_2,
+ scope_set,
+ &consumer_));
+ // Start a request that should be duplicate of |request1|.
+ scoped_ptr<OAuth2TokenService::Request> request3(
+ oauth2_service_->StartRequestForClient(client_id_1,
+ client_secret_1,
+ scope_set,
+ &consumer_));
+ base::RunLoop().RunUntilIdle();
+
+ // Check to make sure we have started exactly two fetchers.
+ net::TestURLFetcher* fetcher1 = factory_.GetFetcherByID(0);
+ ASSERT_TRUE(fetcher1);
+ net::TestURLFetcher* fetcher2 = factory_.GetFetcherByID(1);
+ ASSERT_TRUE(fetcher2);
+ EXPECT_FALSE(factory_.GetFetcherByID(2));
(NOT FOR CODE REVIEWS) 2013/08/07 19:56:49 Instead of this, why not expose a method like GetF
zel 2013/08/08 20:56:20 The biggest problem here was that |factory_| imple
Roger Tawa OOO till Jul 10th 2013/08/09 14:22:14 I meant putting these methods on OAuth2TokenServic
zel 2013/08/15 01:26:42 OK, check it out now... way more stuff needed to b
+
+ fetcher1->set_response_code(net::HTTP_OK);
+ fetcher1->SetResponseString(GetValidTokenResponse("token1", 3600));
+ fetcher1->delegate()->OnURLFetchComplete(fetcher1);
+
+ fetcher2->set_response_code(net::HTTP_OK);
+ fetcher2->SetResponseString(GetValidTokenResponse("token2", 3600));
+ fetcher2->delegate()->OnURLFetchComplete(fetcher2);
+
+ EXPECT_EQ(3, consumer_.number_of_successful_tokens_);
+ EXPECT_EQ(0, consumer_.number_of_errors_);
+}
+#endif

Powered by Google App Engine
This is Rietveld 408576698