url_request_context_builder_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_context_builder.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/test/test_server.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_test_util.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/platform_test.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_LINUX) || defined(OS_ANDROID)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/proxy/proxy_config.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/proxy/proxy_config_service_fixed.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A subclass of TestServer that uses a statically-configured hostname. This is
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to work around mysterious failures in chrome_frame_net_tests. See:
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://crbug.com/114369
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocalHttpTestServer : public TestServer {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  explicit LocalHttpTestServer(const FilePath& document_root)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      : TestServer(TestServer::TYPE_HTTP,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   ScopedCustomUrlRequestTestHttpHost::value(),
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   document_root) {}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalHttpTestServer()
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      : TestServer(TestServer::TYPE_HTTP,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   ScopedCustomUrlRequestTestHttpHost::value(),
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   FilePath()) {}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestContextBuilderTest : public PlatformTest {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  URLRequestContextBuilderTest()
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      : test_server_(
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          FilePath(FILE_PATH_LITERAL("net/data/url_request_unittest"))) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_LINUX) || defined(OS_ANDROID)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    builder_.set_proxy_config_service(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        new ProxyConfigServiceFixed(ProxyConfig::CreateDirect()));
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // defined(OS_LINUX) || defined(OS_ANDROID)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalHttpTestServer test_server_;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  URLRequestContextBuilder builder_;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestContextBuilderTest, DefaultSettings) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server_.Start());
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<URLRequestContext> context(builder_.Build());
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestDelegate delegate;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  URLRequest request(
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test_server_.GetURL("echoheader?Foo"), &delegate, context.get());
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request.set_method("GET");
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request.SetExtraRequestHeaderByName("Foo", "Bar", false);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request.Start();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MessageLoop::current()->Run();
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("Bar", delegate.data_received());
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(URLRequestContextBuilderTest, UserAgent) {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(test_server_.Start());
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  builder_.set_user_agent("Bar");
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<URLRequestContext> context(builder_.Build());
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestDelegate delegate;
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  URLRequest request(
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test_server_.GetURL("echoheader?User-Agent"), &delegate, context.get());
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request.set_method("GET");
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request.Start();
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MessageLoop::current()->Run();
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("Bar", delegate.data_received());
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
84