Home | History | Annotate | Download | only in content_settings
      1 // Copyright (c) 2010 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 "base/sys_string_conversions.h"
      6 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
      7 #include "chrome/browser/ui/cocoa/content_settings/cookie_details.h"
      8 #include "googleurl/src/gurl.h"
      9 #import "testing/gtest_mac.h"
     10 
     11 namespace {
     12 
     13 class CookiesDetailsTest : public CocoaTest {
     14 };
     15 
     16 TEST_F(CookiesDetailsTest, CreateForFolder) {
     17   scoped_nsobject<CocoaCookieDetails> details;
     18   details.reset([[CocoaCookieDetails alloc] initAsFolder]);
     19 
     20   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeFolder);
     21 }
     22 
     23 TEST_F(CookiesDetailsTest, CreateForCookie) {
     24   scoped_nsobject<CocoaCookieDetails> details;
     25   GURL url("http://chromium.org");
     26   std::string cookieLine(
     27       "PHPSESSID=0123456789abcdef0123456789abcdef; path=/");
     28   net::CookieMonster::ParsedCookie pc(cookieLine);
     29   net::CookieMonster::CanonicalCookie cookie(url, pc);
     30   NSString* origin = base::SysUTF8ToNSString("http://chromium.org");
     31   details.reset([[CocoaCookieDetails alloc] initWithCookie:&cookie
     32                                                     origin:origin
     33                                          canEditExpiration:NO]);
     34 
     35   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeCookie);
     36   EXPECT_NSEQ(@"PHPSESSID", [details.get() name]);
     37   EXPECT_NSEQ(@"0123456789abcdef0123456789abcdef",
     38       [details.get() content]);
     39   EXPECT_NSEQ(@"http://chromium.org", [details.get() domain]);
     40   EXPECT_NSEQ(@"/", [details.get() path]);
     41   EXPECT_NSNE(@"", [details.get() lastModified]);
     42   EXPECT_NSNE(@"", [details.get() created]);
     43   EXPECT_NSNE(@"", [details.get() sendFor]);
     44 
     45   EXPECT_FALSE([details.get() shouldHideCookieDetailsView]);
     46   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
     47   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
     48   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
     49   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
     50   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
     51   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
     52   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
     53 }
     54 
     55 TEST_F(CookiesDetailsTest, CreateForTreeDatabase) {
     56   scoped_nsobject<CocoaCookieDetails> details;
     57   std::string host("http://chromium.org");
     58   std::string database_name("sassolungo");
     59   std::string origin_identifier("dolomites");
     60   std::string description("a great place to climb");
     61   int64 size = 1234;
     62   base::Time last_modified = base::Time::Now();
     63   BrowsingDataDatabaseHelper::DatabaseInfo info(host, database_name,
     64       origin_identifier, description, host, size, last_modified);
     65   details.reset([[CocoaCookieDetails alloc] initWithDatabase:&info]);
     66 
     67   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeTreeDatabase);
     68   EXPECT_NSEQ(@"a great place to climb", [details.get() databaseDescription]);
     69   EXPECT_NSEQ(@"1234 B", [details.get() fileSize]);
     70   EXPECT_NSNE(@"", [details.get() lastModified]);
     71 
     72   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
     73   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
     74   EXPECT_TRUE([details.get() shouldShowDatabaseTreeDetailsView]);
     75   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
     76   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
     77   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
     78   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
     79   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
     80 }
     81 
     82 TEST_F(CookiesDetailsTest, CreateForTreeLocalStorage) {
     83   scoped_nsobject<CocoaCookieDetails> details;
     84   std::string protocol("http");
     85   std::string host("chromium.org");
     86   unsigned short port = 80;
     87   std::string database_identifier("id");
     88   std::string origin("chromium.org");
     89   FilePath file_path(FILE_PATH_LITERAL("/"));
     90   int64 size = 1234;
     91   base::Time last_modified = base::Time::Now();
     92   BrowsingDataLocalStorageHelper::LocalStorageInfo info(protocol, host, port,
     93       database_identifier, origin, file_path, size, last_modified);
     94   details.reset([[CocoaCookieDetails alloc] initWithLocalStorage:&info]);
     95 
     96   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeTreeLocalStorage);
     97   EXPECT_NSEQ(@"chromium.org", [details.get() domain]);
     98   EXPECT_NSEQ(@"1234 B", [details.get() fileSize]);
     99   EXPECT_NSNE(@"", [details.get() lastModified]);
    100 
    101   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    102   EXPECT_TRUE([details.get() shouldShowLocalStorageTreeDetailsView]);
    103   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    104   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
    105   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
    106   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
    107   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
    108   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
    109 }
    110 
    111 TEST_F(CookiesDetailsTest, CreateForTreeAppCache) {
    112   scoped_nsobject<CocoaCookieDetails> details;
    113 
    114   GURL url("http://chromium.org/stuff.manifest");
    115   appcache::AppCacheInfo info;
    116   info.creation_time = base::Time::Now();
    117   info.last_update_time = base::Time::Now();
    118   info.last_access_time = base::Time::Now();
    119   info.size=2678;
    120   info.manifest_url = url;
    121   details.reset([[CocoaCookieDetails alloc] initWithAppCacheInfo:&info]);
    122 
    123   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeTreeAppCache);
    124   EXPECT_NSEQ(@"http://chromium.org/stuff.manifest",
    125               [details.get() manifestURL]);
    126   EXPECT_NSEQ(@"2678 B", [details.get() fileSize]);
    127   EXPECT_NSNE(@"", [details.get() lastAccessed]);
    128   EXPECT_NSNE(@"", [details.get() created]);
    129 
    130   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    131   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
    132   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    133   EXPECT_TRUE([details.get() shouldShowAppCacheTreeDetailsView]);
    134   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
    135   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
    136   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
    137   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
    138 }
    139 
    140 TEST_F(CookiesDetailsTest, CreateForTreeIndexedDB) {
    141   scoped_nsobject<CocoaCookieDetails> details;
    142 
    143   std::string protocol("http");
    144   std::string host("moose.org");
    145   unsigned short port = 80;
    146   std::string database_identifier("id");
    147   std::string origin("moose.org");
    148   FilePath file_path(FILE_PATH_LITERAL("/"));
    149   int64 size = 1234;
    150   base::Time last_modified = base::Time::Now();
    151   BrowsingDataIndexedDBHelper::IndexedDBInfo info(protocol,
    152                                                   host,
    153                                                   port,
    154                                                   database_identifier,
    155                                                   origin,
    156                                                   file_path,
    157                                                   size,
    158                                                   last_modified);
    159 
    160   details.reset([[CocoaCookieDetails alloc] initWithIndexedDBInfo:&info]);
    161 
    162   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeTreeIndexedDB);
    163   EXPECT_NSEQ(@"moose.org", [details.get() domain]);
    164   EXPECT_NSEQ(@"1234 B", [details.get() fileSize]);
    165   EXPECT_NSNE(@"", [details.get() lastModified]);
    166 
    167   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    168   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
    169   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    170   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
    171   EXPECT_TRUE([details.get() shouldShowIndexedDBTreeDetailsView]);
    172   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
    173   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
    174   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
    175 }
    176 
    177 TEST_F(CookiesDetailsTest, CreateForPromptDatabase) {
    178   scoped_nsobject<CocoaCookieDetails> details;
    179   std::string domain("chromium.org");
    180   string16 name(base::SysNSStringToUTF16(@"wicked_name"));
    181   string16 desc(base::SysNSStringToUTF16(@"desc"));
    182   details.reset([[CocoaCookieDetails alloc] initWithDatabase:domain
    183                                                 databaseName:name
    184                                          databaseDescription:desc
    185                                                     fileSize:94]);
    186 
    187   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypePromptDatabase);
    188   EXPECT_NSEQ(@"chromium.org", [details.get() domain]);
    189   EXPECT_NSEQ(@"wicked_name", [details.get() name]);
    190   EXPECT_NSEQ(@"desc", [details.get() databaseDescription]);
    191   EXPECT_NSEQ(@"94 B", [details.get() fileSize]);
    192 
    193   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    194   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
    195   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    196   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
    197   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
    198   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
    199   EXPECT_TRUE([details.get() shouldShowDatabasePromptDetailsView]);
    200   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
    201 }
    202 
    203 TEST_F(CookiesDetailsTest, CreateForPromptLocalStorage) {
    204   scoped_nsobject<CocoaCookieDetails> details;
    205   std::string domain("chromium.org");
    206   string16 key(base::SysNSStringToUTF16(@"testKey"));
    207   string16 value(base::SysNSStringToUTF16(@"testValue"));
    208   details.reset([[CocoaCookieDetails alloc] initWithLocalStorage:domain
    209                                                              key:key
    210                                                            value:value]);
    211 
    212   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypePromptLocalStorage);
    213   EXPECT_NSEQ(@"chromium.org", [details.get() domain]);
    214   EXPECT_NSEQ(@"testKey", [details.get() localStorageKey]);
    215   EXPECT_NSEQ(@"testValue", [details.get() localStorageValue]);
    216 
    217   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    218   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
    219   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    220   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
    221   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
    222   EXPECT_TRUE([details.get() shouldShowLocalStoragePromptDetailsView]);
    223   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
    224   EXPECT_FALSE([details.get() shouldShowAppCachePromptDetailsView]);
    225 }
    226 
    227 TEST_F(CookiesDetailsTest, CreateForPromptAppCache) {
    228   scoped_nsobject<CocoaCookieDetails> details;
    229   std::string manifestURL("http://html5demos.com/html5demo.manifest");
    230   details.reset([[CocoaCookieDetails alloc]
    231       initWithAppCacheManifestURL:manifestURL.c_str()]);
    232 
    233   EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypePromptAppCache);
    234   EXPECT_NSEQ(@"http://html5demos.com/html5demo.manifest",
    235               [details.get() manifestURL]);
    236 
    237   EXPECT_TRUE([details.get() shouldHideCookieDetailsView]);
    238   EXPECT_FALSE([details.get() shouldShowLocalStorageTreeDetailsView]);
    239   EXPECT_FALSE([details.get() shouldShowDatabaseTreeDetailsView]);
    240   EXPECT_FALSE([details.get() shouldShowAppCacheTreeDetailsView]);
    241   EXPECT_FALSE([details.get() shouldShowIndexedDBTreeDetailsView]);
    242   EXPECT_FALSE([details.get() shouldShowLocalStoragePromptDetailsView]);
    243   EXPECT_FALSE([details.get() shouldShowDatabasePromptDetailsView]);
    244   EXPECT_TRUE([details.get() shouldShowAppCachePromptDetailsView]);
    245 }
    246 
    247 }
    248