diff options
Diffstat (limited to 'chrome/browser/sync/glue/http_bridge_unittest.cc')
-rw-r--r-- | chrome/browser/sync/glue/http_bridge_unittest.cc | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/chrome/browser/sync/glue/http_bridge_unittest.cc b/chrome/browser/sync/glue/http_bridge_unittest.cc deleted file mode 100644 index 4dd9a9b..0000000 --- a/chrome/browser/sync/glue/http_bridge_unittest.cc +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#ifdef CHROME_PERSONALIZATION - -#include "base/thread.h" -#include "chrome/browser/sync/glue/http_bridge.h" -#include "net/url_request/url_request_unittest.h" -#include "testing/gtest/include/gtest/gtest.h" - -using browser_sync::HttpBridge; - -namespace { -// TODO(timsteele): Should use PathService here. See Chromium Issue 3113. -const char16 kDocRoot[] = L"chrome/test/data"; -} - -class HttpBridgeTest : public testing::Test { - public: - HttpBridgeTest() : io_thread_("HttpBridgeTest IO thread") { - } - - virtual void SetUp() { - base::Thread::Options options; - options.message_loop_type = MessageLoop::TYPE_IO; - io_thread_.StartWithOptions(options); - } - - virtual void TearDown() { - io_thread_.Stop(); - } - - HttpBridge* BuildBridge() { - if (!request_context_) { - request_context_ = new HttpBridge::RequestContext( - new TestURLRequestContext()); - } - HttpBridge* bridge = new HttpBridge(request_context_, - io_thread_.message_loop()); - bridge->use_io_loop_for_testing_ = true; - return bridge; - } - - MessageLoop* io_thread_loop() { return io_thread_.message_loop(); } - private: - // Separate thread for IO used by the HttpBridge. - scoped_refptr<HttpBridge::RequestContext> request_context_; - base::Thread io_thread_; -}; - -// An HttpBridge that doesn't actually make network requests and just calls -// back with dummy response info. -class ShuntedHttpBridge : public HttpBridge { - public: - ShuntedHttpBridge(const URLRequestContext* baseline_context, - MessageLoop* io_loop, HttpBridgeTest* test) - : HttpBridge(new HttpBridge::RequestContext(baseline_context), - io_loop), test_(test) { } - protected: - virtual void MakeAsynchronousPost() { - ASSERT_TRUE(MessageLoop::current() == test_->io_thread_loop()); - // We don't actually want to make a request for this test, so just callback - // as if it completed. - test_->io_thread_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, &ShuntedHttpBridge::CallOnURLFetchComplete)); - } - private: - void CallOnURLFetchComplete() { - ASSERT_TRUE(MessageLoop::current() == test_->io_thread_loop()); - // We return one cookie and a dummy content response. - ResponseCookies cookies; - cookies.push_back("cookie1"); - std::string response_content = "success!"; - OnURLFetchComplete(NULL, GURL("www.google.com"), URLRequestStatus(), - 200, cookies, response_content); - } - HttpBridgeTest* test_; -}; - -// Test the HttpBridge without actually making any network requests. -TEST_F(HttpBridgeTest, TestMakeSynchronousPostShunted) { - scoped_refptr<HttpBridge> http_bridge(new ShuntedHttpBridge( - new TestURLRequestContext(), io_thread_loop(), this)); - http_bridge->SetUserAgent("bob"); - http_bridge->SetURL("http://www.google.com", 9999); - http_bridge->SetPostPayload("text/plain", 2, " "); - - int os_error = 0; - int response_code = 0; - bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); - EXPECT_TRUE(success); - EXPECT_EQ(200, response_code); - EXPECT_EQ(0, os_error); - EXPECT_EQ(1, http_bridge->GetResponseCookieCount()); - // TODO(timsteele): This is a valid test condition, it's just temporarily - // broken so that HttpBridge satisfies the ServerConnectionManager. -#if FIXED_SYNC_BACKEND_COOKIE_PARSING - EXPECT_EQ(std::string("cookie1"), - std::string(http_bridge->GetResponseCookieAt(0))); -#endif - EXPECT_EQ(8, http_bridge->GetResponseContentLength()); - EXPECT_EQ(std::string("success!"), - std::string(http_bridge->GetResponseContent())); -} - -// Full round-trip test of the HttpBridge, using default UA string and -// no request cookies. -TEST_F(HttpBridgeTest, TestMakeSynchronousPostLiveWithPayload) { - scoped_refptr<HTTPTestServer> server = HTTPTestServer::CreateServer(kDocRoot, - NULL); - ASSERT_TRUE(NULL != server.get()); - - scoped_refptr<HttpBridge> http_bridge(BuildBridge()); - - std::string payload = "this should be echoed back"; - GURL echo = server->TestServerPage("echo"); - http_bridge->SetURL(echo.spec().c_str(), echo.IntPort()); - http_bridge->SetPostPayload("application/x-www-form-urlencoded", - payload.length() + 1, payload.c_str()); - int os_error = 0; - int response_code = 0; - bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); - EXPECT_TRUE(success); - EXPECT_EQ(200, response_code); - EXPECT_EQ(0, os_error); - EXPECT_EQ(0, http_bridge->GetResponseCookieCount()); - EXPECT_EQ(payload.length() + 1, http_bridge->GetResponseContentLength()); - EXPECT_EQ(payload, std::string(http_bridge->GetResponseContent())); -} - -// Full round-trip test of the HttpBridge, using custom UA string and -// multiple request cookies. -TEST_F(HttpBridgeTest, TestMakeSynchronousPostLiveComprehensive) { - scoped_refptr<HTTPTestServer> server = HTTPTestServer::CreateServer(kDocRoot, - NULL); - ASSERT_TRUE(NULL != server.get()); - scoped_refptr<HttpBridge> http_bridge(BuildBridge()); - - GURL echo_header = server->TestServerPage("echoall"); - http_bridge->SetUserAgent("bob"); - http_bridge->SetURL(echo_header.spec().c_str(), echo_header.IntPort()); - http_bridge->AddCookieForRequest("foo=bar"); - http_bridge->AddCookieForRequest("baz=boo"); - std::string test_payload = "###TEST PAYLOAD###"; - http_bridge->SetPostPayload("text/html", test_payload.length() + 1, - test_payload.c_str()); - - int os_error = 0; - int response_code = 0; - bool success = http_bridge->MakeSynchronousPost(&os_error, &response_code); - EXPECT_TRUE(success); - EXPECT_EQ(200, response_code); - EXPECT_EQ(0, os_error); - EXPECT_EQ(0, http_bridge->GetResponseCookieCount()); - std::string response = http_bridge->GetResponseContent(); -// TODO(timsteele): This is a valid test condition, it's just temporarily -// broken so that HttpBridge satisfies the ServerConnectionManager; the format -// seems to be surprising the TestServer, because it isn't echoing the headers -// properly. -#if FIXED_SYNCER_BACKEND_COOKIE_PARSING - EXPECT_NE(std::string::npos, response.find("Cookie: foo=bar; baz=boo")); - EXPECT_NE(std::string::npos, response.find("User-Agent: bob")); -#endif - EXPECT_NE(std::string::npos, response.find(test_payload.c_str())); -} - -#endif // CHROME_PERSONALIZATION
\ No newline at end of file |