1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/google_apis/drive_api_url_generator.h"
7 #include "chrome/browser/google_apis/test_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
11 namespace google_apis {
13 class DriveApiUrlGeneratorTest : public testing::Test {
15 DriveApiUrlGeneratorTest()
17 GURL(DriveApiUrlGenerator::kBaseUrlForProduction),
18 GURL(DriveApiUrlGenerator::kBaseDownloadUrlForProduction)),
20 test_util::GetBaseUrlForTesting(12345),
21 test_util::GetBaseUrlForTesting(12345).Resolve("download/")) {
25 DriveApiUrlGenerator url_generator_;
26 DriveApiUrlGenerator test_url_generator_;
29 // Make sure the hard-coded urls are returned.
30 TEST_F(DriveApiUrlGeneratorTest, GetAboutGetUrl) {
31 EXPECT_EQ("https://www.googleapis.com/drive/v2/about",
32 url_generator_.GetAboutGetUrl().spec());
33 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/about",
34 test_url_generator_.GetAboutGetUrl().spec());
37 TEST_F(DriveApiUrlGeneratorTest, GetAppsListUrl) {
38 EXPECT_EQ("https://www.googleapis.com/drive/v2/apps",
39 url_generator_.GetAppsListUrl().spec());
40 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/apps",
41 test_url_generator_.GetAppsListUrl().spec());
44 TEST_F(DriveApiUrlGeneratorTest, GetFilesGetUrl) {
45 // |file_id| should be embedded into the url.
46 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg",
47 url_generator_.GetFilesGetUrl("0ADK06pfg").spec());
48 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074",
49 url_generator_.GetFilesGetUrl("0Bz0bd074").spec());
50 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id",
51 url_generator_.GetFilesGetUrl("file:file_id").spec());
53 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg",
54 test_url_generator_.GetFilesGetUrl("0ADK06pfg").spec());
55 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074",
56 test_url_generator_.GetFilesGetUrl("0Bz0bd074").spec());
57 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id",
58 test_url_generator_.GetFilesGetUrl("file:file_id").spec());
61 TEST_F(DriveApiUrlGeneratorTest, GetFilesInsertUrl) {
62 EXPECT_EQ("https://www.googleapis.com/drive/v2/files",
63 url_generator_.GetFilesInsertUrl().spec());
64 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files",
65 test_url_generator_.GetFilesInsertUrl().spec());
68 TEST_F(DriveApiUrlGeneratorTest, GetFilePatchUrl) {
70 bool set_modified_date;
71 bool update_viewed_date;
72 const std::string expected_query;
74 const TestPattern kTestPatterns[] = {
76 { true, true, "?setModifiedDate=true" },
77 { false, false, "?updateViewedDate=false" },
78 { true, false, "?setModifiedDate=true&updateViewedDate=false" },
81 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
83 "https://www.googleapis.com/drive/v2/files/0ADK06pfg" +
84 kTestPatterns[i].expected_query,
85 url_generator_.GetFilesPatchUrl(
87 kTestPatterns[i].set_modified_date,
88 kTestPatterns[i].update_viewed_date).spec());
91 "https://www.googleapis.com/drive/v2/files/0Bz0bd074" +
92 kTestPatterns[i].expected_query,
93 url_generator_.GetFilesPatchUrl(
95 kTestPatterns[i].set_modified_date,
96 kTestPatterns[i].update_viewed_date).spec());
99 "https://www.googleapis.com/drive/v2/files/file%3Afile_id" +
100 kTestPatterns[i].expected_query,
101 url_generator_.GetFilesPatchUrl(
103 kTestPatterns[i].set_modified_date,
104 kTestPatterns[i].update_viewed_date).spec());
108 "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg" +
109 kTestPatterns[i].expected_query,
110 test_url_generator_.GetFilesPatchUrl(
112 kTestPatterns[i].set_modified_date,
113 kTestPatterns[i].update_viewed_date).spec());
116 "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074" +
117 kTestPatterns[i].expected_query,
118 test_url_generator_.GetFilesPatchUrl(
120 kTestPatterns[i].set_modified_date,
121 kTestPatterns[i].update_viewed_date).spec());
124 "http://127.0.0.1:12345/drive/v2/files/file%3Afile_id" +
125 kTestPatterns[i].expected_query,
126 test_url_generator_.GetFilesPatchUrl(
128 kTestPatterns[i].set_modified_date,
129 kTestPatterns[i].update_viewed_date).spec());
133 TEST_F(DriveApiUrlGeneratorTest, GetFilesCopyUrl) {
134 // |file_id| should be embedded into the url.
135 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/copy",
136 url_generator_.GetFilesCopyUrl("0ADK06pfg").spec());
137 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/copy",
138 url_generator_.GetFilesCopyUrl("0Bz0bd074").spec());
139 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id/copy",
140 url_generator_.GetFilesCopyUrl("file:file_id").spec());
142 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/copy",
143 test_url_generator_.GetFilesCopyUrl("0ADK06pfg").spec());
144 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/copy",
145 test_url_generator_.GetFilesCopyUrl("0Bz0bd074").spec());
146 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id/copy",
147 test_url_generator_.GetFilesCopyUrl("file:file_id").spec());
150 TEST_F(DriveApiUrlGeneratorTest, GetFilesListUrl) {
153 const std::string page_token;
155 const std::string expected_query;
157 const TestPattern kTestPatterns[] = {
159 { 150, "", "", "?maxResults=150" },
160 { 10, "", "", "?maxResults=10" },
161 { 100, "token", "", "?pageToken=token" },
162 { 150, "token", "", "?maxResults=150&pageToken=token" },
163 { 10, "token", "", "?maxResults=10&pageToken=token" },
164 { 100, "", "query", "?q=query" },
165 { 150, "", "query", "?maxResults=150&q=query" },
166 { 10, "", "query", "?maxResults=10&q=query" },
167 { 100, "token", "query", "?pageToken=token&q=query" },
168 { 150, "token", "query", "?maxResults=150&pageToken=token&q=query" },
169 { 10, "token", "query", "?maxResults=10&pageToken=token&q=query" },
172 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
174 "https://www.googleapis.com/drive/v2/files" +
175 kTestPatterns[i].expected_query,
176 url_generator_.GetFilesListUrl(
177 kTestPatterns[i].max_results, kTestPatterns[i].page_token,
178 kTestPatterns[i].q).spec());
181 "http://127.0.0.1:12345/drive/v2/files" +
182 kTestPatterns[i].expected_query,
183 test_url_generator_.GetFilesListUrl(
184 kTestPatterns[i].max_results, kTestPatterns[i].page_token,
185 kTestPatterns[i].q).spec());
189 TEST_F(DriveApiUrlGeneratorTest, GetFilesTrashUrl) {
190 // |file_id| should be embedded into the url.
191 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/trash",
192 url_generator_.GetFilesTrashUrl("0ADK06pfg").spec());
193 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/trash",
194 url_generator_.GetFilesTrashUrl("0Bz0bd074").spec());
195 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id/trash",
196 url_generator_.GetFilesTrashUrl("file:file_id").spec());
198 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/trash",
199 test_url_generator_.GetFilesTrashUrl("0ADK06pfg").spec());
200 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/trash",
201 test_url_generator_.GetFilesTrashUrl("0Bz0bd074").spec());
202 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id/trash",
203 test_url_generator_.GetFilesTrashUrl("file:file_id").spec());
206 TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
208 bool include_deleted;
210 const std::string page_token;
211 int64 start_change_id;
212 const std::string expected_query;
214 const TestPattern kTestPatterns[] = {
215 { true, 100, "", 0, "" },
216 { false, 100, "", 0, "?includeDeleted=false" },
217 { true, 150, "", 0, "?maxResults=150" },
218 { false, 150, "", 0, "?includeDeleted=false&maxResults=150" },
219 { true, 10, "", 0, "?maxResults=10" },
220 { false, 10, "", 0, "?includeDeleted=false&maxResults=10" },
222 { true, 100, "token", 0, "?pageToken=token" },
223 { false, 100, "token", 0, "?includeDeleted=false&pageToken=token" },
224 { true, 150, "token", 0, "?maxResults=150&pageToken=token" },
225 { false, 150, "token", 0,
226 "?includeDeleted=false&maxResults=150&pageToken=token" },
227 { true, 10, "token", 0, "?maxResults=10&pageToken=token" },
228 { false, 10, "token", 0,
229 "?includeDeleted=false&maxResults=10&pageToken=token" },
231 { true, 100, "", 12345, "?startChangeId=12345" },
232 { false, 100, "", 12345, "?includeDeleted=false&startChangeId=12345" },
233 { true, 150, "", 12345, "?maxResults=150&startChangeId=12345" },
234 { false, 150, "", 12345,
235 "?includeDeleted=false&maxResults=150&startChangeId=12345" },
236 { true, 10, "", 12345, "?maxResults=10&startChangeId=12345" },
237 { false, 10, "", 12345,
238 "?includeDeleted=false&maxResults=10&startChangeId=12345" },
240 { true, 100, "token", 12345, "?pageToken=token&startChangeId=12345" },
241 { false, 100, "token", 12345,
242 "?includeDeleted=false&pageToken=token&startChangeId=12345" },
243 { true, 150, "token", 12345,
244 "?maxResults=150&pageToken=token&startChangeId=12345" },
245 { false, 150, "token", 12345,
246 "?includeDeleted=false&maxResults=150&pageToken=token"
247 "&startChangeId=12345" },
248 { true, 10, "token", 12345,
249 "?maxResults=10&pageToken=token&startChangeId=12345" },
250 { false, 10, "token", 12345,
251 "?includeDeleted=false&maxResults=10&pageToken=token"
252 "&startChangeId=12345" },
255 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
257 "https://www.googleapis.com/drive/v2/changes" +
258 kTestPatterns[i].expected_query,
259 url_generator_.GetChangesListUrl(
260 kTestPatterns[i].include_deleted,
261 kTestPatterns[i].max_results,
262 kTestPatterns[i].page_token,
263 kTestPatterns[i].start_change_id).spec());
266 "http://127.0.0.1:12345/drive/v2/changes" +
267 kTestPatterns[i].expected_query,
268 test_url_generator_.GetChangesListUrl(
269 kTestPatterns[i].include_deleted,
270 kTestPatterns[i].max_results,
271 kTestPatterns[i].page_token,
272 kTestPatterns[i].start_change_id).spec());
276 TEST_F(DriveApiUrlGeneratorTest, GetChildrenInsertUrl) {
277 // |file_id| should be embedded into the url.
278 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/children",
279 url_generator_.GetChildrenInsertUrl("0ADK06pfg").spec());
280 EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/children",
281 url_generator_.GetChildrenInsertUrl("0Bz0bd074").spec());
283 "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children",
284 url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
286 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/children",
287 test_url_generator_.GetChildrenInsertUrl("0ADK06pfg").spec());
288 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/children",
289 test_url_generator_.GetChildrenInsertUrl("0Bz0bd074").spec());
290 EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afolder_id/children",
291 test_url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
294 TEST_F(DriveApiUrlGeneratorTest, GetChildrenDeleteUrl) {
295 // |file_id| should be embedded into the url.
297 "https://www.googleapis.com/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
298 url_generator_.GetChildrenDeleteUrl("0Bz0bd074", "0ADK06pfg").spec());
300 "https://www.googleapis.com/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
301 url_generator_.GetChildrenDeleteUrl("0ADK06pfg", "0Bz0bd074").spec());
303 "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children"
305 url_generator_.GetChildrenDeleteUrl(
306 "file:child_id", "file:folder_id").spec());
309 "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
310 test_url_generator_.GetChildrenDeleteUrl(
311 "0Bz0bd074", "0ADK06pfg").spec());
313 "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
314 test_url_generator_.GetChildrenDeleteUrl(
315 "0ADK06pfg", "0Bz0bd074").spec());
317 "http://127.0.0.1:12345/drive/v2/files/file%3Afolder_id/children/"
319 test_url_generator_.GetChildrenDeleteUrl(
320 "file:child_id", "file:folder_id").spec());
323 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadNewFileUrl) {
325 "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable",
326 url_generator_.GetInitiateUploadNewFileUrl().spec());
329 "http://127.0.0.1:12345/upload/drive/v2/files?uploadType=resumable",
330 test_url_generator_.GetInitiateUploadNewFileUrl().spec());
333 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadExistingFileUrl) {
334 // |resource_id| should be embedded into the url.
336 "https://www.googleapis.com/upload/drive/v2/files/0ADK06pfg"
337 "?uploadType=resumable",
338 url_generator_.GetInitiateUploadExistingFileUrl("0ADK06pfg").spec());
340 "https://www.googleapis.com/upload/drive/v2/files/0Bz0bd074"
341 "?uploadType=resumable",
342 url_generator_.GetInitiateUploadExistingFileUrl("0Bz0bd074").spec());
344 "https://www.googleapis.com/upload/drive/v2/files/file%3Afile_id"
345 "?uploadType=resumable",
346 url_generator_.GetInitiateUploadExistingFileUrl("file:file_id").spec());
349 "http://127.0.0.1:12345/upload/drive/v2/files/0ADK06pfg"
350 "?uploadType=resumable",
351 test_url_generator_.GetInitiateUploadExistingFileUrl(
352 "0ADK06pfg").spec());
354 "http://127.0.0.1:12345/upload/drive/v2/files/0Bz0bd074"
355 "?uploadType=resumable",
356 test_url_generator_.GetInitiateUploadExistingFileUrl(
357 "0Bz0bd074").spec());
359 "http://127.0.0.1:12345/upload/drive/v2/files/file%3Afile_id"
360 "?uploadType=resumable",
361 test_url_generator_.GetInitiateUploadExistingFileUrl(
362 "file:file_id").spec());
365 TEST_F(DriveApiUrlGeneratorTest, GenerateDownloadFileUrl) {
367 "https://www.googledrive.com/host/resourceId",
368 url_generator_.GenerateDownloadFileUrl("resourceId").spec());
370 "https://www.googledrive.com/host/file%3AresourceId",
371 url_generator_.GenerateDownloadFileUrl("file:resourceId").spec());
373 "http://127.0.0.1:12345/download/resourceId",
374 test_url_generator_.GenerateDownloadFileUrl("resourceId").spec());
377 } // namespace google_apis