| 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());
|
| +}
|
|
|