Commit e88c6107 authored by yamaguchi's avatar yamaguchi Committed by Commit bot

Add parameter to issue URLs for querying a ChangeList of a Team Drive.

After the Drive API supports Team Drive, each Team Drive can be queried
for its changes individually, in addition to the files owned by a user.
This is necessary to fetch change of files under Team Drive, especially
those created by another user.

TEST=google_apis_unittests --gtest_filter=DriveApiRequestsTest.*:DriveApiUrlGeneratorTest.*
BUG=715355

Review-Url: https://codereview.chromium.org/2854653004
Cr-Commit-Position: refs/heads/master@{#468600}
parent 8829f12b
...@@ -672,8 +672,9 @@ ChangesListRequest::ChangesListRequest( ...@@ -672,8 +672,9 @@ ChangesListRequest::ChangesListRequest(
ChangesListRequest::~ChangesListRequest() {} ChangesListRequest::~ChangesListRequest() {}
GURL ChangesListRequest::GetURLInternal() const { GURL ChangesListRequest::GetURLInternal() const {
return url_generator_.GetChangesListUrl( return url_generator_.GetChangesListUrl(include_deleted_, max_results_,
include_deleted_, max_results_, page_token_, start_change_id_); page_token_, start_change_id_,
team_drive_id_);
} }
//======================== ChangesListNextPageRequest ========================= //======================== ChangesListNextPageRequest =========================
......
...@@ -690,6 +690,11 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> { ...@@ -690,6 +690,11 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> {
start_change_id_ = start_change_id; start_change_id_ = start_change_id;
} }
const std::string& team_drive_id() const { return team_drive_id_; }
void set_team_drive_id(const std::string& team_drive_id) {
team_drive_id_ = team_drive_id;
}
protected: protected:
// Overridden from DriveApiDataRequest. // Overridden from DriveApiDataRequest.
GURL GetURLInternal() const override; GURL GetURLInternal() const override;
...@@ -700,6 +705,7 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> { ...@@ -700,6 +705,7 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> {
int max_results_; int max_results_;
std::string page_token_; std::string page_token_;
int64_t start_change_id_; int64_t start_change_id_;
std::string team_drive_id_;
DISALLOW_COPY_AND_ASSIGN(ChangesListRequest); DISALLOW_COPY_AND_ASSIGN(ChangesListRequest);
}; };
......
...@@ -194,6 +194,12 @@ class DriveApiRequestsTest : public testing::Test { ...@@ -194,6 +194,12 @@ class DriveApiRequestsTest : public testing::Test {
testing_properties_.push_back(public_property); testing_properties_.push_back(public_property);
} }
void EnableTeamDrivesIntegration() {
GURL test_base_url = test_util::GetBaseUrlForTesting(test_server_.port());
url_generator_.reset(new DriveApiUrlGenerator(
test_base_url, test_base_url, TEAM_DRIVES_INTEGRATION_ENABLED));
}
base::MessageLoopForIO message_loop_; // Test server needs IO thread. base::MessageLoopForIO message_loop_; // Test server needs IO thread.
net::EmbeddedTestServer test_server_; net::EmbeddedTestServer test_server_;
std::unique_ptr<RequestSender> request_sender_; std::unique_ptr<RequestSender> request_sender_;
...@@ -764,6 +770,7 @@ TEST_F(DriveApiRequestsTest, AppsListRequest) { ...@@ -764,6 +770,7 @@ TEST_F(DriveApiRequestsTest, AppsListRequest) {
} }
TEST_F(DriveApiRequestsTest, ChangesListRequest) { TEST_F(DriveApiRequestsTest, ChangesListRequest) {
EnableTeamDrivesIntegration();
// Set an expected data file containing valid result. // Set an expected data file containing valid result.
expected_data_file_path_ = test_util::GetTestFilePath( expected_data_file_path_ = test_util::GetTestFilePath(
"drive/changelist.json"); "drive/changelist.json");
...@@ -782,14 +789,18 @@ TEST_F(DriveApiRequestsTest, ChangesListRequest) { ...@@ -782,14 +789,18 @@ TEST_F(DriveApiRequestsTest, ChangesListRequest) {
request->set_include_deleted(true); request->set_include_deleted(true);
request->set_start_change_id(100); request->set_start_change_id(100);
request->set_max_results(500); request->set_max_results(500);
request->set_team_drive_id("TEAM_DRIVE_ID");
request_sender_->StartRequestWithAuthRetry(std::move(request)); request_sender_->StartRequestWithAuthRetry(std::move(request));
run_loop.Run(); run_loop.Run();
} }
EXPECT_EQ(HTTP_SUCCESS, error); EXPECT_EQ(HTTP_SUCCESS, error);
EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method);
EXPECT_EQ("/drive/v2/changes?maxResults=500&startChangeId=100", EXPECT_EQ(
http_request_.relative_url); "/drive/v2/changes?supportsTeamDrives=true&"
"includeTeamDriveItems=true&teamDriveId=TEAM_DRIVE_ID&"
"maxResults=500&startChangeId=100",
http_request_.relative_url);
EXPECT_TRUE(result); EXPECT_TRUE(result);
} }
......
...@@ -223,10 +223,12 @@ GURL DriveApiUrlGenerator::GetFilesTrashUrl(const std::string& file_id) const { ...@@ -223,10 +223,12 @@ GURL DriveApiUrlGenerator::GetFilesTrashUrl(const std::string& file_id) const {
return url; return url;
} }
GURL DriveApiUrlGenerator::GetChangesListUrl(bool include_deleted, GURL DriveApiUrlGenerator::GetChangesListUrl(
int max_results, bool include_deleted,
const std::string& page_token, int max_results,
int64_t start_change_id) const { const std::string& page_token,
int64_t start_change_id,
const std::string& team_drive_id) const {
DCHECK_GE(start_change_id, 0); DCHECK_GE(start_change_id, 0);
GURL url = base_url_.Resolve(kDriveV2ChangelistUrl); GURL url = base_url_.Resolve(kDriveV2ChangelistUrl);
...@@ -234,6 +236,10 @@ GURL DriveApiUrlGenerator::GetChangesListUrl(bool include_deleted, ...@@ -234,6 +236,10 @@ GURL DriveApiUrlGenerator::GetChangesListUrl(bool include_deleted,
url = net::AppendOrReplaceQueryParameter(url, kSupportsTeamDrives, "true"); url = net::AppendOrReplaceQueryParameter(url, kSupportsTeamDrives, "true");
url = net::AppendOrReplaceQueryParameter(url, kIncludeTeamDriveItems, url = net::AppendOrReplaceQueryParameter(url, kIncludeTeamDriveItems,
"true"); "true");
if (!team_drive_id.empty()) {
url =
net::AppendOrReplaceQueryParameter(url, "teamDriveId", team_drive_id);
}
} }
// includeDeleted is "true" by default. // includeDeleted is "true" by default.
if (!include_deleted) if (!include_deleted)
......
...@@ -84,7 +84,8 @@ class DriveApiUrlGenerator { ...@@ -84,7 +84,8 @@ class DriveApiUrlGenerator {
GURL GetChangesListUrl(bool include_deleted, GURL GetChangesListUrl(bool include_deleted,
int max_results, int max_results,
const std::string& page_token, const std::string& page_token,
int64_t start_change_id) const; int64_t start_change_id,
const std::string& team_dirve_id) const;
// Returns a URL to add a resource to a directory with |folder_id|. // Returns a URL to add a resource to a directory with |folder_id|.
GURL GetChildrenInsertUrl(const std::string& folder_id) const; GURL GetChildrenInsertUrl(const std::string& folder_id) const;
......
...@@ -312,21 +312,27 @@ TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) { ...@@ -312,21 +312,27 @@ TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
EXPECT_EQ(kV2ChangesUrlPrefix + EXPECT_EQ(kV2ChangesUrlPrefix +
(kTestPatterns[i].expected_query.empty() ? "" : "?") + (kTestPatterns[i].expected_query.empty() ? "" : "?") +
kTestPatterns[i].expected_query, kTestPatterns[i].expected_query,
url_generator_.GetChangesListUrl(kTestPatterns[i].include_deleted, url_generator_
kTestPatterns[i].max_results, .GetChangesListUrl(
kTestPatterns[i].page_token, kTestPatterns[i].include_deleted,
kTestPatterns[i].start_change_id) kTestPatterns[i].max_results, kTestPatterns[i].page_token,
kTestPatterns[i].start_change_id, "" /* team_drive_id */)
.spec()); .spec());
EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives + EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives +
(kTestPatterns[i].expected_query.empty() ? "" : "&") + (kTestPatterns[i].expected_query.empty() ? "" : "&") +
kTestPatterns[i].expected_query, kTestPatterns[i].expected_query,
team_drives_url_generator_.GetChangesListUrl( team_drives_url_generator_
kTestPatterns[i].include_deleted, .GetChangesListUrl(
kTestPatterns[i].max_results, kTestPatterns[i].include_deleted,
kTestPatterns[i].page_token, kTestPatterns[i].max_results, kTestPatterns[i].page_token,
kTestPatterns[i].start_change_id) kTestPatterns[i].start_change_id, "" /* team_drive_id */)
.spec()); .spec());
} }
EXPECT_EQ(kV2ChangesUrlPrefixWithTeamDrives + "&teamDriveId=TEAM_DRIVE_ID",
team_drives_url_generator_
.GetChangesListUrl(true, 100, "", 0, "TEAM_DRIVE_ID")
.spec());
} }
TEST_F(DriveApiUrlGeneratorTest, GetChildrenInsertUrl) { TEST_F(DriveApiUrlGeneratorTest, GetChildrenInsertUrl) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment