summaryrefslogtreecommitdiffstats
path: root/chrome/browser/drive/drive_uploader_unittest.cc
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-06 05:44:07 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-06 05:44:07 +0000
commitd10a9bbea4a02abbe24cf31462744bb00cf32b74 (patch)
tree45ff9774b3026cffc5906ec4b7f05bd0311dcfcb /chrome/browser/drive/drive_uploader_unittest.cc
parent4976ac759c6bac2f5738b2dd2f89936ff30924e9 (diff)
downloadchromium_src-d10a9bbea4a02abbe24cf31462744bb00cf32b74.zip
chromium_src-d10a9bbea4a02abbe24cf31462744bb00cf32b74.tar.gz
chromium_src-d10a9bbea4a02abbe24cf31462744bb00cf32b74.tar.bz2
drive: Discard upload location when GetUploadStatus fails
GetUploadStatus for an unusable URL always results in an error. Upload location should be discarded to initiate new upload in such cases. BUG=267452 R=kinaba@chromium.org Review URL: https://codereview.chromium.org/21790002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215801 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/drive/drive_uploader_unittest.cc')
-rw-r--r--chrome/browser/drive/drive_uploader_unittest.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/chrome/browser/drive/drive_uploader_unittest.cc b/chrome/browser/drive/drive_uploader_unittest.cc
index 83afc28..0d8d636 100644
--- a/chrome/browser/drive/drive_uploader_unittest.cc
+++ b/chrome/browser/drive/drive_uploader_unittest.cc
@@ -286,6 +286,21 @@ class MockDriveServiceNoConnectionAtResume : public DummyDriveService {
}
};
+// Mock DriveService that returns a failure at GetUploadStatus().
+class MockDriveServiceNoConnectionAtGetUploadStatus : public DummyDriveService {
+ // Returns error.
+ virtual CancelCallback GetUploadStatus(
+ const GURL& upload_url,
+ int64 content_length,
+ const UploadRangeCallback& callback) OVERRIDE {
+ base::MessageLoop::current()->PostTask(FROM_HERE,
+ base::Bind(callback,
+ UploadRangeResponse(GDATA_NO_CONNECTION, -1, -1),
+ base::Passed(scoped_ptr<ResourceEntry>())));
+ return CancelCallback();
+ }
+};
+
class DriveUploaderTest : public testing::Test {
public:
virtual void SetUp() OVERRIDE {
@@ -477,6 +492,31 @@ TEST_F(DriveUploaderTest, ResumeUploadFail) {
EXPECT_EQ(GURL(kTestUploadExistingFileURL), upload_location);
}
+TEST_F(DriveUploaderTest, GetUploadStatusFail) {
+ base::FilePath local_path;
+ std::string data;
+ ASSERT_TRUE(test_util::CreateFileOfSpecifiedSize(
+ temp_dir_.path(), 512 * 1024, &local_path, &data));
+
+ GDataErrorCode error = HTTP_SUCCESS;
+ GURL upload_location;
+ scoped_ptr<ResourceEntry> resource_entry;
+
+ MockDriveServiceNoConnectionAtGetUploadStatus mock_service;
+ DriveUploader uploader(&mock_service,
+ base::MessageLoopProxy::current().get());
+ uploader.ResumeUploadFile(GURL(kTestUploadExistingFileURL),
+ local_path,
+ kTestMimeType,
+ test_util::CreateCopyResultCallback(
+ &error, &upload_location, &resource_entry),
+ google_apis::ProgressCallback());
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(GDATA_NO_CONNECTION, error);
+ EXPECT_TRUE(upload_location.is_empty());
+}
+
TEST_F(DriveUploaderTest, NonExistingSourceFile) {
GDataErrorCode error = GDATA_OTHER_ERROR;
GURL upload_location;