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

Unified Diff: google_apis/gaia/merge_session_helper_unittest.cc

Issue 424233002: When the user signs in, make sure to set cookies on all reachable google (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments, add metric Created 6 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: google_apis/gaia/merge_session_helper_unittest.cc
diff --git a/google_apis/gaia/merge_session_helper_unittest.cc b/google_apis/gaia/merge_session_helper_unittest.cc
index 1fbe8a6898abf752e5cf238449517a8b200a2848..144a7f1d7984215a38be73934e6acc6a7b04cd78 100644
--- a/google_apis/gaia/merge_session_helper_unittest.cc
+++ b/google_apis/gaia/merge_session_helper_unittest.cc
@@ -98,10 +98,32 @@ class MergeSessionHelperTest : public testing::Test {
consumer->OnURLFetchComplete(NULL);
}
+ void SimulateGetCheckConnctionInfoSuccess(
+ net::TestURLFetcher* fetcher,
+ const std::string& data) {
+ fetcher->set_status(net::URLRequestStatus());
+ fetcher->set_response_code(200);
+ fetcher->SetResponseString(data);
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+ }
+
+ void SimulateGetCheckConnctionInfoResult(
+ net::URLFetcher* fetcher,
+ const std::string& result) {
+ net::TestURLFetcher* test_fetcher =
+ static_cast<net::TestURLFetcher*>(fetcher);
+ test_fetcher->set_status(net::URLRequestStatus());
+ test_fetcher->set_response_code(200);
+ test_fetcher->SetResponseString(result);
+ test_fetcher->delegate()->OnURLFetchComplete(fetcher);
+ }
+
const GoogleServiceAuthError& no_error() { return no_error_; }
const GoogleServiceAuthError& error() { return error_; }
const GoogleServiceAuthError& canceled() { return canceled_; }
+ net::TestURLFetcherFactory* factory() { return &factory_; }
+
private:
base::MessageLoop message_loop_;
net::TestURLFetcherFactory factory_;
@@ -305,3 +327,84 @@ TEST_F(MergeSessionHelperTest, DoubleSignout) {
SimulateLogoutSuccess(&helper);
SimulateMergeSessionSuccess(&helper, "token1");
}
+
+TEST_F(MergeSessionHelperTest, ExternalCcResultFetcher) {
+ InstrumentedMergeSessionHelper helper(token_service(), request_context());
+ MergeSessionHelper::ExternalCcResultFetcher result_fetcher(&helper);
+ result_fetcher.Start();
+
+ // Simulate a successful completion of GetCheckConnctionInfo.
+ net::TestURLFetcher* fetcher = factory()->GetFetcherByID(0);
+ ASSERT_TRUE(NULL != fetcher);
+ SimulateGetCheckConnctionInfoSuccess(fetcher,
+ "[{\"carryBackToken\": \"yt\", \"url\": \"http://www.yt.com\"},"
+ " {\"carryBackToken\": \"bl\", \"url\": \"http://www.bl.com\"}]");
+
+ // Simulate responses for the two connection URLs.
+ MergeSessionHelper::ExternalCcResultFetcher::URLToTokenAndFetcher fetchers =
+ result_fetcher.get_fetcher_map_for_testing();
+ ASSERT_EQ(2u, fetchers.size());
+ ASSERT_EQ(1u, fetchers.count(GURL("http://www.yt.com")));
+ ASSERT_EQ(1u, fetchers.count(GURL("http://www.bl.com")));
+
+ ASSERT_EQ("bl:null,yt:null", result_fetcher.GetExternalCcResult());
+ SimulateGetCheckConnctionInfoResult(
+ fetchers[GURL("http://www.yt.com")].second, "yt_result");
+ ASSERT_EQ("bl:null,yt:yt_result", result_fetcher.GetExternalCcResult());
+ SimulateGetCheckConnctionInfoResult(
+ fetchers[GURL("http://www.bl.com")].second, "bl_result");
+ ASSERT_EQ("bl:bl_result,yt:yt_result", result_fetcher.GetExternalCcResult());
+}
+
+TEST_F(MergeSessionHelperTest, ExternalCcResultFetcherTimeout) {
+ InstrumentedMergeSessionHelper helper(token_service(), request_context());
+ MergeSessionHelper::ExternalCcResultFetcher result_fetcher(&helper);
+ result_fetcher.Start();
+
+ // Simulate a successful completion of GetCheckConnctionInfo.
+ net::TestURLFetcher* fetcher = factory()->GetFetcherByID(0);
+ ASSERT_TRUE(NULL != fetcher);
+ SimulateGetCheckConnctionInfoSuccess(fetcher,
+ "[{\"carryBackToken\": \"yt\", \"url\": \"http://www.yt.com\"},"
+ " {\"carryBackToken\": \"bl\", \"url\": \"http://www.bl.com\"}]");
+
+ MergeSessionHelper::ExternalCcResultFetcher::URLToTokenAndFetcher fetchers =
+ result_fetcher.get_fetcher_map_for_testing();
+ ASSERT_EQ(2u, fetchers.size());
+ ASSERT_EQ(1u, fetchers.count(GURL("http://www.yt.com")));
+ ASSERT_EQ(1u, fetchers.count(GURL("http://www.bl.com")));
+
+ // Simulate response only for "yt".
+ ASSERT_EQ("bl:null,yt:null", result_fetcher.GetExternalCcResult());
+ SimulateGetCheckConnctionInfoResult(
+ fetchers[GURL("http://www.yt.com")].second, "yt_result");
+ ASSERT_EQ("bl:null,yt:yt_result", result_fetcher.GetExternalCcResult());
+
+ // Now timeout.
+ result_fetcher.TimeoutForTests();
+ ASSERT_EQ("bl:null,yt:yt_result", result_fetcher.GetExternalCcResult());
+ fetchers = result_fetcher.get_fetcher_map_for_testing();
+ ASSERT_EQ(0u, fetchers.size());
+}
+
+TEST_F(MergeSessionHelperTest, ExternalCcResultFetcherTruncate) {
+ InstrumentedMergeSessionHelper helper(token_service(), request_context());
+ MergeSessionHelper::ExternalCcResultFetcher result_fetcher(&helper);
+ result_fetcher.Start();
+
+ // Simulate a successful completion of GetCheckConnctionInfo.
+ net::TestURLFetcher* fetcher = factory()->GetFetcherByID(0);
+ ASSERT_TRUE(NULL != fetcher);
+ SimulateGetCheckConnctionInfoSuccess(fetcher,
+ "[{\"carryBackToken\": \"yt\", \"url\": \"http://www.yt.com\"}]");
+
+ MergeSessionHelper::ExternalCcResultFetcher::URLToTokenAndFetcher fetchers =
+ result_fetcher.get_fetcher_map_for_testing();
+ ASSERT_EQ(1u, fetchers.size());
+ ASSERT_EQ(1u, fetchers.count(GURL("http://www.yt.com")));
+
+ // Simulate response for "yt" with a string that is too long.
+ SimulateGetCheckConnctionInfoResult(
+ fetchers[GURL("http://www.yt.com")].second, "1234567890123456trunc");
+ ASSERT_EQ("yt:1234567890123456", result_fetcher.GetExternalCcResult());
+}

Powered by Google App Engine
This is Rietveld 408576698