Home | History | Annotate | Download | only in drive
      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_UNSAFE(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_UNSAFE(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_UNSAFE(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
    445