Home | History | Annotate | Download | only in google_apis
      1 // Copyright (c) 2012 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/gdata_wapi_url_generator.h"
      6 
      7 #include "testing/gtest/include/gtest/gtest.h"
      8 #include "url/gurl.h"
      9 
     10 namespace google_apis {
     11 
     12 class GDataWapiUrlGeneratorTest : public testing::Test {
     13  public:
     14   GDataWapiUrlGeneratorTest()
     15       : url_generator_(
     16           GURL(GDataWapiUrlGenerator::kBaseUrlForProduction),
     17           GURL(GDataWapiUrlGenerator::kBaseDownloadUrlForProduction)) {
     18   }
     19 
     20  protected:
     21   GDataWapiUrlGenerator url_generator_;
     22 };
     23 
     24 TEST_F(GDataWapiUrlGeneratorTest, AddStandardUrlParams) {
     25   EXPECT_EQ("http://www.example.com/?v=3&alt=json&showroot=true",
     26             GDataWapiUrlGenerator::AddStandardUrlParams(
     27                 GURL("http://www.example.com")).spec());
     28 }
     29 
     30 TEST_F(GDataWapiUrlGeneratorTest, AddInitiateUploadUrlParams) {
     31   EXPECT_EQ("http://www.example.com/?convert=false&v=3&alt=json&showroot=true",
     32             GDataWapiUrlGenerator::AddInitiateUploadUrlParams(
     33                 GURL("http://www.example.com")).spec());
     34 }
     35 
     36 TEST_F(GDataWapiUrlGeneratorTest, AddFeedUrlParams) {
     37   EXPECT_EQ(
     38       "http://www.example.com/?v=3&alt=json&showroot=true&"
     39       "showfolders=true"
     40       "&include-shared=true"
     41       "&max-results=100",
     42       GDataWapiUrlGenerator::AddFeedUrlParams(GURL("http://www.example.com"),
     43                                               100  // num_items_to_fetch
     44                                               ).spec());
     45 }
     46 
     47 TEST_F(GDataWapiUrlGeneratorTest, GenerateResourceListUrl) {
     48   // This is the very basic URL for the GetResourceList request.
     49   EXPECT_EQ("https://docs.google.com/feeds/default/private/full"
     50             "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
     51             "&max-results=500",
     52             url_generator_.GenerateResourceListUrl(
     53                 GURL(),         // override_url,
     54                 0,              // start_changestamp,
     55                 std::string(),  // search_string,
     56                 std::string()   // directory resource ID
     57                 ).spec());
     58 
     59   // With an override URL provided, the base URL is changed, but the default
     60   // parameters remain as-is.
     61   EXPECT_EQ("http://localhost/"
     62             "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
     63             "&max-results=500",
     64             url_generator_.GenerateResourceListUrl(
     65                 GURL("http://localhost/"),  // override_url,
     66                 0,                          // start_changestamp,
     67                 std::string(),              // search_string,
     68                 std::string()               // directory resource ID
     69                 ).spec());
     70 
     71   // With a non-zero start_changestamp provided, the base URL is changed from
     72   // "full" to "changes", and "start-index" parameter is added.
     73   EXPECT_EQ("https://docs.google.com/feeds/default/private/changes"
     74             "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
     75             "&max-results=500&start-index=100",
     76             url_generator_.GenerateResourceListUrl(
     77                 GURL(),         // override_url,
     78                 100,            // start_changestamp,
     79                 std::string(),  // search_string,
     80                 std::string()   // directory resource ID
     81                 ).spec());
     82 
     83   // With a non-empty search string provided, "max-results" value is changed,
     84   // and "q" parameter is added.
     85   EXPECT_EQ("https://docs.google.com/feeds/default/private/full"
     86             "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
     87             "&max-results=50&q=foo",
     88             url_generator_.GenerateResourceListUrl(
     89                 GURL(),        // override_url,
     90                 0,             // start_changestamp,
     91                 "foo",         // search_string,
     92                 std::string()  // directory resource ID
     93                 ).spec());
     94 
     95   // With a non-empty directory resource ID provided, the base URL is
     96   // changed, but the default parameters remain.
     97   EXPECT_EQ(
     98       "https://docs.google.com/feeds/default/private/full/XXX/contents"
     99       "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
    100       "&max-results=500",
    101       url_generator_.GenerateResourceListUrl(GURL(),  // override_url,
    102                                              0,       // start_changestamp,
    103                                              std::string(),  // search_string,
    104                                              "XXX"  // directory resource ID
    105                                              ).spec());
    106 
    107   // With a non-empty override_url provided, the base URL is changed, but
    108   // the default parameters remain. Note that start-index should not be
    109   // overridden.
    110   EXPECT_EQ("http://example.com/"
    111             "?start-index=123&v=3&alt=json&showroot=true&showfolders=true"
    112             "&include-shared=true&max-results=500",
    113             url_generator_.GenerateResourceListUrl(
    114                 GURL("http://example.com/?start-index=123"),  // override_url,
    115                 100,            // start_changestamp,
    116                 std::string(),  // search_string,
    117                 "XXX"           // directory resource ID
    118                 ).spec());
    119 }
    120 
    121 TEST_F(GDataWapiUrlGeneratorTest, GenerateSearchByTitleUrl) {
    122   EXPECT_EQ(
    123       "https://docs.google.com/feeds/default/private/full"
    124       "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
    125       "&max-results=500&title=search-title&title-exact=true",
    126       url_generator_.GenerateSearchByTitleUrl(
    127           "search-title", std::string()).spec());
    128 
    129   EXPECT_EQ(
    130       "https://docs.google.com/feeds/default/private/full/XXX/contents"
    131       "?v=3&alt=json&showroot=true&showfolders=true&include-shared=true"
    132       "&max-results=500&title=search-title&title-exact=true",
    133       url_generator_.GenerateSearchByTitleUrl(
    134           "search-title", "XXX").spec());
    135 }
    136 
    137 TEST_F(GDataWapiUrlGeneratorTest, GenerateEditUrl) {
    138   EXPECT_EQ(
    139       "https://docs.google.com/feeds/default/private/full/XXX?v=3&alt=json"
    140       "&showroot=true",
    141       url_generator_.GenerateEditUrl("XXX").spec());
    142 }
    143 
    144 TEST_F(GDataWapiUrlGeneratorTest, GenerateEditUrlWithoutParams) {
    145   EXPECT_EQ(
    146       "https://docs.google.com/feeds/default/private/full/XXX",
    147       url_generator_.GenerateEditUrlWithoutParams("XXX").spec());
    148 }
    149 
    150 TEST_F(GDataWapiUrlGeneratorTest, GenerateEditUrlWithEmbedOrigin) {
    151   EXPECT_EQ(
    152       "https://docs.google.com/feeds/default/private/full/XXX?v=3&alt=json"
    153       "&showroot=true&embedOrigin=chrome-extension%3A%2F%2Ftest",
    154       url_generator_.GenerateEditUrlWithEmbedOrigin(
    155           "XXX",
    156           GURL("chrome-extension://test")).spec());
    157   EXPECT_EQ(
    158       "https://docs.google.com/feeds/default/private/full/XXX?v=3&alt=json"
    159       "&showroot=true",
    160       url_generator_.GenerateEditUrlWithEmbedOrigin(
    161           "XXX",
    162           GURL()).spec());
    163 }
    164 
    165 TEST_F(GDataWapiUrlGeneratorTest, GenerateContentUrl) {
    166   EXPECT_EQ(
    167       "https://docs.google.com/feeds/default/private/full/"
    168       "folder%3Aroot/contents?v=3&alt=json&showroot=true",
    169       url_generator_.GenerateContentUrl("folder:root").spec());
    170 }
    171 
    172 TEST_F(GDataWapiUrlGeneratorTest, GenerateResourceUrlForRemoval) {
    173   EXPECT_EQ(
    174       "https://docs.google.com/feeds/default/private/full/"
    175       "folder%3Aroot/contents/file%3AABCDE?v=3&alt=json&showroot=true",
    176       url_generator_.GenerateResourceUrlForRemoval(
    177           "folder:root", "file:ABCDE").spec());
    178 }
    179 
    180 TEST_F(GDataWapiUrlGeneratorTest, GenerateInitiateUploadNewFileUrl) {
    181   EXPECT_EQ(
    182       "https://docs.google.com/feeds/upload/create-session/default/private/"
    183       "full/folder%3Aabcde/contents?convert=false&v=3&alt=json&showroot=true",
    184       url_generator_.GenerateInitiateUploadNewFileUrl("folder:abcde").spec());
    185 }
    186 
    187 TEST_F(GDataWapiUrlGeneratorTest, GenerateInitiateUploadExistingFileUrl) {
    188   EXPECT_EQ(
    189       "https://docs.google.com/feeds/upload/create-session/default/private/"
    190       "full/file%3Aresource_id?convert=false&v=3&alt=json&showroot=true",
    191       url_generator_.GenerateInitiateUploadExistingFileUrl(
    192           "file:resource_id").spec());
    193 }
    194 
    195 TEST_F(GDataWapiUrlGeneratorTest, GenerateResourceListRootUrl) {
    196   EXPECT_EQ(
    197       "https://docs.google.com/feeds/default/private/full?v=3&alt=json"
    198       "&showroot=true",
    199       url_generator_.GenerateResourceListRootUrl().spec());
    200 }
    201 
    202 TEST_F(GDataWapiUrlGeneratorTest, GenerateAccountMetadataUrl) {
    203   // Include installed apps.
    204   EXPECT_EQ(
    205       "https://docs.google.com/feeds/metadata/default"
    206       "?v=3&alt=json&showroot=true&include-installed-apps=true",
    207       url_generator_.GenerateAccountMetadataUrl(true).spec());
    208 
    209   // Exclude installed apps.
    210   EXPECT_EQ(
    211       "https://docs.google.com/feeds/metadata/default?v=3&alt=json"
    212       "&showroot=true",
    213       url_generator_.GenerateAccountMetadataUrl(false).spec());
    214 }
    215 
    216 TEST_F(GDataWapiUrlGeneratorTest, GenerateDownloadFileUrl) {
    217   EXPECT_EQ(
    218       "https://www.googledrive.com/host/resourceId",
    219       url_generator_.GenerateDownloadFileUrl("file:resourceId").spec());
    220 }
    221 
    222 }  // namespace google_apis
    223