- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / google_apis / 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 "chrome/browser/google_apis/drive_api_url_generator.h"
6
7 #include "chrome/browser/google_apis/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   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());
42 }
43
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());
52
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());
59 }
60
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());
66 }
67
68 TEST_F(DriveApiUrlGeneratorTest, GetFilePatchUrl) {
69   struct TestPattern {
70     bool set_modified_date;
71     bool update_viewed_date;
72     const std::string expected_query;
73   };
74   const TestPattern kTestPatterns[] = {
75     { false, true, "" },
76     { true, true, "?setModifiedDate=true" },
77     { false, false, "?updateViewedDate=false" },
78     { true, false, "?setModifiedDate=true&updateViewedDate=false" },
79   };
80
81   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
82     EXPECT_EQ(
83         "https://www.googleapis.com/drive/v2/files/0ADK06pfg" +
84             kTestPatterns[i].expected_query,
85         url_generator_.GetFilesPatchUrl(
86             "0ADK06pfg",
87             kTestPatterns[i].set_modified_date,
88             kTestPatterns[i].update_viewed_date).spec());
89
90     EXPECT_EQ(
91         "https://www.googleapis.com/drive/v2/files/0Bz0bd074" +
92             kTestPatterns[i].expected_query,
93         url_generator_.GetFilesPatchUrl(
94             "0Bz0bd074",
95             kTestPatterns[i].set_modified_date,
96             kTestPatterns[i].update_viewed_date).spec());
97
98     EXPECT_EQ(
99         "https://www.googleapis.com/drive/v2/files/file%3Afile_id" +
100             kTestPatterns[i].expected_query,
101         url_generator_.GetFilesPatchUrl(
102             "file:file_id",
103             kTestPatterns[i].set_modified_date,
104             kTestPatterns[i].update_viewed_date).spec());
105
106
107     EXPECT_EQ(
108         "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg" +
109             kTestPatterns[i].expected_query,
110         test_url_generator_.GetFilesPatchUrl(
111             "0ADK06pfg",
112             kTestPatterns[i].set_modified_date,
113             kTestPatterns[i].update_viewed_date).spec());
114
115     EXPECT_EQ(
116         "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074" +
117             kTestPatterns[i].expected_query,
118         test_url_generator_.GetFilesPatchUrl(
119             "0Bz0bd074",
120             kTestPatterns[i].set_modified_date,
121             kTestPatterns[i].update_viewed_date).spec());
122
123     EXPECT_EQ(
124         "http://127.0.0.1:12345/drive/v2/files/file%3Afile_id" +
125             kTestPatterns[i].expected_query,
126         test_url_generator_.GetFilesPatchUrl(
127             "file:file_id",
128             kTestPatterns[i].set_modified_date,
129             kTestPatterns[i].update_viewed_date).spec());
130   }
131 }
132
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());
141
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());
148 }
149
150 TEST_F(DriveApiUrlGeneratorTest, GetFilesListUrl) {
151   struct TestPattern {
152     int max_results;
153     const std::string page_token;
154     const std::string q;
155     const std::string expected_query;
156   };
157   const TestPattern kTestPatterns[] = {
158     { 100, "", "", "" },
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" },
170   };
171
172   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
173     EXPECT_EQ(
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());
179
180     EXPECT_EQ(
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());
186   }
187 }
188
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());
197
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());
204 }
205
206 TEST_F(DriveApiUrlGeneratorTest, GetChangesListUrl) {
207   struct TestPattern {
208     bool include_deleted;
209     int max_results;
210     const std::string page_token;
211     int64 start_change_id;
212     const std::string expected_query;
213   };
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" },
221
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" },
230
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" },
239
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" },
253   };
254
255   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) {
256     EXPECT_EQ(
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());
264
265     EXPECT_EQ(
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());
273   }
274 }
275
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());
282   EXPECT_EQ(
283       "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children",
284       url_generator_.GetChildrenInsertUrl("file:folder_id").spec());
285
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());
292 }
293
294 TEST_F(DriveApiUrlGeneratorTest, GetChildrenDeleteUrl) {
295   // |file_id| should be embedded into the url.
296   EXPECT_EQ(
297       "https://www.googleapis.com/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
298       url_generator_.GetChildrenDeleteUrl("0Bz0bd074", "0ADK06pfg").spec());
299   EXPECT_EQ(
300       "https://www.googleapis.com/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
301       url_generator_.GetChildrenDeleteUrl("0ADK06pfg", "0Bz0bd074").spec());
302   EXPECT_EQ(
303       "https://www.googleapis.com/drive/v2/files/file%3Afolder_id/children"
304       "/file%3Achild_id",
305       url_generator_.GetChildrenDeleteUrl(
306           "file:child_id", "file:folder_id").spec());
307
308   EXPECT_EQ(
309       "http://127.0.0.1:12345/drive/v2/files/0ADK06pfg/children/0Bz0bd074",
310       test_url_generator_.GetChildrenDeleteUrl(
311           "0Bz0bd074", "0ADK06pfg").spec());
312   EXPECT_EQ(
313       "http://127.0.0.1:12345/drive/v2/files/0Bz0bd074/children/0ADK06pfg",
314       test_url_generator_.GetChildrenDeleteUrl(
315           "0ADK06pfg", "0Bz0bd074").spec());
316   EXPECT_EQ(
317       "http://127.0.0.1:12345/drive/v2/files/file%3Afolder_id/children/"
318       "file%3Achild_id",
319       test_url_generator_.GetChildrenDeleteUrl(
320           "file:child_id", "file:folder_id").spec());
321 }
322
323 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadNewFileUrl) {
324   EXPECT_EQ(
325       "https://www.googleapis.com/upload/drive/v2/files?uploadType=resumable",
326       url_generator_.GetInitiateUploadNewFileUrl().spec());
327
328   EXPECT_EQ(
329       "http://127.0.0.1:12345/upload/drive/v2/files?uploadType=resumable",
330       test_url_generator_.GetInitiateUploadNewFileUrl().spec());
331 }
332
333 TEST_F(DriveApiUrlGeneratorTest, GetInitiateUploadExistingFileUrl) {
334   // |resource_id| should be embedded into the url.
335   EXPECT_EQ(
336       "https://www.googleapis.com/upload/drive/v2/files/0ADK06pfg"
337       "?uploadType=resumable",
338       url_generator_.GetInitiateUploadExistingFileUrl("0ADK06pfg").spec());
339   EXPECT_EQ(
340       "https://www.googleapis.com/upload/drive/v2/files/0Bz0bd074"
341       "?uploadType=resumable",
342       url_generator_.GetInitiateUploadExistingFileUrl("0Bz0bd074").spec());
343   EXPECT_EQ(
344       "https://www.googleapis.com/upload/drive/v2/files/file%3Afile_id"
345       "?uploadType=resumable",
346       url_generator_.GetInitiateUploadExistingFileUrl("file:file_id").spec());
347
348   EXPECT_EQ(
349       "http://127.0.0.1:12345/upload/drive/v2/files/0ADK06pfg"
350       "?uploadType=resumable",
351       test_url_generator_.GetInitiateUploadExistingFileUrl(
352           "0ADK06pfg").spec());
353   EXPECT_EQ(
354       "http://127.0.0.1:12345/upload/drive/v2/files/0Bz0bd074"
355       "?uploadType=resumable",
356       test_url_generator_.GetInitiateUploadExistingFileUrl(
357           "0Bz0bd074").spec());
358   EXPECT_EQ(
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());
363 }
364
365 TEST_F(DriveApiUrlGeneratorTest, GenerateDownloadFileUrl) {
366   EXPECT_EQ(
367       "https://www.googledrive.com/host/resourceId",
368       url_generator_.GenerateDownloadFileUrl("resourceId").spec());
369   EXPECT_EQ(
370       "https://www.googledrive.com/host/file%3AresourceId",
371       url_generator_.GenerateDownloadFileUrl("file:resourceId").spec());
372   EXPECT_EQ(
373       "http://127.0.0.1:12345/download/resourceId",
374       test_url_generator_.GenerateDownloadFileUrl("resourceId").spec());
375 }
376
377 }  // namespace google_apis