Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/drive/fake_drive_service.h" | 5 #include "chrome/browser/drive/fake_drive_service.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| 11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/md5.h" | |
| 12 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 13 #include "base/stl_util.h" | 14 #include "base/stl_util.h" |
| 14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 16 #include "chrome/browser/google_apis/drive_api_parser.h" | 17 #include "chrome/browser/google_apis/drive_api_parser.h" |
| 17 #include "chrome/browser/google_apis/gdata_wapi_parser.h" | 18 #include "chrome/browser/google_apis/gdata_wapi_parser.h" |
| 18 #include "chrome/browser/google_apis/gdata_wapi_requests.h" | 19 #include "chrome/browser/google_apis/gdata_wapi_requests.h" |
| 19 #include "chrome/browser/google_apis/test_util.h" | 20 #include "chrome/browser/google_apis/test_util.h" |
| 20 #include "content/public/test/test_browser_thread_bundle.h" | 21 #include "content/public/test/test_browser_thread_bundle.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 1681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1703 base::FilePath(), | 1704 base::FilePath(), |
| 1704 test_util::CreateCopyResultCallback(&response, &entry), | 1705 test_util::CreateCopyResultCallback(&response, &entry), |
| 1705 ProgressCallback()); | 1706 ProgressCallback()); |
| 1706 base::RunLoop().RunUntilIdle(); | 1707 base::RunLoop().RunUntilIdle(); |
| 1707 | 1708 |
| 1708 EXPECT_EQ(HTTP_NOT_FOUND, response.code); | 1709 EXPECT_EQ(HTTP_NOT_FOUND, response.code); |
| 1709 EXPECT_FALSE(entry.get()); | 1710 EXPECT_FALSE(entry.get()); |
| 1710 } | 1711 } |
| 1711 | 1712 |
| 1712 TEST_F(FakeDriveServiceTest, ResumeUpload_ExistingFile) { | 1713 TEST_F(FakeDriveServiceTest, ResumeUpload_ExistingFile) { |
| 1714 base::ScopedTempDir temp_dir; | |
| 1715 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | |
| 1716 base::FilePath local_file_path = | |
| 1717 temp_dir.path().Append(FILE_PATH_LITERAL("File 1.txt")); | |
| 1718 std::string contents("hogefugapiyo"); | |
| 1719 test_util::WriteStringToFile(local_file_path, contents); | |
|
hashimoto
2013/06/20 10:17:42
nit: Should better EXPECT_TRUE/ASSERT_TRUE the res
tzik
2013/06/20 13:37:22
Done.
| |
| 1720 | |
| 1713 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( | 1721 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( |
| 1714 "chromeos/gdata/root_feed.json")); | 1722 "chromeos/gdata/root_feed.json")); |
| 1715 | 1723 |
| 1716 GDataErrorCode error = GDATA_OTHER_ERROR; | 1724 GDataErrorCode error = GDATA_OTHER_ERROR; |
| 1717 GURL upload_location; | 1725 GURL upload_location; |
| 1718 fake_service_.InitiateUploadExistingFile( | 1726 fake_service_.InitiateUploadExistingFile( |
| 1719 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), | 1727 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), |
| 1720 "text/plain", | 1728 "text/plain", |
| 1721 15, | 1729 contents.size(), |
| 1722 "file:2_file_resource_id", | 1730 "file:2_file_resource_id", |
| 1723 "\"HhMOFgxXHit7ImBr\"", | 1731 "\"HhMOFgxXHit7ImBr\"", |
| 1724 test_util::CreateCopyResultCallback(&error, &upload_location)); | 1732 test_util::CreateCopyResultCallback(&error, &upload_location)); |
| 1725 base::RunLoop().RunUntilIdle(); | 1733 base::RunLoop().RunUntilIdle(); |
| 1726 | 1734 |
| 1727 ASSERT_EQ(HTTP_SUCCESS, error); | 1735 ASSERT_EQ(HTTP_SUCCESS, error); |
| 1728 | 1736 |
| 1729 UploadRangeResponse response; | 1737 UploadRangeResponse response; |
| 1730 scoped_ptr<ResourceEntry> entry; | 1738 scoped_ptr<ResourceEntry> entry; |
| 1731 std::vector<test_util::ProgressInfo> upload_progress_values; | 1739 std::vector<test_util::ProgressInfo> upload_progress_values; |
| 1732 fake_service_.ResumeUpload( | 1740 fake_service_.ResumeUpload( |
| 1733 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), | 1741 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), |
| 1734 upload_location, | 1742 upload_location, |
| 1735 0, 13, 15, "text/plain", | 1743 0, contents.size() / 2, contents.size(), "text/plain", |
| 1736 base::FilePath(), | 1744 local_file_path, |
| 1737 test_util::CreateCopyResultCallback(&response, &entry), | 1745 test_util::CreateCopyResultCallback(&response, &entry), |
| 1738 base::Bind(&test_util::AppendProgressCallbackResult, | 1746 base::Bind(&test_util::AppendProgressCallbackResult, |
| 1739 &upload_progress_values)); | 1747 &upload_progress_values)); |
| 1740 base::RunLoop().RunUntilIdle(); | 1748 base::RunLoop().RunUntilIdle(); |
| 1741 | 1749 |
| 1742 EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code); | 1750 EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code); |
| 1743 EXPECT_FALSE(entry.get()); | 1751 EXPECT_FALSE(entry.get()); |
| 1744 ASSERT_TRUE(!upload_progress_values.empty()); | 1752 ASSERT_TRUE(!upload_progress_values.empty()); |
| 1745 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); | 1753 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); |
| 1746 EXPECT_LE(0, upload_progress_values.front().first); | 1754 EXPECT_LE(0, upload_progress_values.front().first); |
| 1747 EXPECT_GE(13, upload_progress_values.back().first); | 1755 EXPECT_GE(static_cast<int64>(contents.size() / 2), |
| 1756 upload_progress_values.back().first); | |
| 1748 | 1757 |
| 1749 upload_progress_values.clear(); | 1758 upload_progress_values.clear(); |
| 1750 fake_service_.ResumeUpload( | 1759 fake_service_.ResumeUpload( |
| 1751 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), | 1760 base::FilePath(FILE_PATH_LITERAL("drive/File 1.txt")), |
| 1752 upload_location, | 1761 upload_location, |
| 1753 13, 15, 15, "text/plain", | 1762 contents.size() / 2, contents.size(), contents.size(), "text/plain", |
| 1754 base::FilePath(), | 1763 local_file_path, |
| 1755 test_util::CreateCopyResultCallback(&response, &entry), | 1764 test_util::CreateCopyResultCallback(&response, &entry), |
| 1756 base::Bind(&test_util::AppendProgressCallbackResult, | 1765 base::Bind(&test_util::AppendProgressCallbackResult, |
| 1757 &upload_progress_values)); | 1766 &upload_progress_values)); |
| 1758 base::RunLoop().RunUntilIdle(); | 1767 base::RunLoop().RunUntilIdle(); |
| 1759 | 1768 |
| 1760 EXPECT_EQ(HTTP_SUCCESS, response.code); | 1769 EXPECT_EQ(HTTP_SUCCESS, response.code); |
| 1761 EXPECT_TRUE(entry.get()); | 1770 EXPECT_TRUE(entry.get()); |
| 1762 EXPECT_EQ(15L, entry->file_size()); | 1771 EXPECT_EQ(static_cast<int64>(contents.size()), |
| 1772 entry->file_size()); | |
| 1763 EXPECT_TRUE(Exists(entry->resource_id())); | 1773 EXPECT_TRUE(Exists(entry->resource_id())); |
| 1764 ASSERT_TRUE(!upload_progress_values.empty()); | 1774 ASSERT_TRUE(!upload_progress_values.empty()); |
| 1765 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); | 1775 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); |
| 1766 EXPECT_LE(0, upload_progress_values.front().first); | 1776 EXPECT_LE(0, upload_progress_values.front().first); |
| 1767 EXPECT_GE(2, upload_progress_values.back().first); | 1777 EXPECT_GE(static_cast<int64>(contents.size() - contents.size() / 2), |
| 1778 upload_progress_values.back().first); | |
| 1779 EXPECT_EQ(base::MD5String(contents), entry->file_md5()); | |
| 1768 } | 1780 } |
| 1769 | 1781 |
| 1770 TEST_F(FakeDriveServiceTest, ResumeUpload_NewFile) { | 1782 TEST_F(FakeDriveServiceTest, ResumeUpload_NewFile) { |
| 1783 base::ScopedTempDir temp_dir; | |
| 1784 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | |
| 1785 base::FilePath local_file_path = | |
| 1786 temp_dir.path().Append(FILE_PATH_LITERAL("new file.foo")); | |
| 1787 std::string contents("hogefugapiyo"); | |
| 1788 test_util::WriteStringToFile(local_file_path, contents); | |
| 1789 | |
| 1771 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( | 1790 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( |
| 1772 "chromeos/gdata/root_feed.json")); | 1791 "chromeos/gdata/root_feed.json")); |
| 1773 | 1792 |
| 1774 GDataErrorCode error = GDATA_OTHER_ERROR; | 1793 GDataErrorCode error = GDATA_OTHER_ERROR; |
| 1775 GURL upload_location; | 1794 GURL upload_location; |
| 1776 fake_service_.InitiateUploadNewFile( | 1795 fake_service_.InitiateUploadNewFile( |
| 1777 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), | 1796 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), |
| 1778 "test/foo", | 1797 "test/foo", |
| 1779 15, | 1798 contents.size(), |
| 1780 "folder:1_folder_resource_id", | 1799 "folder:1_folder_resource_id", |
| 1781 "new file.foo", | 1800 "new file.foo", |
| 1782 test_util::CreateCopyResultCallback(&error, &upload_location)); | 1801 test_util::CreateCopyResultCallback(&error, &upload_location)); |
| 1783 base::RunLoop().RunUntilIdle(); | 1802 base::RunLoop().RunUntilIdle(); |
| 1784 | 1803 |
| 1785 EXPECT_EQ(HTTP_SUCCESS, error); | 1804 EXPECT_EQ(HTTP_SUCCESS, error); |
| 1786 EXPECT_FALSE(upload_location.is_empty()); | 1805 EXPECT_FALSE(upload_location.is_empty()); |
| 1787 EXPECT_NE(GURL("https://1_folder_resumable_create_media_link"), | 1806 EXPECT_NE(GURL("https://1_folder_resumable_create_media_link"), |
| 1788 upload_location); | 1807 upload_location); |
| 1789 | 1808 |
| 1790 UploadRangeResponse response; | 1809 UploadRangeResponse response; |
| 1791 scoped_ptr<ResourceEntry> entry; | 1810 scoped_ptr<ResourceEntry> entry; |
| 1792 std::vector<test_util::ProgressInfo> upload_progress_values; | 1811 std::vector<test_util::ProgressInfo> upload_progress_values; |
| 1793 fake_service_.ResumeUpload( | 1812 fake_service_.ResumeUpload( |
| 1794 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), | 1813 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), |
| 1795 upload_location, | 1814 upload_location, |
| 1796 0, 13, 15, "test/foo", | 1815 0, contents.size() / 2, contents.size(), "test/foo", |
| 1797 base::FilePath(), | 1816 local_file_path, |
| 1798 test_util::CreateCopyResultCallback(&response, &entry), | 1817 test_util::CreateCopyResultCallback(&response, &entry), |
| 1799 base::Bind(&test_util::AppendProgressCallbackResult, | 1818 base::Bind(&test_util::AppendProgressCallbackResult, |
| 1800 &upload_progress_values)); | 1819 &upload_progress_values)); |
| 1801 base::RunLoop().RunUntilIdle(); | 1820 base::RunLoop().RunUntilIdle(); |
| 1802 | 1821 |
| 1803 EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code); | 1822 EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code); |
| 1804 EXPECT_FALSE(entry.get()); | 1823 EXPECT_FALSE(entry.get()); |
| 1805 ASSERT_TRUE(!upload_progress_values.empty()); | 1824 ASSERT_TRUE(!upload_progress_values.empty()); |
| 1806 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); | 1825 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); |
| 1807 EXPECT_LE(0, upload_progress_values.front().first); | 1826 EXPECT_LE(0, upload_progress_values.front().first); |
| 1808 EXPECT_GE(13, upload_progress_values.back().first); | 1827 EXPECT_GE(static_cast<int64>(contents.size() / 2), |
| 1828 upload_progress_values.back().first); | |
| 1809 | 1829 |
| 1810 upload_progress_values.clear(); | 1830 upload_progress_values.clear(); |
| 1811 fake_service_.ResumeUpload( | 1831 fake_service_.ResumeUpload( |
| 1812 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), | 1832 base::FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")), |
| 1813 upload_location, | 1833 upload_location, |
| 1814 13, 15, 15, "test/foo", | 1834 contents.size() / 2, contents.size(), contents.size(), "test/foo", |
| 1815 base::FilePath(), | 1835 local_file_path, |
| 1816 test_util::CreateCopyResultCallback(&response, &entry), | 1836 test_util::CreateCopyResultCallback(&response, &entry), |
| 1817 base::Bind(&test_util::AppendProgressCallbackResult, | 1837 base::Bind(&test_util::AppendProgressCallbackResult, |
| 1818 &upload_progress_values)); | 1838 &upload_progress_values)); |
| 1819 base::RunLoop().RunUntilIdle(); | 1839 base::RunLoop().RunUntilIdle(); |
| 1820 | 1840 |
| 1821 EXPECT_EQ(HTTP_CREATED, response.code); | 1841 EXPECT_EQ(HTTP_CREATED, response.code); |
| 1822 EXPECT_TRUE(entry.get()); | 1842 EXPECT_TRUE(entry.get()); |
| 1823 EXPECT_EQ(15L, entry->file_size()); | 1843 EXPECT_EQ(static_cast<int64>(contents.size()), entry->file_size()); |
| 1824 EXPECT_TRUE(Exists(entry->resource_id())); | 1844 EXPECT_TRUE(Exists(entry->resource_id())); |
| 1825 ASSERT_TRUE(!upload_progress_values.empty()); | 1845 ASSERT_TRUE(!upload_progress_values.empty()); |
| 1826 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); | 1846 EXPECT_TRUE(base::STLIsSorted(upload_progress_values)); |
| 1827 EXPECT_LE(0, upload_progress_values.front().first); | 1847 EXPECT_LE(0, upload_progress_values.front().first); |
| 1828 EXPECT_GE(2, upload_progress_values.back().first); | 1848 EXPECT_GE(static_cast<int64>(contents.size() - contents.size() / 2), |
| 1849 upload_progress_values.back().first); | |
| 1850 EXPECT_EQ(base::MD5String(contents), entry->file_md5()); | |
| 1829 } | 1851 } |
| 1830 | 1852 |
| 1831 TEST_F(FakeDriveServiceTest, AddNewFile_ToRootDirectory) { | 1853 TEST_F(FakeDriveServiceTest, AddNewFile_ToRootDirectory) { |
| 1832 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( | 1854 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( |
| 1833 "chromeos/gdata/root_feed.json")); | 1855 "chromeos/gdata/root_feed.json")); |
| 1834 ASSERT_TRUE(fake_service_.LoadAccountMetadataForWapi( | 1856 ASSERT_TRUE(fake_service_.LoadAccountMetadataForWapi( |
| 1835 "chromeos/gdata/account_metadata.json")); | 1857 "chromeos/gdata/account_metadata.json")); |
| 1836 | 1858 |
| 1837 int64 old_largest_change_id = GetLargestChangeByAboutResource(); | 1859 int64 old_largest_change_id = GetLargestChangeByAboutResource(); |
| 1838 | 1860 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1856 EXPECT_TRUE(resource_entry->is_file()); | 1878 EXPECT_TRUE(resource_entry->is_file()); |
| 1857 EXPECT_EQ(kContentType, resource_entry->content_mime_type()); | 1879 EXPECT_EQ(kContentType, resource_entry->content_mime_type()); |
| 1858 EXPECT_EQ(static_cast<int64>(kContentData.size()), | 1880 EXPECT_EQ(static_cast<int64>(kContentData.size()), |
| 1859 resource_entry->file_size()); | 1881 resource_entry->file_size()); |
| 1860 EXPECT_EQ("resource_id_1", resource_entry->resource_id()); | 1882 EXPECT_EQ("resource_id_1", resource_entry->resource_id()); |
| 1861 EXPECT_EQ(kTitle, resource_entry->title()); | 1883 EXPECT_EQ(kTitle, resource_entry->title()); |
| 1862 EXPECT_TRUE(HasParent(resource_entry->resource_id(), | 1884 EXPECT_TRUE(HasParent(resource_entry->resource_id(), |
| 1863 fake_service_.GetRootResourceId())); | 1885 fake_service_.GetRootResourceId())); |
| 1864 // Should be incremented as a new directory was created. | 1886 // Should be incremented as a new directory was created. |
| 1865 EXPECT_EQ(old_largest_change_id + 1, fake_service_.largest_changestamp()); | 1887 EXPECT_EQ(old_largest_change_id + 1, fake_service_.largest_changestamp()); |
| 1866 EXPECT_EQ(old_largest_change_id + 1, GetLargestChangeByAboutResource()); | 1888 EXPECT_EQ(old_largest_change_id + 1, GetLargestChangeByAboutResource()); |
|
hashimoto
2013/06/20 10:17:42
Could you add MD5 checks for AddNewFile()?
tzik
2013/06/20 13:37:22
Done.
| |
| 1867 } | 1889 } |
| 1868 | 1890 |
| 1869 TEST_F(FakeDriveServiceTest, AddNewFile_ToRootDirectoryOnEmptyFileSystem) { | 1891 TEST_F(FakeDriveServiceTest, AddNewFile_ToRootDirectoryOnEmptyFileSystem) { |
| 1870 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( | 1892 ASSERT_TRUE(fake_service_.LoadResourceListForWapi( |
| 1871 "chromeos/gdata/empty_feed.json")); | 1893 "chromeos/gdata/empty_feed.json")); |
| 1872 ASSERT_TRUE(fake_service_.LoadAccountMetadataForWapi( | 1894 ASSERT_TRUE(fake_service_.LoadAccountMetadataForWapi( |
| 1873 "chromeos/gdata/account_metadata.json")); | 1895 "chromeos/gdata/account_metadata.json")); |
| 1874 | 1896 |
| 1875 int64 old_largest_change_id = GetLargestChangeByAboutResource(); | 1897 int64 old_largest_change_id = GetLargestChangeByAboutResource(); |
| 1876 | 1898 |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2088 test_util::CreateCopyResultCallback(&error, &resource_entry)); | 2110 test_util::CreateCopyResultCallback(&error, &resource_entry)); |
| 2089 base::RunLoop().RunUntilIdle(); | 2111 base::RunLoop().RunUntilIdle(); |
| 2090 | 2112 |
| 2091 EXPECT_EQ(GDATA_NO_CONNECTION, error); | 2113 EXPECT_EQ(GDATA_NO_CONNECTION, error); |
| 2092 EXPECT_FALSE(resource_entry); | 2114 EXPECT_FALSE(resource_entry); |
| 2093 } | 2115 } |
| 2094 | 2116 |
| 2095 } // namespace | 2117 } // namespace |
| 2096 | 2118 |
| 2097 } // namespace drive | 2119 } // namespace drive |
| OLD | NEW |