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

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

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

Powered by Google App Engine
This is Rietveld 408576698