123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 |
- // Copyright (c) 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "google_apis/drive/drive_api_url_generator.h"
- #include <stddef.h>
- #include <stdint.h>
- #include "google_apis/common/test_util.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "url/gurl.h"
- #include "url/url_util.h"
- namespace google_apis {
- namespace {
- // The URLs used for production may be different for Chromium OS and Chrome
- // OS, so use testing base urls.
- const char kBaseUrlForTesting[] = "https://www.example.com";
- const char kBaseThumbnailUrlForTesting[] = "https://thumbnail.example.com";
- } // namespace
- class DriveApiUrlGeneratorTest : public testing::Test {
- public:
- DriveApiUrlGeneratorTest()
- : url_generator_(GURL(kBaseUrlForTesting),
- GURL(kBaseThumbnailUrlForTesting)) {
- url::AddStandardScheme("chrome-extension", url::SCHEME_WITH_HOST);
- }
- protected:
- DriveApiUrlGenerator url_generator_;
- private:
- url::ScopedSchemeRegistryForTests scoped_registry_;
- };
- // Make sure the hard-coded urls are returned.
- TEST_F(DriveApiUrlGeneratorTest, GetAboutGetUrl) {
- EXPECT_EQ("https://www.example.com/drive/v2/about",
- url_generator_.GetAboutGetUrl().spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesGetUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesGetUrl("0ADK06pfg", GURL()).spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesGetUrl("0Bz0bd074", GURL()).spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesGetUrl("file:file_id", GURL()).spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesInsertUrl) {
- EXPECT_EQ("https://www.example.com/drive/v2/files?supportsTeamDrives=true",
- url_generator_.GetFilesInsertUrl("").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/"
- "files?supportsTeamDrives=true&visibility=DEFAULT",
- url_generator_.GetFilesInsertUrl("DEFAULT").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/"
- "files?supportsTeamDrives=true&visibility=PRIVATE",
- url_generator_.GetFilesInsertUrl("PRIVATE").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilePatchUrl) {
- struct TestPattern {
- bool set_modified_date;
- bool update_viewed_date;
- const std::string expected_query;
- };
- const TestPattern kTestPatterns[] = {
- {false, true, ""},
- {true, true, "&setModifiedDate=true"},
- {false, false, "&updateViewedDate=false"},
- {true, false, "&setModifiedDate=true&updateViewedDate=false"},
- };
- for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg"
- "?supportsTeamDrives=true" +
- kTestPatterns[i].expected_query,
- url_generator_
- .GetFilesPatchUrl("0ADK06pfg", kTestPatterns[i].set_modified_date,
- kTestPatterns[i].update_viewed_date)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074"
- "?supportsTeamDrives=true" +
- kTestPatterns[i].expected_query,
- url_generator_
- .GetFilesPatchUrl("0Bz0bd074", kTestPatterns[i].set_modified_date,
- kTestPatterns[i].update_viewed_date)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id"
- "?supportsTeamDrives=true" +
- kTestPatterns[i].expected_query,
- url_generator_
- .GetFilesPatchUrl("file:file_id",
- kTestPatterns[i].set_modified_date,
- kTestPatterns[i].update_viewed_date)
- .spec());
- }
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesCopyUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg/copy"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesCopyUrl("0ADK06pfg", "").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074/copy"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesCopyUrl("0Bz0bd074", "").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id/copy"
- "?supportsTeamDrives=true",
- url_generator_.GetFilesCopyUrl("file:file_id", "").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074/copy"
- "?supportsTeamDrives=true&visibility=DEFAULT",
- url_generator_.GetFilesCopyUrl("0Bz0bd074", "DEFAULT").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id/copy"
- "?supportsTeamDrives=true&visibility=PRIVATE",
- url_generator_.GetFilesCopyUrl("file:file_id", "PRIVATE").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesListUrl) {
- struct TestPattern {
- int max_results;
- const std::string page_token;
- const std::string q;
- const std::string expected_query;
- };
- const TestPattern kTestPatterns[] = {
- {100, "", "", ""},
- {150, "", "", "maxResults=150"},
- {10, "", "", "maxResults=10"},
- {100, "token", "", "pageToken=token"},
- {150, "token", "", "maxResults=150&pageToken=token"},
- {10, "token", "", "maxResults=10&pageToken=token"},
- {100, "", "query", "q=query"},
- {150, "", "query", "maxResults=150&q=query"},
- {10, "", "query", "maxResults=10&q=query"},
- {100, "token", "query", "pageToken=token&q=query"},
- {150, "token", "query", "maxResults=150&pageToken=token&q=query"},
- {10, "token", "query", "maxResults=10&pageToken=token&q=query"},
- };
- const std::string kV2FilesUrlPrefixWithTeamDrives =
- "https://www.example.com/drive/v2/files?supportsTeamDrives=true&"
- "includeTeamDriveItems=true&corpora=default%2CallTeamDrives";
- for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
- EXPECT_EQ(kV2FilesUrlPrefixWithTeamDrives +
- (kTestPatterns[i].expected_query.empty() ? "" : "&") +
- kTestPatterns[i].expected_query,
- url_generator_
- .GetFilesListUrl(kTestPatterns[i].max_results,
- kTestPatterns[i].page_token,
- FilesListCorpora::ALL_TEAM_DRIVES,
- std::string(), kTestPatterns[i].q)
- .spec());
- }
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files?supportsTeamDrives=true&"
- "includeTeamDriveItems=true&corpora=teamDrive&"
- "teamDriveId=TheTeamDriveId&q=query",
- url_generator_
- .GetFilesListUrl(100, std::string() /* page_token */,
- FilesListCorpora::TEAM_DRIVE, "TheTeamDriveId",
- "query")
- .spec());
- // includeTeamDriveItems should be true for default corpora, so that a file
- // that is shared individually is listed for users who are not member of the
- // Team Drive which owns the file.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files?supportsTeamDrives=true&"
- "includeTeamDriveItems=true&corpora=default",
- url_generator_
- .GetFilesListUrl(100, std::string() /* page_token */,
- FilesListCorpora::DEFAULT, std::string(),
- std::string())
- .spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesDeleteUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesDeleteUrl("0ADK06pfg").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesDeleteUrl("0Bz0bd074").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesDeleteUrl("file:file_id").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetFilesTrashUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg/trash?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesTrashUrl("0ADK06pfg").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074/trash?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesTrashUrl("0Bz0bd074").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afile_id/trash?"
- "supportsTeamDrives=true",
- url_generator_.GetFilesTrashUrl("file:file_id").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
- struct TestPattern {
- bool include_deleted;
- int max_results;
- const std::string page_token;
- int64_t start_change_id;
- const std::string expected_query;
- };
- const TestPattern kTestPatterns[] = {
- {true, 100, "", 0, ""},
- {false, 100, "", 0, "includeDeleted=false"},
- {true, 150, "", 0, "maxResults=150"},
- {false, 150, "", 0, "includeDeleted=false&maxResults=150"},
- {true, 10, "", 0, "maxResults=10"},
- {false, 10, "", 0, "includeDeleted=false&maxResults=10"},
- {true, 100, "token", 0, "pageToken=token"},
- {false, 100, "token", 0, "includeDeleted=false&pageToken=token"},
- {true, 150, "token", 0, "maxResults=150&pageToken=token"},
- {false, 150, "token", 0,
- "includeDeleted=false&maxResults=150&pageToken=token"},
- {true, 10, "token", 0, "maxResults=10&pageToken=token"},
- {false, 10, "token", 0,
- "includeDeleted=false&maxResults=10&pageToken=token"},
- {true, 100, "", 12345, "startChangeId=12345"},
- {false, 100, "", 12345, "includeDeleted=false&startChangeId=12345"},
- {true, 150, "", 12345, "maxResults=150&startChangeId=12345"},
- {false, 150, "", 12345,
- "includeDeleted=false&maxResults=150&startChangeId=12345"},
- {true, 10, "", 12345, "maxResults=10&startChangeId=12345"},
- {false, 10, "", 12345,
- "includeDeleted=false&maxResults=10&startChangeId=12345"},
- {true, 100, "token", 12345, "pageToken=token&startChangeId=12345"},
- {false, 100, "token", 12345,
- "includeDeleted=false&pageToken=token&startChangeId=12345"},
- {true, 150, "token", 12345,
- "maxResults=150&pageToken=token&startChangeId=12345"},
- {false, 150, "token", 12345,
- "includeDeleted=false&maxResults=150&pageToken=token"
- "&startChangeId=12345"},
- {true, 10, "token", 12345,
- "maxResults=10&pageToken=token&startChangeId=12345"},
- {false, 10, "token", 12345,
- "includeDeleted=false&maxResults=10&pageToken=token"
- "&startChangeId=12345"},
- };
- const std::string kV2ChangesUrlPrefixWithTeamDrives =
- "https://www.example.com/drive/v2/changes?"
- "supportsTeamDrives=true&includeTeamDriveItems=true";
- for (size_t i = 0; i < std::size(kTestPatterns); ++i) {
- EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives +
- (kTestPatterns[i].expected_query.empty() ? "" : "&") +
- kTestPatterns[i].expected_query,
- url_generator_
- .GetChangesListUrl(
- kTestPatterns[i].include_deleted,
- kTestPatterns[i].max_results, kTestPatterns[i].page_token,
- kTestPatterns[i].start_change_id, "" /* team_drive_id */)
- .spec());
- }
- EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives + "&teamDriveId=TEAM_DRIVE_ID",
- url_generator_.GetChangesListUrl(true, 100, "", 0, "TEAM_DRIVE_ID")
- .spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetChildrenInsertUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg/children?"
- "supportsTeamDrives=true",
- url_generator_.GetChildrenInsertUrl("0ADK06pfg").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074/children?"
- "supportsTeamDrives=true",
- url_generator_.GetChildrenInsertUrl("0Bz0bd074").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afolder_id/children?"
- "supportsTeamDrives=true",
- url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetChildrenDeleteUrl) {
- // |file_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
- url_generator_.GetChildrenDeleteUrl("0Bz0bd074", "0ADK06pfg").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
- url_generator_.GetChildrenDeleteUrl("0ADK06pfg", "0Bz0bd074").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3Afolder_id/children"
- "/file%3Achild_id",
- url_generator_.GetChildrenDeleteUrl("file:child_id", "file:folder_id")
- .spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadNewFileUrl) {
- const bool kSetModifiedDate = true;
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files?uploadType=resumable"
- "&supportsTeamDrives=true",
- url_generator_.GetInitiateUploadNewFileUrl(!kSetModifiedDate).spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files?uploadType=resumable"
- "&supportsTeamDrives=true&setModifiedDate=true",
- url_generator_.GetInitiateUploadNewFileUrl(kSetModifiedDate).spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadExistingFileUrl) {
- const bool kSetModifiedDate = true;
- // |resource_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/0ADK06pfg"
- "?uploadType=resumable&supportsTeamDrives=true",
- url_generator_
- .GetInitiateUploadExistingFileUrl("0ADK06pfg", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/0Bz0bd074"
- "?uploadType=resumable&supportsTeamDrives=true",
- url_generator_
- .GetInitiateUploadExistingFileUrl("0Bz0bd074", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/file%3Afile_id"
- "?uploadType=resumable&supportsTeamDrives=true",
- url_generator_
- .GetInitiateUploadExistingFileUrl("file:file_id", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/file%3Afile_id"
- "?uploadType=resumable&supportsTeamDrives=true&setModifiedDate=true",
- url_generator_
- .GetInitiateUploadExistingFileUrl("file:file_id", kSetModifiedDate)
- .spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetMultipartUploadNewFileUrl) {
- const bool kSetModifiedDate = true;
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files?uploadType=multipart"
- "&supportsTeamDrives=true",
- url_generator_.GetMultipartUploadNewFileUrl(!kSetModifiedDate).spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files?uploadType=multipart&"
- "supportsTeamDrives=true&setModifiedDate=true",
- url_generator_.GetMultipartUploadNewFileUrl(kSetModifiedDate).spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GetMultipartUploadExistingFileUrl) {
- const bool kSetModifiedDate = true;
- // |resource_id| should be embedded into the url.
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/0ADK06pfg"
- "?uploadType=multipart&supportsTeamDrives=true",
- url_generator_
- .GetMultipartUploadExistingFileUrl("0ADK06pfg", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/0Bz0bd074"
- "?uploadType=multipart&supportsTeamDrives=true",
- url_generator_
- .GetMultipartUploadExistingFileUrl("0Bz0bd074", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/file%3Afile_id"
- "?uploadType=multipart&supportsTeamDrives=true",
- url_generator_
- .GetMultipartUploadExistingFileUrl("file:file_id", !kSetModifiedDate)
- .spec());
- EXPECT_EQ(
- "https://www.example.com/upload/drive/v2/files/file%3Afile_id"
- "?uploadType=multipart&supportsTeamDrives=true&setModifiedDate=true",
- url_generator_
- .GetMultipartUploadExistingFileUrl("file:file_id", kSetModifiedDate)
- .spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GenerateDownloadFileUrl) {
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/resourceId?alt=media"
- "&supportsTeamDrives=true",
- url_generator_.GenerateDownloadFileUrl("resourceId").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/file%3AresourceId?alt=media"
- "&supportsTeamDrives=true",
- url_generator_.GenerateDownloadFileUrl("file:resourceId").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GeneratePermissionsInsertUrl) {
- EXPECT_EQ(
- "https://www.example.com/drive/v2/files/0ADK06pfg/permissions"
- "?supportsTeamDrives=true",
- url_generator_.GetPermissionsInsertUrl("0ADK06pfg").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GenerateThumbnailUrl) {
- EXPECT_EQ(
- "https://thumbnail.example.com/d/0ADK06pfg=w500-h480",
- url_generator_.GetThumbnailUrl("0ADK06pfg", 500, 480, false).spec());
- EXPECT_EQ("https://thumbnail.example.com/d/0ADK06pfg=w360-h380-c",
- url_generator_.GetThumbnailUrl("0ADK06pfg", 360, 380, true).spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, BatchUploadUrl) {
- EXPECT_EQ("https://www.example.com/upload/drive?supportsTeamDrives=true",
- url_generator_.GetBatchUploadUrl().spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GenerateTeamDriveListUrl) {
- EXPECT_EQ("https://www.example.com/drive/v2/teamdrives",
- url_generator_.GetTeamDriveListUrl(10, "").spec());
- EXPECT_EQ("https://www.example.com/drive/v2/teamdrives?maxResults=100",
- url_generator_.GetTeamDriveListUrl(100, "").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/"
- "teamdrives?maxResults=100&pageToken=theToken",
- url_generator_.GetTeamDriveListUrl(100, "theToken").spec());
- }
- TEST_F(DriveApiUrlGeneratorTest, GeneraeStartPageTokenUrl) {
- EXPECT_EQ(
- "https://www.example.com/drive/v2/changes/"
- "startPageToken?supportsTeamDrives=true",
- url_generator_.GetStartPageTokenUrl("").spec());
- EXPECT_EQ(
- "https://www.example.com/drive/v2/changes/"
- "startPageToken?supportsTeamDrives=true&teamDriveId=team_drive_id",
- url_generator_.GetStartPageTokenUrl("team_drive_id").spec());
- }
- } // namespace google_apis
|