Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(564)

Side by Side Diff: chrome/test/data/extensions/api_test/cookies/api/tab.js

Issue 8725019: Move another bunch of extension API tests to manifest_version 2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 var TEST_DOMAIN = 'cookies.com';
6 var TEST_PATH = '/auth';
7 var TEST_HOST = 'www.chrome_extensions.' + TEST_DOMAIN;
8 var TEST_URL = 'http://' + TEST_HOST + '/foobar.html?arg=toolbar&param=true';
9 var TEST_URL2 = 'http://chromium.' + TEST_DOMAIN + '/index.html';
10 var TEST_URL3 = 'https://' + TEST_HOST + '/content.html';
11 var TEST_URL4 = 'https://' + TEST_HOST + TEST_PATH + '/content.html';
12 var TEST_URL5 = 'http://' + TEST_HOST + TEST_PATH + '/content.html';
13 var TEST_EXPIRATION_DATE = 12345678900;
14 var TEST_ODD_DOMAIN = '.strange stuff!!.com';
15 var TEST_ODD_PATH = '/hello = world';
16 var TEST_ODD_URL = 'http://' + TEST_ODD_DOMAIN + TEST_ODD_PATH + '/index.html';
17 var TEST_UNPERMITTED_URL = 'http://illegal.' + TEST_DOMAIN + '/';
18
19 var TEST_BASIC_COOKIE = {
20 url: TEST_URL,
21 name: 'api_test_cookie',
22 value: 'helloworld'
23 };
24 var TEST_DOMAIN_COOKIE = {
25 url: TEST_URL,
26 name: 'TEST_domain',
27 value: '32849395FFDSAA**##@@@',
28 domain: TEST_DOMAIN,
29 expirationDate: TEST_EXPIRATION_DATE
30 };
31 var TEST_SECURE_COOKIE = {
32 url: TEST_URL5,
33 name: 'SECRETCOOKIE',
34 value: 'foobar_password',
35 secure: true,
36 httpOnly: true
37 };
38 var TEST_BASIC_EXPIRED_COOKIE = {
39 url: TEST_BASIC_COOKIE.url,
40 name: TEST_BASIC_COOKIE.name,
41 value: TEST_BASIC_COOKIE.value,
42 expirationDate: 0
43 };
44
45 function readCookie(name) {
46 var nameEQ = name + '=';
47 var cookies = document.cookie.split(';');
48 for(var i=0; i < cookies.length; i++) {
49 var c = cookies[i];
50 while (c.charAt(0)==' ') {
51 c = c.substring(1);
52 }
53 if (c.indexOf(nameEQ) == 0) {
54 return c.substring(nameEQ.length);
55 }
56 }
57 return null;
58 }
59
60 function expectValidCookie(cookie) {
61 chrome.test.assertTrue(cookie != null, 'Expected cookie not set.');
62 }
63
64 function expectNullCookie(cookie) {
65 chrome.test.assertEq(null, cookie);
66 }
67
68 function expectUndefinedCookie(cookie) {
69 chrome.test.assertEq(undefined, cookie);
70 }
71
72 function removeTestCookies() {
73 chrome.cookies.remove(
74 {url: TEST_URL, name: TEST_BASIC_COOKIE.name});
75 chrome.cookies.remove(
76 {url: TEST_URL, name: TEST_DOMAIN_COOKIE.name});
77 chrome.cookies.remove(
78 {url: TEST_URL4, name: TEST_SECURE_COOKIE.name});
79 chrome.cookies.remove({url: TEST_URL, name: 'abcd'});
80 chrome.cookies.remove({url: TEST_ODD_URL, name: 'abcd'});
81 }
82
83 var pass = chrome.test.callbackPass;
84 var fail = chrome.test.callbackFail;
85
86 chrome.test.runTests([
87 function readCookies() {
88 chrome.test.assertEq('1', readCookie('a'));
89 chrome.test.assertEq('2', readCookie('b'));
90 chrome.test.assertEq('3', readCookie('c'));
91 chrome.test.assertEq(null, readCookie('nonexistent'));
92 // Invalid schemes don't work with the cookie API.
93 chrome.cookies.get(
94 {url: document.location.href, name: 'a'},
95 fail('No host permissions for cookies at url: "' +
96 document.location.href + '".'));
97 },
98 function getBasicCookie() {
99 removeTestCookies();
100 chrome.cookies.set(TEST_BASIC_COOKIE);
101 // Domain doesn't match.
102 chrome.cookies.get(
103 {url: TEST_URL2, name: TEST_BASIC_COOKIE.name},
104 pass(expectNullCookie));
105 // URL invalid.
106 chrome.cookies.get(
107 {url: 'invalid url', name: TEST_BASIC_COOKIE.name},
108 fail('Invalid url: "invalid url".'));
109 // URL lacking permissions.
110 chrome.cookies.get(
111 {url: TEST_UNPERMITTED_URL, name: TEST_BASIC_COOKIE.name},
112 fail('No host permissions for cookies at url: "' +
113 TEST_UNPERMITTED_URL + '".'));
114 // Store ID invalid.
115 chrome.cookies.get({
116 url: TEST_BASIC_COOKIE.url,
117 name: TEST_BASIC_COOKIE.name,
118 storeId: 'invalid'
119 }, fail('Invalid cookie store id: "invalid".'));
120 chrome.cookies.get(
121 {url: TEST_BASIC_COOKIE.url, name: TEST_BASIC_COOKIE.name},
122 pass(function(cookie) {
123 expectValidCookie(cookie);
124 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookie.name);
125 chrome.test.assertEq(TEST_BASIC_COOKIE.value, cookie.value);
126 chrome.test.assertEq(TEST_HOST, cookie.domain);
127 chrome.test.assertEq(true, cookie.hostOnly);
128 chrome.test.assertEq('/', cookie.path);
129 chrome.test.assertEq(false, cookie.secure);
130 chrome.test.assertEq(false, cookie.httpOnly);
131 chrome.test.assertEq(true, cookie.session);
132 chrome.test.assertTrue(typeof cookie.expirationDate === 'undefined',
133 'Session cookie should not have expirationDate property.');
134 chrome.test.assertTrue(typeof cookie.storeId !== 'undefined',
135 'Cookie store ID not provided.');
136 }));
137 },
138 function getDomainCookie() {
139 removeTestCookies();
140 chrome.cookies.set(TEST_DOMAIN_COOKIE);
141 chrome.cookies.get(
142 {url: TEST_URL2, name: TEST_DOMAIN_COOKIE.name},
143 pass(function(cookie) {
144 expectValidCookie(cookie);
145 chrome.test.assertEq(TEST_DOMAIN_COOKIE.name, cookie.name);
146 chrome.test.assertEq(TEST_DOMAIN_COOKIE.value, cookie.value);
147 chrome.test.assertEq('.' + TEST_DOMAIN, cookie.domain);
148 chrome.test.assertEq(false, cookie.hostOnly);
149 chrome.test.assertEq('/', cookie.path);
150 chrome.test.assertEq(false, cookie.secure);
151 chrome.test.assertEq(false, cookie.httpOnly);
152 chrome.test.assertEq(false, cookie.session);
153 chrome.test.assertEq(TEST_EXPIRATION_DATE, cookie.expirationDate);
154 }));
155 },
156 function getSecureCookie() {
157 removeTestCookies();
158 chrome.cookies.set(TEST_SECURE_COOKIE);
159 // Original URL doesn't work because scheme isn't secure.
160 chrome.cookies.get(
161 {url: TEST_SECURE_COOKIE.url, name: TEST_SECURE_COOKIE.name},
162 pass(expectNullCookie));
163 // Path doesn't match.
164 chrome.cookies.get(
165 {url: TEST_URL3, name: TEST_SECURE_COOKIE.name},
166 pass(expectNullCookie));
167 chrome.cookies.get(
168 {url: TEST_URL4, name: TEST_SECURE_COOKIE.name},
169 pass(function(cookie) {
170 expectValidCookie(cookie);
171 chrome.test.assertEq(TEST_SECURE_COOKIE.name, cookie.name);
172 chrome.test.assertEq(TEST_SECURE_COOKIE.value, cookie.value);
173 chrome.test.assertEq(TEST_HOST, cookie.domain);
174 chrome.test.assertEq(true, cookie.hostOnly);
175 chrome.test.assertEq(TEST_PATH, cookie.path);
176 chrome.test.assertEq(true, cookie.secure);
177 chrome.test.assertEq(true, cookie.httpOnly);
178 chrome.test.assertEq(true, cookie.session);
179 }));
180 },
181 function setOddCookies() {
182 removeTestCookies();
183 // URL lacking permissions.
184 chrome.cookies.set(
185 {url: TEST_UNPERMITTED_URL, name: 'abcd', domain: TEST_DOMAIN});
186 chrome.cookies.get({url: TEST_URL, name: 'abcd'},
187 pass(expectNullCookie));
188 // Attribute values containing invalid characters are disallowed.
189 chrome.cookies.set({url: TEST_URL, name: 'abcd=efg'});
190 chrome.cookies.get({url: TEST_URL, name: 'abcd'},
191 pass(expectNullCookie));
192 chrome.cookies.set(
193 {url: TEST_URL, name: 'abcd', value: 'HI;LO'});
194 chrome.cookies.get({url: TEST_URL, name: 'abcd'},
195 pass(expectNullCookie));
196 chrome.cookies.set(
197 {url: TEST_URL, name: 'abcd', domain: 'cookies.com\r'});
198 chrome.cookies.get({url: TEST_URL, name: 'abcd'},
199 pass(expectNullCookie));
200 chrome.cookies.set(
201 {url: TEST_URL, name: 'abcd', domain: 'somedomain.com'});
202 chrome.cookies.get({url: TEST_URL, name: 'abcd'},
203 pass(expectNullCookie));
204 chrome.cookies.set({
205 url: TEST_ODD_URL,
206 name: 'abcd',
207 domain: TEST_ODD_DOMAIN,
208 path: TEST_ODD_PATH
209 });
210 chrome.cookies.get({url: TEST_ODD_URL, name: 'abcd'},
211 pass(function(cookie) {
212 expectValidCookie(cookie);
213 chrome.test.assertEq(TEST_ODD_DOMAIN, unescape(cookie.domain));
214 chrome.test.assertEq(TEST_ODD_PATH, unescape(cookie.path));
215 }));
216 },
217 function setCookiesWithCallbacks() {
218 removeTestCookies();
219 // Basics.
220 chrome.cookies.set(
221 TEST_BASIC_COOKIE,
222 pass(function(cookie) {
223 expectValidCookie(cookie);
224 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookie.name);
225 chrome.test.assertEq(TEST_BASIC_COOKIE.value, cookie.value);
226 chrome.test.assertEq(TEST_HOST, cookie.domain);
227 chrome.test.assertEq(true, cookie.hostOnly);
228 chrome.test.assertEq('/', cookie.path);
229 chrome.test.assertEq(false, cookie.secure);
230 chrome.test.assertEq(false, cookie.httpOnly);
231 chrome.test.assertEq(true, cookie.session);
232 chrome.test.assertTrue(typeof cookie.expirationDate === 'undefined',
233 'Session cookie should not have expirationDate property.');
234 chrome.test.assertTrue(typeof cookie.storeId !== 'undefined',
235 'Cookie store ID not provided.');
236 }));
237 // Invalid values generate callback with no arguments, and error messages
238 chrome.cookies.set(
239 {url: TEST_UNPERMITTED_URL, name: 'abcd', domain: TEST_DOMAIN},
240 fail(
241 'No host permissions for cookies at url: "'
242 + TEST_UNPERMITTED_URL + '".',
243 expectUndefinedCookie));
244 chrome.cookies.set(
245 {url: TEST_URL, name: 'abcd=efg'},
246 fail('Failed to parse or set cookie named "abcd=efg".',
247 expectUndefinedCookie));
248 chrome.cookies.set(
249 {url: TEST_URL, name: 'abcd', value: 'HI;LO'},
250 fail('Failed to parse or set cookie named "abcd".',
251 expectUndefinedCookie));
252 chrome.cookies.set(
253 {url: TEST_URL, name: 'abcd', domain: 'cookies.com\r'},
254 fail('Failed to parse or set cookie named "abcd".',
255 expectUndefinedCookie));
256 chrome.cookies.set(
257 {url: TEST_URL, name: 'abcd', domain: 'somedomain.com'},
258 fail('Failed to parse or set cookie named "abcd".',
259 expectUndefinedCookie));
260 // Expired cookies generate callback with "null" cookie
261 chrome.cookies.set(TEST_BASIC_EXPIRED_COOKIE, pass(expectUndefinedCookie));
262 // Odd (but valid!) URLs get callbacks too!
263 chrome.cookies.set({
264 url: TEST_ODD_URL,
265 name: 'abcd',
266 domain: TEST_ODD_DOMAIN,
267 path: TEST_ODD_PATH
268 }, pass(function(cookie) {
269 expectValidCookie(cookie);
270 chrome.test.assertEq(TEST_ODD_DOMAIN, unescape(cookie.domain));
271 chrome.test.assertEq(TEST_ODD_PATH, unescape(cookie.path));
272 }));
273 },
274 function removeCookie() {
275 removeTestCookies();
276 chrome.cookies.set(TEST_BASIC_COOKIE);
277 chrome.cookies.get(
278 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
279 pass(expectValidCookie));
280 // Removal with any domain-matching URL will do.
281 chrome.cookies.remove(
282 {url: TEST_URL4, name: TEST_BASIC_COOKIE.name});
283 chrome.cookies.get(
284 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
285 pass(expectNullCookie));
286 // Set with an expired date should also remove the cookie.
287 chrome.cookies.set(TEST_BASIC_COOKIE);
288 chrome.cookies.get(
289 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
290 pass(expectValidCookie));
291 chrome.cookies.set(TEST_BASIC_EXPIRED_COOKIE);
292 chrome.cookies.get(
293 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
294 pass(expectNullCookie));
295 // Removal with a disallowed URL shouldn't do anything.
296 chrome.cookies.set(TEST_DOMAIN_COOKIE);
297 chrome.cookies.get(
298 {url: TEST_URL2, name: TEST_DOMAIN_COOKIE.name},
299 pass(expectValidCookie));
300 chrome.cookies.remove(
301 {url: TEST_UNPERMITTED_URL, name: TEST_DOMAIN_COOKIE.name});
302 chrome.cookies.get(
303 {url: TEST_URL2, name: TEST_DOMAIN_COOKIE.name},
304 pass(expectValidCookie));
305 },
306 function removeCookiesWithCallbacks() {
307 removeTestCookies();
308 chrome.cookies.set(TEST_BASIC_COOKIE);
309 chrome.cookies.get(
310 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
311 pass(expectValidCookie));
312 // Removal with any domain-matching URL will trigger callback with the
313 // removed cookie's "url" and "name" fields.
314 chrome.cookies.remove(
315 {url: TEST_URL4, name: TEST_BASIC_COOKIE.name}, pass(function(data) {
316 chrome.test.assertEq(TEST_URL4, data.url);
317 chrome.test.assertEq(TEST_BASIC_COOKIE.name, data.name);
318 chrome.test.assertTrue(typeof data.storeId !== 'undefined',
319 'Cookie store ID not provided.');
320 }));
321 // Removal with a disallowed URL should trigger the callback with no
322 // arguments, and a set error message.
323 chrome.cookies.set(TEST_DOMAIN_COOKIE);
324 chrome.cookies.remove(
325 {url: TEST_UNPERMITTED_URL, name: TEST_DOMAIN_COOKIE.name},
326 fail(
327 'No host permissions for cookies at url: "'
328 + TEST_UNPERMITTED_URL + '".',
329 expectUndefinedCookie));
330 },
331 function getAllCookies() {
332 removeTestCookies();
333 chrome.cookies.getAll({}, pass(function(cookies) {
334 chrome.test.assertEq(0, cookies.length);
335 }));
336 chrome.cookies.set(TEST_BASIC_COOKIE);
337 chrome.cookies.set(TEST_SECURE_COOKIE);
338 chrome.cookies.getAll(
339 {domain: TEST_DOMAIN}, pass(function(cookies) {
340 chrome.test.assertEq(2, cookies.length);
341 chrome.test.assertEq(TEST_SECURE_COOKIE.name, cookies[0].name);
342 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookies[1].name);
343 }));
344 chrome.cookies.getAll({
345 name: TEST_BASIC_COOKIE.name
346 }, pass(function(cookies) {
347 chrome.test.assertEq(1, cookies.length);
348 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookies[0].name);
349 }));
350 chrome.cookies.getAll({
351 secure: true
352 }, pass(function(cookies) {
353 chrome.test.assertEq(1, cookies.length);
354 chrome.test.assertEq(TEST_SECURE_COOKIE.name, cookies[0].name);
355 }));
356 chrome.cookies.getAll({
357 url: 'invalid url'
358 }, fail('Invalid url: "invalid url".'));
359 chrome.cookies.getAll({
360 url: TEST_URL,
361 }, pass(function(cookies) {
362 chrome.test.assertEq(1, cookies.length);
363 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookies[0].name);
364 }));
365 },
366 function getAllCookieStores() {
367 removeTestCookies();
368 chrome.cookies.getAllCookieStores(
369 pass(function(cookieStores) {
370 chrome.test.assertEq(1, cookieStores.length);
371 chrome.cookies.set(TEST_BASIC_COOKIE);
372 chrome.cookies.get(
373 {url: TEST_URL, name: TEST_BASIC_COOKIE.name},
374 pass(function(cookie) {
375 chrome.test.assertEq(cookieStores[0].id, cookie.storeId);
376 }));
377 chrome.cookies.getAll(
378 {storeId: cookieStores[0].id},
379 pass(function(cookies) {
380 chrome.test.assertEq(1, cookies.length);
381 chrome.test.assertEq(TEST_BASIC_COOKIE.name, cookies[0].name);
382 }));
383 }));
384 }
385 ]);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698