Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / google_apis / drive / drive_api_url_generator_unittest.cc
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.
4
5 #include "google_apis/drive/drive_api_url_generator.h"
6
7 #include "google_apis/drive/test_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "url/gurl.h"
10
11 namespace google_apis {
12
13 class DriveApiUrlGeneratorTest : public testing::Test {
14  public:
15   DriveApiUrlGeneratorTest()
16       : url_generator_(
17             GURL(DriveApiUrlGenerator::kBaseUrlForProduction),
18             GURL(DriveApiUrlGenerator::kBaseDownloadUrlForProduction)),
19         test_url_generator_(
20             test_util::GetBaseUrlForTesting(12345),
21             test_util::GetBaseUrlForTesting(12345).Resolve("download/")) {
22   }
23
24  protected:
25   DriveApiUrlGenerator url_generator_;
26   DriveApiUrlGenerator test_url_generator_;
27 };
28
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());
35 }
36
37 TEST_F(DriveApiUrlGeneratorTest, GetAppsListUrl) {
38   const bool use_internal_url = true;
39   EXPECT_EQ("https://www.googleapis.com/drive/v2internal/apps",
40             url_generator_.GetAppsListUrl(use_internal_url).spec());
41   EXPECT_EQ("https://www.googleapis.com/drive/v2/apps",
42             url_generator_.GetAppsListUrl(!use_internal_url).spec());
43   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/apps",
44             test_url_generator_.GetAppsListUrl(!use_internal_url).spec());
45 }
46
47 TEST_F(DriveApiUrlGeneratorTest, GetAppsDeleteUrl) {
48   EXPECT_EQ("https://www.googleapis.com/drive/v2internal/apps/0ADK06pfg",
49             url_generator_.GetAppsDeleteUrl("0ADK06pfg").spec());
50   EXPECT_EQ("http://127.0.0.1:12345/drive/v2internal/apps/0ADK06pfg",
51             test_url_generator_.GetAppsDeleteUrl("0ADK06pfg").spec());
52 }
53
54 TEST_F(DriveApiUrlGeneratorTest, GetFilesGetUrl) {
55   // |file_id| should be embedded into the url.
56   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg",
57             url_generator_.GetFilesGetUrl("0ADK06pfg").spec());
58   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074",
59             url_generator_.GetFilesGetUrl("0Bz0bd074").spec());
60   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id",
61             url_generator_.GetFilesGetUrl("file:file_id").spec());
62
63   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg",
64             test_url_generator_.GetFilesGetUrl("0ADK06pfg").spec());
65   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074",
66             test_url_generator_.GetFilesGetUrl("0Bz0bd074").spec());
67   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id",
68             test_url_generator_.GetFilesGetUrl("file:file_id").spec());
69 }
70
71 TEST_F(DriveApiUrlGeneratorTest, GetFilesAuthorizeUrl) {
72   EXPECT_EQ(
73       "https://www.googleapis.com/drive/v2internal/files/aa/authorize?appId=bb",
74             url_generator_.GetFilesAuthorizeUrl("aa", "bb").spec());
75   EXPECT_EQ(
76       "http://127.0.0.1:12345/drive/v2internal/files/foo/authorize?appId=bar",
77       test_url_generator_.GetFilesAuthorizeUrl("foo", "bar").spec());
78 }
79
80 TEST_F(DriveApiUrlGeneratorTest, GetFilesInsertUrl) {
81   EXPECT_EQ("https://www.googleapis.com/drive/v2/files",
82             url_generator_.GetFilesInsertUrl().spec());
83   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files",
84             test_url_generator_.GetFilesInsertUrl().spec());
85 }
86
87 TEST_F(DriveApiUrlGeneratorTest, GetFilePatchUrl) {
88   struct TestPattern {
89     bool set_modified_date;
90     bool update_viewed_date;
91     const std::string expected_query;
92   };
93   const TestPattern kTestPatterns[] = {
94     { false, true, "" },
95     { true, true, "?setModifiedDate=true" },
96     { false, false, "?updateViewedDate=false" },
97     { true, false, "?setModifiedDate=true&updateViewedDate=false" },
98   };
99
100   for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
101     EXPECT_EQ(
102         "https://www.googleapis.com/drive/v2/files/0ADK06pfg" +
103             kTestPatterns[i].expected_query,
104         url_generator_.GetFilesPatchUrl(
105             "0ADK06pfg",
106             kTestPatterns[i].set_modified_date,
107             kTestPatterns[i].update_viewed_date).spec());
108
109     EXPECT_EQ(
110         "https://www.googleapis.com/drive/v2/files/0Bz0bd074" +
111             kTestPatterns[i].expected_query,
112         url_generator_.GetFilesPatchUrl(
113             "0Bz0bd074",
114             kTestPatterns[i].set_modified_date,
115             kTestPatterns[i].update_viewed_date).spec());
116
117     EXPECT_EQ(
118         "https://www.googleapis.com/drive/v2/files/file%3Afile_id" +
119             kTestPatterns[i].expected_query,
120         url_generator_.GetFilesPatchUrl(
121             "file:file_id",
122             kTestPatterns[i].set_modified_date,
123             kTestPatterns[i].update_viewed_date).spec());
124
125
126     EXPECT_EQ(
127         "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg" +
128             kTestPatterns[i].expected_query,
129         test_url_generator_.GetFilesPatchUrl(
130             "0ADK06pfg",
131             kTestPatterns[i].set_modified_date,
132             kTestPatterns[i].update_viewed_date).spec());
133
134     EXPECT_EQ(
135         "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074" +
136             kTestPatterns[i].expected_query,
137         test_url_generator_.GetFilesPatchUrl(
138             "0Bz0bd074",
139             kTestPatterns[i].set_modified_date,
140             kTestPatterns[i].update_viewed_date).spec());
141
142     EXPECT_EQ(
143         "http://127.0.0.1:12345/drive/v2/files/file%3Afile_id" +
144             kTestPatterns[i].expected_query,
145         test_url_generator_.GetFilesPatchUrl(
146             "file:file_id",
147             kTestPatterns[i].set_modified_date,
148             kTestPatterns[i].update_viewed_date).spec());
149   }
150 }
151
152 TEST_F(DriveApiUrlGeneratorTest, GetFilesCopyUrl) {
153   // |file_id| should be embedded into the url.
154   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/copy",
155             url_generator_.GetFilesCopyUrl("0ADK06pfg").spec());
156   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/copy",
157             url_generator_.GetFilesCopyUrl("0Bz0bd074").spec());
158   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id/copy",
159             url_generator_.GetFilesCopyUrl("file:file_id").spec());
160
161   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/copy",
162             test_url_generator_.GetFilesCopyUrl("0ADK06pfg").spec());
163   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/copy",
164             test_url_generator_.GetFilesCopyUrl("0Bz0bd074").spec());
165   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id/copy",
166             test_url_generator_.GetFilesCopyUrl("file:file_id").spec());
167 }
168
169 TEST_F(DriveApiUrlGeneratorTest, GetFilesListUrl) {
170   struct TestPattern {
171     int max_results;
172     const std::string page_token;
173     const std::string q;
174     const std::string expected_query;
175   };
176   const TestPattern kTestPatterns[] = {
177     { 100, "", "", "" },
178     { 150, "", "", "?maxResults=150" },
179     { 10, "", "", "?maxResults=10" },
180     { 100, "token", "", "?pageToken=token" },
181     { 150, "token", "", "?maxResults=150&pageToken=token" },
182     { 10, "token", "", "?maxResults=10&pageToken=token" },
183     { 100, "", "query", "?q=query" },
184     { 150, "", "query", "?maxResults=150&q=query" },
185     { 10, "", "query", "?maxResults=10&q=query" },
186     { 100, "token", "query", "?pageToken=token&q=query" },
187     { 150, "token", "query", "?maxResults=150&pageToken=token&q=query" },
188     { 10, "token", "query", "?maxResults=10&pageToken=token&q=query" },
189   };
190
191   for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
192     EXPECT_EQ(
193         "https://www.googleapis.com/drive/v2/files" +
194             kTestPatterns[i].expected_query,
195         url_generator_.GetFilesListUrl(
196             kTestPatterns[i].max_results, kTestPatterns[i].page_token,
197             kTestPatterns[i].q).spec());
198
199     EXPECT_EQ(
200         "http://127.0.0.1:12345/drive/v2/files" +
201             kTestPatterns[i].expected_query,
202         test_url_generator_.GetFilesListUrl(
203             kTestPatterns[i].max_results, kTestPatterns[i].page_token,
204             kTestPatterns[i].q).spec());
205   }
206 }
207
208 TEST_F(DriveApiUrlGeneratorTest, GetFilesDeleteUrl) {
209   // |file_id| should be embedded into the url.
210   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg",
211             url_generator_.GetFilesDeleteUrl("0ADK06pfg").spec());
212   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074",
213             url_generator_.GetFilesDeleteUrl("0Bz0bd074").spec());
214   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id",
215             url_generator_.GetFilesDeleteUrl("file:file_id").spec());
216
217   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg",
218             test_url_generator_.GetFilesDeleteUrl("0ADK06pfg").spec());
219   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074",
220             test_url_generator_.GetFilesDeleteUrl("0Bz0bd074").spec());
221   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id",
222             test_url_generator_.GetFilesDeleteUrl("file:file_id").spec());
223 }
224
225 TEST_F(DriveApiUrlGeneratorTest, GetFilesTrashUrl) {
226   // |file_id| should be embedded into the url.
227   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/trash",
228             url_generator_.GetFilesTrashUrl("0ADK06pfg").spec());
229   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/trash",
230             url_generator_.GetFilesTrashUrl("0Bz0bd074").spec());
231   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/file%3Afile_id/trash",
232             url_generator_.GetFilesTrashUrl("file:file_id").spec());
233
234   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/trash",
235             test_url_generator_.GetFilesTrashUrl("0ADK06pfg").spec());
236   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/trash",
237             test_url_generator_.GetFilesTrashUrl("0Bz0bd074").spec());
238   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afile_id/trash",
239             test_url_generator_.GetFilesTrashUrl("file:file_id").spec());
240 }
241
242 TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
243   struct TestPattern {
244     bool include_deleted;
245     int max_results;
246     const std::string page_token;
247     int64 start_change_id;
248     const std::string expected_query;
249   };
250   const TestPattern kTestPatterns[] = {
251     { true, 100, "", 0, "" },
252     { false, 100, "", 0, "?includeDeleted=false" },
253     { true, 150, "", 0, "?maxResults=150" },
254     { false, 150, "", 0, "?includeDeleted=false&maxResults=150" },
255     { true, 10, "", 0, "?maxResults=10" },
256     { false, 10, "", 0, "?includeDeleted=false&maxResults=10" },
257
258     { true, 100, "token", 0, "?pageToken=token" },
259     { false, 100, "token", 0, "?includeDeleted=false&pageToken=token" },
260     { true, 150, "token", 0, "?maxResults=150&pageToken=token" },
261     { false, 150, "token", 0,
262       "?includeDeleted=false&maxResults=150&pageToken=token" },
263     { true, 10, "token", 0, "?maxResults=10&pageToken=token" },
264     { false, 10, "token", 0,
265       "?includeDeleted=false&maxResults=10&pageToken=token" },
266
267     { true, 100, "", 12345, "?startChangeId=12345" },
268     { false, 100, "", 12345, "?includeDeleted=false&startChangeId=12345" },
269     { true, 150, "", 12345, "?maxResults=150&startChangeId=12345" },
270     { false, 150, "", 12345,
271       "?includeDeleted=false&maxResults=150&startChangeId=12345" },
272     { true, 10, "", 12345, "?maxResults=10&startChangeId=12345" },
273     { false, 10, "", 12345,
274       "?includeDeleted=false&maxResults=10&startChangeId=12345" },
275
276     { true, 100, "token", 12345, "?pageToken=token&startChangeId=12345" },
277     { false, 100, "token", 12345,
278       "?includeDeleted=false&pageToken=token&startChangeId=12345" },
279     { true, 150, "token", 12345,
280       "?maxResults=150&pageToken=token&startChangeId=12345" },
281     { false, 150, "token", 12345,
282       "?includeDeleted=false&maxResults=150&pageToken=token"
283       "&startChangeId=12345" },
284     { true, 10, "token", 12345,
285       "?maxResults=10&pageToken=token&startChangeId=12345" },
286     { false, 10, "token", 12345,
287       "?includeDeleted=false&maxResults=10&pageToken=token"
288       "&startChangeId=12345" },
289   };
290
291   for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
292     EXPECT_EQ(
293         "https://www.googleapis.com/drive/v2/changes" +
294             kTestPatterns[i].expected_query,
295         url_generator_.GetChangesListUrl(
296             kTestPatterns[i].include_deleted,
297             kTestPatterns[i].max_results,
298             kTestPatterns[i].page_token,
299             kTestPatterns[i].start_change_id).spec());
300
301     EXPECT_EQ(
302         "http://127.0.0.1:12345/drive/v2/changes" +
303             kTestPatterns[i].expected_query,
304         test_url_generator_.GetChangesListUrl(
305             kTestPatterns[i].include_deleted,
306             kTestPatterns[i].max_results,
307             kTestPatterns[i].page_token,
308             kTestPatterns[i].start_change_id).spec());
309   }
310 }
311
312 TEST_F(DriveApiUrlGeneratorTest, GetChildrenInsertUrl) {
313   // |file_id| should be embedded into the url.
314   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/children",
315             url_generator_.GetChildrenInsertUrl("0ADK06pfg").spec());
316   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0Bz0bd074/children",
317             url_generator_.GetChildrenInsertUrl("0Bz0bd074").spec());
318   EXPECT_EQ(
319       "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children",
320       url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
321
322   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/children",
323             test_url_generator_.GetChildrenInsertUrl("0ADK06pfg").spec());
324   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/children",
325             test_url_generator_.GetChildrenInsertUrl("0Bz0bd074").spec());
326   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Afolder_id/children",
327             test_url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
328 }
329
330 TEST_F(DriveApiUrlGeneratorTest, GetChildrenDeleteUrl) {
331   // |file_id| should be embedded into the url.
332   EXPECT_EQ(
333       "https://www.googleapis.com/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
334       url_generator_.GetChildrenDeleteUrl("0Bz0bd074", "0ADK06pfg").spec());
335   EXPECT_EQ(
336       "https://www.googleapis.com/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
337       url_generator_.GetChildrenDeleteUrl("0ADK06pfg", "0Bz0bd074").spec());
338   EXPECT_EQ(
339       "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children"
340       "/file%3Achild_id",
341       url_generator_.GetChildrenDeleteUrl(
342           "file:child_id", "file:folder_id").spec());
343
344   EXPECT_EQ(
345       "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
346       test_url_generator_.GetChildrenDeleteUrl(
347           "0Bz0bd074", "0ADK06pfg").spec());
348   EXPECT_EQ(
349       "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
350       test_url_generator_.GetChildrenDeleteUrl(
351           "0ADK06pfg", "0Bz0bd074").spec());
352   EXPECT_EQ(
353       "http://127.0.0.1:12345/drive/v2/files/file%3Afolder_id/children/"
354       "file%3Achild_id",
355       test_url_generator_.GetChildrenDeleteUrl(
356           "file:child_id", "file:folder_id").spec());
357 }
358
359 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadNewFileUrl) {
360   const bool kSetModifiedDate = true;
361
362   EXPECT_EQ(
363       "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable",
364       url_generator_.GetInitiateUploadNewFileUrl(!kSetModifiedDate).spec());
365
366   EXPECT_EQ(
367       "http://127.0.0.1:12345/upload/drive/v2/files?uploadType=resumable",
368       test_url_generator_.GetInitiateUploadNewFileUrl(
369           !kSetModifiedDate).spec());
370
371   EXPECT_EQ(
372       "http://127.0.0.1:12345/upload/drive/v2/files?uploadType=resumable&"
373       "setModifiedDate=true",
374       test_url_generator_.GetInitiateUploadNewFileUrl(
375           kSetModifiedDate).spec());
376 }
377
378 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadExistingFileUrl) {
379   const bool kSetModifiedDate = true;
380
381   // |resource_id| should be embedded into the url.
382   EXPECT_EQ(
383       "https://www.googleapis.com/upload/drive/v2/files/0ADK06pfg"
384       "?uploadType=resumable",
385       url_generator_.GetInitiateUploadExistingFileUrl(
386           "0ADK06pfg", !kSetModifiedDate).spec());
387   EXPECT_EQ(
388       "https://www.googleapis.com/upload/drive/v2/files/0Bz0bd074"
389       "?uploadType=resumable",
390       url_generator_.GetInitiateUploadExistingFileUrl(
391           "0Bz0bd074", !kSetModifiedDate).spec());
392   EXPECT_EQ(
393       "https://www.googleapis.com/upload/drive/v2/files/file%3Afile_id"
394       "?uploadType=resumable",
395       url_generator_.GetInitiateUploadExistingFileUrl(
396           "file:file_id", !kSetModifiedDate).spec());
397   EXPECT_EQ(
398       "https://www.googleapis.com/upload/drive/v2/files/file%3Afile_id"
399       "?uploadType=resumable&setModifiedDate=true",
400       url_generator_.GetInitiateUploadExistingFileUrl(
401           "file:file_id", kSetModifiedDate).spec());
402
403   EXPECT_EQ(
404       "http://127.0.0.1:12345/upload/drive/v2/files/0ADK06pfg"
405       "?uploadType=resumable",
406       test_url_generator_.GetInitiateUploadExistingFileUrl(
407           "0ADK06pfg", !kSetModifiedDate).spec());
408   EXPECT_EQ(
409       "http://127.0.0.1:12345/upload/drive/v2/files/0Bz0bd074"
410       "?uploadType=resumable",
411       test_url_generator_.GetInitiateUploadExistingFileUrl(
412           "0Bz0bd074", !kSetModifiedDate).spec());
413   EXPECT_EQ(
414       "http://127.0.0.1:12345/upload/drive/v2/files/file%3Afile_id"
415       "?uploadType=resumable",
416       test_url_generator_.GetInitiateUploadExistingFileUrl(
417           "file:file_id", !kSetModifiedDate).spec());
418   EXPECT_EQ(
419       "http://127.0.0.1:12345/upload/drive/v2/files/file%3Afile_id"
420       "?uploadType=resumable&setModifiedDate=true",
421       test_url_generator_.GetInitiateUploadExistingFileUrl(
422           "file:file_id", kSetModifiedDate).spec());
423 }
424
425 TEST_F(DriveApiUrlGeneratorTest, GenerateDownloadFileUrl) {
426   EXPECT_EQ(
427       "https://www.googledrive.com/host/resourceId",
428       url_generator_.GenerateDownloadFileUrl("resourceId").spec());
429   EXPECT_EQ(
430       "https://www.googledrive.com/host/file%3AresourceId",
431       url_generator_.GenerateDownloadFileUrl("file:resourceId").spec());
432   EXPECT_EQ(
433       "http://127.0.0.1:12345/download/resourceId",
434       test_url_generator_.GenerateDownloadFileUrl("resourceId").spec());
435 }
436
437 TEST_F(DriveApiUrlGeneratorTest, GeneratePermissionsInsertUrl) {
438   EXPECT_EQ("https://www.googleapis.com/drive/v2/files/0ADK06pfg/permissions",
439             url_generator_.GetPermissionsInsertUrl("0ADK06pfg").spec());
440   EXPECT_EQ("http://127.0.0.1:12345/drive/v2/files/file%3Aabc/permissions",
441             test_url_generator_.GetPermissionsInsertUrl("file:abc").spec());
442 }
443
444 }  // namespace google_apis