Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(944)

Unified Diff: net/url_request/url_fetcher_impl_unittest.cc

Issue 14578004: Support range uploading of a file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/url_request/url_fetcher_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 c8cbd1ac6f6c4389c8f52a4c74b338569a0434f7..cfc2c2d1c71c8e9f0640cf1b08c3112478d4251a 100644
--- a/net/url_request/url_fetcher_impl_unittest.cc
+++ b/net/url_request/url_fetcher_impl_unittest.cc
@@ -253,6 +253,24 @@ class URLFetcherPostFileTest : public URLFetcherTest {
base::FilePath path_;
};
+// Version of URLFetcherTest that does a POST of a file using
+// SetUploadDataStream
+class URLFetcherPostFileWithRangeTest : public URLFetcherTest {
+ public:
+ URLFetcherPostFileWithRangeTest();
+
+ // URLFetcherTest:
+ virtual void CreateFetcher(const GURL& url) OVERRIDE;
+
+ // URLFetcherDelegate:
+ virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE;
+
+ private:
+ base::FilePath path_;
+ uint64 range_offset_;
+ uint64 range_length_;
+};
+
// Version of URLFetcherTest that does a POST instead with empty upload body
class URLFetcherEmptyPostTest : public URLFetcherTest {
public:
@@ -538,6 +556,8 @@ void URLFetcherPostFileTest::CreateFetcher(const GURL& url) {
io_message_loop_proxy(), request_context()));
fetcher_->SetUploadFilePath("application/x-www-form-urlencoded",
path_,
+ 0,
+ kuint64max,
base::MessageLoopProxy::current());
fetcher_->Start();
}
@@ -554,6 +574,43 @@ void URLFetcherPostFileTest::OnURLFetchComplete(const URLFetcher* source) {
URLFetcherTest::OnURLFetchComplete(source);
}
+URLFetcherPostFileWithRangeTest::URLFetcherPostFileWithRangeTest() {
+ 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"));
+
+ range_offset_ = 30;
+ range_length_ = 100;
mmenke 2013/05/01 15:37:01 I think it's a little weird to make these variable
mmenke 2013/05/01 15:37:01 Also, these should be set in initializer lists.
hidehiko 2013/05/01 17:38:12 I see. So how about this? Merged two test fixtures
+}
+
+void URLFetcherPostFileWithRangeTest::CreateFetcher(const GURL& url) {
+ fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
+ fetcher_->SetRequestContext(new ThrottlingTestURLRequestContextGetter(
+ io_message_loop_proxy(), request_context()));
+ fetcher_->SetUploadFilePath("application/x-www-form-urlencoded",
+ path_,
+ range_offset_,
+ range_length_,
+ base::MessageLoopProxy::current());
+ fetcher_->Start();
+}
+
+void URLFetcherPostFileWithRangeTest::OnURLFetchComplete(
+ const URLFetcher* source) {
+ std::string expected;
+ ASSERT_TRUE(file_util::ReadFileToString(path_, &expected));
+ ASSERT_LE(range_offset_, expected.size());
+ ASSERT_LE(range_offset_ + range_length_, expected.size());
+ expected = expected.substr(range_offset_, range_length_);
+
+ std::string data;
+ EXPECT_TRUE(source->GetResponseAsString(&data));
+ EXPECT_EQ(expected, data);
+ URLFetcherTest::OnURLFetchComplete(source);
+}
+
void URLFetcherEmptyPostTest::CreateFetcher(const GURL& url) {
fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
fetcher_->SetRequestContext(new TestURLRequestContextGetter(
@@ -1063,6 +1120,16 @@ TEST_F(URLFetcherPostFileTest, Basic) {
MessageLoop::current()->Run();
}
+TEST_F(URLFetcherPostFileWithRangeTest, Basic) {
+ TestServer test_server(TestServer::TYPE_HTTP,
+ TestServer::kLocalhost,
+ base::FilePath(kDocRoot));
+ ASSERT_TRUE(test_server.Start());
+
+ CreateFetcher(test_server.GetURL("echo"));
+ MessageLoop::current()->Run();
+}
+
TEST_F(URLFetcherEmptyPostTest, Basic) {
TestServer test_server(TestServer::TYPE_HTTP,
TestServer::kLocalhost,
« no previous file with comments | « net/url_request/url_fetcher_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698