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 11namespace { 12 13class CookiesDetailsTest : public CocoaTest { 14}; 15 16TEST_F(CookiesDetailsTest, CreateForFolder) { 17 scoped_nsobject<CocoaCookieDetails> details; 18 details.reset([[CocoaCookieDetails alloc] initAsFolder]); 19 20 EXPECT_EQ([details.get() type], kCocoaCookieDetailsTypeFolder); 21} 22 23TEST_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 55TEST_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 82TEST_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 111TEST_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 140TEST_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 177TEST_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 203TEST_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 227TEST_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