| Index: chrome/browser/sync/glue/http_bridge_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/sync/glue/http_bridge_unittest.cc (revision 22320)
|
| +++ chrome/browser/sync/glue/http_bridge_unittest.cc (working copy)
|
| @@ -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
|
|
|