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(
ChangesListRequest::~ChangesListRequest() {}
GURL ChangesListRequest::GetURLInternal() const {
return url_generator_.GetChangesListUrl(
include_deleted_, max_results_, page_token_, start_change_id_);
return url_generator_.GetChangesListUrl(include_deleted_, max_results_,
page_token_, start_change_id_,
team_drive_id_);
}
//======================== ChangesListNextPageRequest =========================
......
......@@ -690,6 +690,11 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> {
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:
// Overridden from DriveApiDataRequest.
GURL GetURLInternal() const override;
......@@ -700,6 +705,7 @@ class ChangesListRequest : public DriveApiDataRequest<ChangeList> {
int max_results_;
std::string page_token_;
int64_t start_change_id_;
std::string team_drive_id_;
DISALLOW_COPY_AND_ASSIGN(ChangesListRequest);
};
......
......@@ -194,6 +194,12 @@ class DriveApiRequestsTest : public testing::Test {
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.
net::EmbeddedTestServer test_server_;
std::unique_ptr<RequestSender> request_sender_;
......@@ -764,6 +770,7 @@ TEST_F(DriveApiRequestsTest, AppsListRequest) {
}
TEST_F(DriveApiRequestsTest, ChangesListRequest) {
EnableTeamDrivesIntegration();
// Set an expected data file containing valid result.
expected_data_file_path_ = test_util::GetTestFilePath(
"drive/changelist.json");
......@@ -782,14 +789,18 @@ TEST_F(DriveApiRequestsTest, ChangesListRequest) {
request->set_include_deleted(true);
request->set_start_change_id(100);
request->set_max_results(500);
request->set_team_drive_id("TEAM_DRIVE_ID");
request_sender_->StartRequestWithAuthRetry(std::move(request));
run_loop.Run();
}
EXPECT_EQ(HTTP_SUCCESS, error);
EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method);
EXPECT_EQ("/drive/v2/changes?maxResults=500&startChangeId=100",
http_request_.relative_url);
EXPECT_EQ(
"/drive/v2/changes?supportsTeamDrives=true&"
"includeTeamDriveItems=true&teamDriveId=TEAM_DRIVE_ID&"
"maxResults=500&startChangeId=100",
http_request_.relative_url);
EXPECT_TRUE(result);
}
......
......@@ -223,10 +223,12 @@ GURL DriveApiUrlGenerator::GetFilesTrashUrl(const std::string& file_id) const {
return url;
}
GURL DriveApiUrlGenerator::GetChangesListUrl(bool include_deleted,
int max_results,
const std::string& page_token,
int64_t start_change_id) const {
GURL DriveApiUrlGenerator::GetChangesListUrl(
bool include_deleted,
int max_results,
const std::string& page_token,
int64_t start_change_id,
const std::string& team_drive_id) const {
DCHECK_GE(start_change_id, 0);
GURL url = base_url_.Resolve(kDriveV2ChangelistUrl);
......@@ -234,6 +236,10 @@ GURL DriveApiUrlGenerator::GetChangesListUrl(bool include_deleted,
url = net::AppendOrReplaceQueryParameter(url, kSupportsTeamDrives, "true");
url = net::AppendOrReplaceQueryParameter(url, kIncludeTeamDriveItems,
"true");
if (!team_drive_id.empty()) {
url =
net::AppendOrReplaceQueryParameter(url, "teamDriveId", team_drive_id);
}
}
// includeDeleted is "true" by default.
if (!include_deleted)
......
......@@ -84,7 +84,8 @@ class DriveApiUrlGenerator {
GURL GetChangesListUrl(bool include_deleted,
int max_results,
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|.
GURL GetChildrenInsertUrl(const std::string& folder_id) const;
......
......@@ -312,21 +312,27 @@ TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
EXPECT_EQ(kV2ChangesUrlPrefix +
(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)
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 +
(kTestPatterns[i].expected_query.empty() ? "" : "&") +
kTestPatterns[i].expected_query,
team_drives_url_generator_.GetChangesListUrl(
kTestPatterns[i].include_deleted,
kTestPatterns[i].max_results,
kTestPatterns[i].page_token,
kTestPatterns[i].start_change_id)
team_drives_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",
team_drives_url_generator_
.GetChangesListUrl(true, 100, "", 0, "TEAM_DRIVE_ID")
.spec());
}
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