Index: chrome/browser/local_discovery/privet_url_fetcher_unittest.cc |
diff --git a/chrome/browser/local_discovery/privet_url_fetcher_unittest.cc b/chrome/browser/local_discovery/privet_url_fetcher_unittest.cc |
index 5243135399c8906ee1b4c748a7f220b9b992740c..a6eaea4b2376fd8b14f3fa8b41b7719541cae55e 100644 |
--- a/chrome/browser/local_discovery/privet_url_fetcher_unittest.cc |
+++ b/chrome/browser/local_discovery/privet_url_fetcher_unittest.cc |
@@ -25,6 +25,12 @@ const char kSampleJSONWithError[] = "{ \"error\" : \"unittest_example\" }"; |
class MockPrivetURLFetcherDelegate : public PrivetURLFetcher::Delegate { |
public: |
+ MockPrivetURLFetcherDelegate() : raw_mode_(false) { |
+ } |
+ |
+ virtual ~MockPrivetURLFetcherDelegate() { |
+ } |
+ |
virtual void OnError(PrivetURLFetcher* fetcher, |
PrivetURLFetcher::ErrorType error) OVERRIDE { |
OnErrorInternal(error); |
@@ -46,10 +52,35 @@ class MockPrivetURLFetcherDelegate : public PrivetURLFetcher::Delegate { |
const PrivetURLFetcher::TokenCallback& callback) { |
} |
+ bool OnRawData(PrivetURLFetcher* fetcher, |
+ bool response_is_file, |
+ const std::string& data, |
+ const base::FilePath& response_file) { |
+ if (!raw_mode_) return false; |
+ |
+ if (response_is_file) { |
+ EXPECT_TRUE(response_file != base::FilePath()); |
+ OnFileInternal(); |
+ } else { |
+ OnRawDataInternal(data); |
+ } |
+ |
+ return true; |
+ } |
+ |
+ MOCK_METHOD1(OnRawDataInternal, void(std::string data)); |
+ |
+ MOCK_METHOD0(OnFileInternal, void()); |
+ |
const base::DictionaryValue* saved_value() { return saved_value_.get(); } |
+ void SetRawMode(bool raw_mode) { |
+ raw_mode_ = raw_mode; |
+ } |
+ |
private: |
scoped_ptr<base::DictionaryValue> saved_value_; |
+ bool raw_mode_; |
}; |
class PrivetURLFetcherTest : public ::testing::Test { |
@@ -206,6 +237,50 @@ TEST_F(PrivetURLFetcherTest, FetchHasError) { |
fetcher->delegate()->OnURLFetchComplete(fetcher); |
} |
+TEST_F(PrivetURLFetcherTest, FetcherRawData) { |
+ delegate_.SetRawMode(true); |
+ privet_urlfetcher_->Start(); |
+ net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); |
+ ASSERT_TRUE(fetcher != NULL); |
+ fetcher->SetResponseString(kSampleJSONWithError); |
+ fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS, |
+ net::OK)); |
+ fetcher->set_response_code(200); |
+ |
+ EXPECT_CALL(delegate_, OnRawDataInternal(kSampleJSONWithError)); |
+ fetcher->delegate()->OnURLFetchComplete(fetcher); |
+} |
+ |
+TEST_F(PrivetURLFetcherTest, RangeRequest) { |
+ delegate_.SetRawMode(true); |
+ privet_urlfetcher_->SetByteRange(200, 300); |
+ privet_urlfetcher_->Start(); |
+ net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); |
+ ASSERT_TRUE(fetcher != NULL); |
+ net::HttpRequestHeaders headers; |
+ fetcher->GetExtraRequestHeaders(&headers); |
+ |
+ std::string header_range; |
+ ASSERT_TRUE(headers.GetHeader("Range", &header_range)); |
+ EXPECT_EQ("bytes=200-300", header_range); |
+} |
+ |
+TEST_F(PrivetURLFetcherTest, FetcherToFile) { |
+ delegate_.SetRawMode(true); |
+ privet_urlfetcher_->SaveResponseToFile(); |
+ privet_urlfetcher_->Start(); |
+ net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); |
+ ASSERT_TRUE(fetcher != NULL); |
+ fetcher->SetResponseFilePath( |
+ base::FilePath(FILE_PATH_LITERAL("sample/file"))); |
+ fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS, |
+ net::OK)); |
+ fetcher->set_response_code(200); |
+ |
+ EXPECT_CALL(delegate_, OnFileInternal()); |
+ fetcher->delegate()->OnURLFetchComplete(fetcher); |
+} |
+ |
} // namespace |
} // namespace local_discovery |