| Index: net/url_request/url_fetcher_impl_unittest.cc
|
| diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc
|
| index fce7ace52848e518e0e93238d6abf4d5b8e92344..930391b829b36868f30ddfaa5db183c5761c0582 100644
|
| --- a/net/url_request/url_fetcher_impl_unittest.cc
|
| +++ b/net/url_request/url_fetcher_impl_unittest.cc
|
| @@ -17,7 +17,11 @@
|
| #include "base/threading/thread.h"
|
| #include "build/build_config.h"
|
| #include "crypto/nss_util.h"
|
| +#include "net/base/elements_upload_data_stream.h"
|
| #include "net/base/network_change_notifier.h"
|
| +#include "net/base/upload_bytes_element_reader.h"
|
| +#include "net/base/upload_element_reader.h"
|
| +#include "net/base/upload_file_element_reader.h"
|
| #include "net/dns/mock_host_resolver.h"
|
| #include "net/http/http_response_headers.h"
|
| #include "net/test/spawned_test_server/spawned_test_server.h"
|
| @@ -259,6 +263,20 @@ class URLFetcherPostFileTest : public URLFetcherTest {
|
| uint64 range_length_;
|
| };
|
|
|
| +class URLFetcherPostStreamTest : public URLFetcherTest {
|
| + public:
|
| + URLFetcherPostStreamTest();
|
| +
|
| + // URLFetcherTest:
|
| + void CreateFetcher(const GURL& url) override;
|
| +
|
| + // URLFetcherDelegate:
|
| + void OnURLFetchComplete(const URLFetcher* source) override;
|
| +
|
| + private:
|
| + base::FilePath path_;
|
| +};
|
| +
|
| // Version of URLFetcherTest that does a POST instead with empty upload body
|
| class URLFetcherEmptyPostTest : public URLFetcherTest {
|
| public:
|
| @@ -571,6 +589,44 @@ void URLFetcherPostFileTest::OnURLFetchComplete(const URLFetcher* source) {
|
| URLFetcherTest::OnURLFetchComplete(source);
|
| }
|
|
|
| +URLFetcherPostStreamTest::URLFetcherPostStreamTest() {
|
| + PathService::Get(base::DIR_SOURCE_ROOT, &path_);
|
| + path_ = path_.Append(FILE_PATH_LITERAL("net"));
|
| + path_ = path_.Append(FILE_PATH_LITERAL("data"));
|
| + path_ = path_.Append(FILE_PATH_LITERAL("url_request_unittest"));
|
| + path_ = path_.Append(FILE_PATH_LITERAL("BullRunSpeech.txt"));
|
| +}
|
| +
|
| +void URLFetcherPostStreamTest::CreateFetcher(const GURL& url) {
|
| + fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
|
| + fetcher_->SetRequestContext(new ThrottlingTestURLRequestContextGetter(
|
| + io_message_loop_proxy().get(), request_context()));
|
| +
|
| + ScopedVector<UploadElementReader> readers;
|
| + const std::string str("bobsyeruncle\n");
|
| + std::vector<char> buffer(str.begin(), str.end());
|
| + readers.push_back(new UploadOwnedBytesElementReader(&buffer));
|
| + readers.push_back(
|
| + new UploadFileElementReader(base::MessageLoopProxy::current().get(),
|
| + path_, 0, kuint64max, base::Time()));
|
| + scoped_ptr<ElementsUploadDataStream> stream(
|
| + new ElementsUploadDataStream(readers.Pass(), 0));
|
| +
|
| + fetcher_->SetUploadStream("text/plain", stream.Pass());
|
| + fetcher_->Start();
|
| +}
|
| +
|
| +void URLFetcherPostStreamTest::OnURLFetchComplete(const URLFetcher* source) {
|
| + std::string data;
|
| + EXPECT_TRUE(source->GetResponseAsString(&data));
|
| +
|
| + std::string expected;
|
| + ASSERT_TRUE(base::ReadFileToString(path_, &expected));
|
| + EXPECT_EQ(std::string("bobsyeruncle\n") + expected, data);
|
| +
|
| + URLFetcherTest::OnURLFetchComplete(source);
|
| +}
|
| +
|
| void URLFetcherEmptyPostTest::CreateFetcher(const GURL& url) {
|
| fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
|
| fetcher_->SetRequestContext(new TestURLRequestContextGetter(
|
| @@ -1085,6 +1141,16 @@ TEST_F(URLFetcherPostFileTest, Range) {
|
| base::MessageLoop::current()->Run();
|
| }
|
|
|
| +TEST_F(URLFetcherPostStreamTest, Basic) {
|
| + SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTP,
|
| + SpawnedTestServer::kLocalhost,
|
| + base::FilePath(kDocRoot));
|
| + ASSERT_TRUE(test_server.Start());
|
| +
|
| + CreateFetcher(test_server.GetURL("echo"));
|
| + base::MessageLoop::current()->Run();
|
| +}
|
| +
|
| TEST_F(URLFetcherEmptyPostTest, Basic) {
|
| SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTP,
|
| SpawnedTestServer::kLocalhost,
|
|
|