summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/glue/http_bridge_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/glue/http_bridge_unittest.cc')
-rw-r--r--chrome/browser/sync/glue/http_bridge_unittest.cc167
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