Update web-platform-tests to revision 2b7dace05fc1869398ee24f84fda4c0e4c0455ae

This commit is contained in:
WPT Sync Bot 2018-08-31 21:37:12 +00:00 committed by Tom Servo
parent b23125d590
commit 6c901de216
844 changed files with 19802 additions and 3093 deletions

View file

@ -9,8 +9,14 @@
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body>
<div id="log"></div>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });

View file

@ -0,0 +1,39 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests cookie charset functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "charset0001", name: "charset0001"},
{file: "charset0002", name: "charset0002"},
{file: "charset0003", name: "charset0003"},
{file: "charset0004", name: "charset0004"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,58 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests chromium cookie functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "chromium0001", name: "chromium0001"},
{file: "chromium0002", name: "chromium0002"},
{file: "chromium0003", name: "chromium0003"},
{file: "chromium0004", name: "chromium0004"},
{file: "chromium0005", name: "chromium0005"},
{file: "chromium0006", name: "chromium0006"},
{file: "chromium0007", name: "chromium0007"},
{file: "chromium0008", name: "chromium0008"},
{file: "chromium0009", name: "chromium0009"},
{file: "chromium0010", name: "chromium0010"},
{file: "chromium0011", name: "chromium0011"},
{file: "chromium0012", name: "chromium0012"},
{file: "chromium0013", name: "chromium0013"},
{file: "chromium0014", name: "chromium0014"},
{file: "chromium0015", name: "chromium0015"},
{file: "chromium0016", name: "chromium0016"},
{file: "chromium0017", name: "chromium0017"},
{file: "chromium0018", name: "chromium0018"},
{file: "chromium0019", name: "chromium0019"},
{file: "disabled-chromium0020", name: "disabled-chromium0020"},
{file: "chromium0021", name: "chromium0021"},
{file: "disabled-chromium0022", name: "disabled-chromium0022"},
{file: "disabled-chromium0023", name: "disabled-chromium0023"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,42 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests cookie setting comma functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "comma0001", name: "comma0001"},
{file: "comma0002", name: "comma0002"},
{file: "comma0003", name: "comma0003"},
{file: "comma0004", name: "comma0004"},
{file: "comma0005", name: "comma0005"},
{file: "comma0006", name: "comma0006"},
{file: "comma0007", name: "comma0007"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests cookie setting domain functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "domain0001", name: "domain0001"},
{file: "domain0002", name: "domain0002"},
{file: "domain0003", name: "domain0003"},
{file: "domain0004", name: "domain0004"},
{file: "domain0005", name: "domain0005"},
{file: "domain0006", name: "domain0006"},
{file: "domain0007", name: "domain0007"},
{file: "domain0008", name: "domain0008"},
{file: "domain0009", name: "domain0009"},
{file: "domain0010", name: "domain0010"},
{file: "domain0011", name: "domain0011"},
{file: "domain0012", name: "domain0012"},
{file: "domain0013", name: "domain0013"},
{file: "domain0014", name: "domain0014"},
{file: "domain0015", name: "domain0015"},
{file: "domain0016", name: "domain0016"},
{file: "domain0017", name: "domain0017"},
{file: "domain0018", name: "domain0018"},
{file: "domain0019", name: "domain0019"},
{file: "domain0020", name: "domain0020"},
{file: "domain0021", name: "domain0021"},
{file: "domain0022", name: "domain0022"},
{file: "domain0023", name: "domain0023"},
{file: "domain0024", name: "domain0024"},
{file: "domain0025", name: "domain0025"},
{file: "domain0026", name: "domain0026"},
{file: "domain0027", name: "domain0027"},
{file: "domain0028", name: "domain0028"},
{file: "domain0029", name: "domain0029"},
{file: "optional-domain0030", name: "optional-domain0030"},
{file: "domain0031", name: "domain0031"},
{file: "domain0033", name: "domain0033"},
{file: "domain0034", name: "domain0034"},
{file: "domain0035", name: "domain0035"},
{file: "domain0036", name: "domain0036"},
{file: "domain0037", name: "domain0037"},
{file: "domain0038", name: "domain0038"},
{file: "domain0039", name: "domain0039"},
{file: "domain0040", name: "domain0040"},
{file: "domain0041", name: "domain0041"},
{file: "domain0042", name: "domain0042"},
{file: "optional-domain0041", name: "optional-domain0041"},
{file: "optional-domain0042", name: "optional-domain0042"},
{file: "optional-domain0043", name: "optional-domain0043"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -9,8 +9,14 @@
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body>
<div id="log"></div>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });

View file

@ -0,0 +1,52 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests basic cookie setting functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "mozilla0001", name: "mozilla0001"},
{file: "mozilla0002", name: "mozilla0002"},
{file: "mozilla0003", name: "mozilla0003"},
{file: "mozilla0004", name: "mozilla0004"},
{file: "mozilla0005", name: "mozilla0005"},
{file: "mozilla0006", name: "mozilla0006"},
{file: "mozilla0007", name: "mozilla0007"},
{file: "mozilla0008", name: "mozilla0008"},
{file: "mozilla0009", name: "mozilla0009"},
{file: "mozilla0010", name: "mozilla0010"},
{file: "mozilla0011", name: "mozilla0011"},
{file: "mozilla0012", name: "mozilla0012"},
{file: "mozilla0013", name: "mozilla0013"},
{file: "mozilla0014", name: "mozilla0014"},
{file: "mozilla0015", name: "mozilla0015"},
{file: "mozilla0016", name: "mozilla0016"},
{file: "mozilla0017", name: "mozilla0017"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,68 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests basic cookie setting functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "name0001", name: "name0001"},
{file: "name0002", name: "name0002"},
{file: "name0003", name: "name0003"},
{file: "name0004", name: "name0004"},
{file: "name0005", name: "name0005"},
{file: "name0006", name: "name0006"},
{file: "name0007", name: "name0007"},
{file: "name0008", name: "name0008"},
{file: "name0009", name: "name0009"},
{file: "name0010", name: "name0010"},
{file: "name0011", name: "name0011"},
{file: "name0012", name: "name0012"},
{file: "name0013", name: "name0013"},
{file: "name0014", name: "name0014"},
{file: "name0015", name: "name0015"},
{file: "name0016", name: "name0016"},
{file: "name0017", name: "name0017"},
{file: "name0018", name: "name0018"},
{file: "name0019", name: "name0019"},
{file: "name0020", name: "name0020"},
{file: "name0021", name: "name0021"},
{file: "name0022", name: "name0022"},
{file: "name0023", name: "name0023"},
{file: "name0024", name: "name0024"},
{file: "name0025", name: "name0025"},
{file: "name0026", name: "name0026"},
{file: "name0027", name: "name0027"},
{file: "name0028", name: "name0028"},
{file: "name0029", name: "name0029"},
{file: "name0030", name: "name0030"},
{file: "name0031", name: "name0031"},
{file: "name0032", name: "name0032"},
{file: "name0033", name: "name0033"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,36 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests basic cookie setting functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "ordering0001", name: "ordering0001"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,68 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests basic cookie setting functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });
const TEST_CASES = [
{file: "path0001", name: "path0001"},
{file: "path0002", name: "path0002"},
{file: "path0003", name: "path0003"},
{file: "path0004", name: "path0004"},
{file: "path0005", name: "path0005"},
{file: "path0006", name: "path0006"},
{file: "path0007", name: "path0007"},
{file: "path0008", name: "path0008"},
{file: "path0009", name: "path0009"},
{file: "path0010", name: "path0010"},
{file: "path0011", name: "path0011"},
{file: "path0012", name: "path0012"},
{file: "path0013", name: "path0013"},
{file: "path0014", name: "path0014"},
{file: "path0015", name: "path0015"},
{file: "path0016", name: "path0016"},
{file: "path0017", name: "path0017"},
{file: "path0018", name: "path0018"},
{file: "path0019", name: "path0019"},
{file: "path0020", name: "path0020"},
{file: "path0021", name: "path0021"},
{file: "path0022", name: "path0022"},
{file: "path0023", name: "path0023"},
{file: "path0024", name: "path0024"},
{file: "path0025", name: "path0025"},
{file: "path0026", name: "path0026"},
{file: "path0027", name: "path0027"},
{file: "path0028", name: "path0028"},
{file: "disabled-path0029", name: "disabled-path0029"},
{file: "path0029", name: "path0029"},
{file: "path0030", name: "path0030"},
{file: "path0031", name: "path0031"},
{file: "path0032", name: "path0032"},
];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>Tests basic cookie setting functionality</title>
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="cookie-http-state-template.js"></script>
</head>
<body style="background:#EEE">
<h1>Cookie Tests</h1>
This page is a debug page for cookie tests. To run a test in isolation,
append "?debug=" and the test id to this URL. E.g. to debug "value0001", use
this url:<br>
<a href="cookie-setter.py?debug=value0001">
cookie-setter.py?debug=value0001
</a><br>
<br>
To request, append "?file=" and the file name (stripped of
"-tests.html"). For value0001, this would be:<br>
<a href="cookie-setter.py?file=value0001">
cookie-setter.py?file=value0001
</a><br>
<br>
Please note, the general tests are one level higher:<br>
<a href="../attribute-tests.html"> ../attribute-tests.html </a><br>
<a href="../charset-tests.html"> ../charset-tests.html </a><br>
<a href="../chromium-tests.html"> ../chromium-tests.html </a><br>
<a href="../comma-tests.html"> ../comma-tests.html </a><br>
<a href="../domain-tests.html"> ../domain-tests.html </a><br>
<a href="../general-tests.html"> ../general-tests.html </a><br>
<a href="../mozilla-tests.html"> ../mozilla-tests.html </a><br>
<a href="../name-tests.html"> ../name-tests.html </a><br>
<a href="../ordering-tests.html"> ../ordering-tests.html </a><br>
<a href="../path-tests.html"> ../path-tests.html </a><br>
<a href="../value-tests.html"> ../value-tests.html </a><br>
<h2>Current Cookies</h2>
These are all cookies, currently set by the browser for this domain: <br>
<span id="cookies">(None)</span>
<script type="text/javascript">
setInterval(() => {
document.getElementById("cookies").textContent =
document.cookie || "(None)";
}, 500);
</script>
<h2>All Tests</h2>
Below, all tests are running. The Log contains messages (e.g. when cookies
are left over) and the IFrames list preserves all requested files and shows
which cookies were expected to show. <br>
<h3>Log</h3>
<div id="log" style="height:50px; overflow-y:scroll; background: #FFF">
</div>
<h3>IFrames</h3>
<div id="iframes" style="height:170px; overflow-y:scroll; background: #FFF">
</div>
<h3>Test Results</h3>
<!-- No element should come after this - the test harness appends the result
here when it finished running all of them. -->
<script type="text/javascript">
setup({ explicit_timeout: true });
const TEST_CASES = [%s];
for (const i in TEST_CASES) {
const t = TEST_CASES[i];
promise_test(createCookieTest(t.file),
t.file + " - " + t.name,
{ timeout: 3000 });
}
</script>
</body>
</html>

View file

@ -1,16 +1,32 @@
const SERVER_LOCATION = "resources";
const SERVER_SCRIPT = SERVER_LOCATION + "/cookie-setter.py";
/* Adds a div with "<time> [<tag>] - <message>" to the "#log" container.*/
function log(message, tag) {
let log_str = document.createElement('div');
log_str.textContent = new Date().toTimeString().replace(/\s.+$/, '');
if (tag) {
log_str.textContent += " [" + tag + "] ";
}
log_str.textContent += " - " + message;
let log_container = document.getElementById("log");
log_container.appendChild(log_str);
log_container.scrollTo(0, log_container.scrollHeight);
}
/* Removes the "Cookie: " prefix and strip any leading or trailing whitespace.*/
function stripPrefixAndWhitespace(cookie_text) {
return cookie_text.replace(/^Cookie: /, '').replace(/^\s+|\s+$/g, '');
}
/* Returns the absolute path of the resource folder, ignoring any navigation. */
function getLocalResourcesPath() {
let replace = "(" + SERVER_LOCATION + "\/)*"; // Redundant location.
replace += "[^\/]*$"; // Everything after the last "/".
return location.pathname.replace(new RegExp(replace), "") + SERVER_LOCATION;
}
/* Returns the absolute server location ignoring any navgation.*/
function getAbsoluteServerLocation() {
// Replace the server location and everything coming after it ...
let replace = SERVER_LOCATION + ".*$";
@ -18,6 +34,7 @@ function getAbsoluteServerLocation() {
return getLocalResourcesPath().replace(new RegExp(replace),'')+ SERVER_SCRIPT;
}
/* Expires a cookie by name by setting it's expiry date into the past.*/
function expireCookie(name, expiry_date, path) {
name = name || "";
expiry_date = expiry_date || "Thu, 01 Jan 1970 00:00:00 UTC";
@ -25,10 +42,16 @@ function expireCookie(name, expiry_date, path) {
document.cookie = name + "=; expires=" + expiry_date + "; path=" + path + ";";
}
/* Captures a snapshot of cookies with |parse| and allows to diff it with a
second snapshot with |diffWith|. This allows to run tests even if cookies were
previously set that would mess with the expected final set of Cookies.
With |resetCookies|, all cookies set between first and second snapshot are
expired. */
function CookieManager() {
this.initial_cookies = [];
}
/* Creates a snapshot of the current given document cookies.*/
CookieManager.prototype.parse = document_cookies => {
this.initial_cookies = [];
document_cookies = document_cookies.replace(/^Cookie: /, '');
@ -37,22 +60,25 @@ CookieManager.prototype.parse = document_cookies => {
}
}
/* Creates a diff of newly added cookies between the initial snapshot and the
newly given cookies. The diff is stored for cleaning purposes. A second call
will replace the the stored diff entirely.*/
CookieManager.prototype.diffWith = document_cookies => {
this.actual_cookies = document_cookies;
for (let i in initial_cookies) {
let no_spaces_cookie_regex =
new RegExp(/\s*[\;]*\s/.source + initial_cookies[i]);
this.actual_cookies = actual_cookies.replace(no_spaces_cookie_regex, '');
new RegExp(/\s*[\;]*\s/.source + initial_cookies[i].replace(/\\/, "\\\\"));
this.actual_cookies = this.actual_cookies.replace(no_spaces_cookie_regex, '');
}
return this.actual_cookies;
}
/* Cleans cookies between the first and the second snapshot.
Some tests might set cookies to the root path or cookies without key. Both cases
are dropped here.*/
CookieManager.prototype.resetCookies = () => {
expireCookie(/*name=*/""); // If a cookie without keys was accepted, drop it.
if (this.actual_cookies == "") {
return; // There is nothing to reset here.
}
let cookies_to_delete = this.actual_cookies.split(/\s*;\s*/)
// If a cookie without keys was accepted, drop it additionally.
let cookies_to_delete = [""].concat(this.actual_cookies.split(/\s*;\s*/))
for (let i in cookies_to_delete){
expireCookie(cookies_to_delete[i].replace(/=.*$/, ""));
// Drop cookies with same name that were set to the root path which happens
@ -63,14 +89,27 @@ CookieManager.prototype.resetCookies = () => {
}
}
/* Returns a new cookie test.
The test creates an iframe where a |file| from the cookie-setter.py is loaded.
This sets cookies which are diffed with an initial cookie snapshot and compared
to the expectation that the server returned.
Finally, it cleans up newly set cookies and all cookies in the root path or
without key. */
function createCookieTest(file) {
return t => {
let iframe_container = document.getElementById("iframes");
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe_container.appendChild(iframe);
iframe_container.scrollTo(0, iframe_container.scrollHeight);
let diff_tool = new CookieManager();
t.add_cleanup(diff_tool.resetCookies);
return new Promise((resolve, reject) => {
diff_tool.parse(document.cookie);
if (diff_tool.initial_cookies.length > 0) {
// The cookies should ideally be empty. If that isn't the case, log it.
//Cookies with equal keys (e.g. foo=) may have unwanted side-effects.
log("Run with existing cookies: " + diff_tool.initial_cookies, file);
}
window.addEventListener("message", t.step_func(e => {
assert_true(!!e.data, "Message contains data")
resolve(e.data);

View file

@ -1,5 +1,17 @@
from os import path;
from os import path
from os import listdir
"""
The main purpose of this script is to set cookies based on files in this folder:
cookies/http-state/resources
If a wpt server is running, navigate to
http://<server>/cookies/http-state/resources/cookie-setter.py
which will run all cookie tests and explain the usage of this script in detail.
If you want to run a test in isolation, append "?debug=" and the test id to the
URL above.
"""
SETUP_FILE_TEMPLATE = "{}-test"
EXPECTATION_FILE_TEMPLATE = "{}-expected"
@ -7,13 +19,18 @@ EXPECTATION_HTML_SCAFFOLD = "iframe-expectation-doc.html.py-str"
DEBUGGING_HTML_SCAFFOLD = "debugging-single-test.html.py-str"
DEFAULT_RESOURCE_DIR = path.join("cookies", "http-state", "resources")
DEFAULT_TEST_DIR = "test-files"
ALL_TESTS = "all-tests.html.py-str"
def dump_file(directory, filename):
"""Reads a file into a string."""
return open(path.join(directory, filename), "r").read()
class CookieTestResponse(object):
"""Loads the Set-Cookie header from a given file name. Relies on the naming
convention that ever test file is called '<test_id>-test' and every
expectation is called '<test_id>-expected'."""
def __init__(self, file, root):
super(CookieTestResponse, self).__init__()
self.__test_file = SETUP_FILE_TEMPLATE.format(file)
@ -22,16 +39,36 @@ class CookieTestResponse(object):
self.__test_files_dir = path.join(self.__resources_dir, DEFAULT_TEST_DIR)
def cookie_setting_header(self):
"""Returns the loaded header."""
return dump_file(self.__test_files_dir, self.__test_file)
def body_with_expectation(self):
"""Returns a full HTML document which contains the expectation."""
html_frame = dump_file(self.__resources_dir, EXPECTATION_HTML_SCAFFOLD)
expected_data = dump_file(self.__test_files_dir, self.__expectation_file);
expected_data = dump_file(self.__test_files_dir, self.__expectation_file)
return html_frame.format(**{'data' : expected_data})
def find_all_test_files(root):
"""Retrieves all files from the test-files/ folder and returns them as
string pair as used in the JavaScript object. Sorted by filename."""
all_files = []
line_template = '{{file: "{filename}", name: "{filename}"}},'
for file in listdir(path.join(root, DEFAULT_RESOURCE_DIR, DEFAULT_TEST_DIR)):
if file.endswith('-test'):
name = file.replace('-test', '')
all_files.append(line_template.format(**{'filename' : name}))
all_files.sort()
return all_files
def generate_for_all_tests(root):
"""Returns an HTML document which loads and executes all tests in the
test-files/ directory."""
html_frame = dump_file(path.join(root, DEFAULT_RESOURCE_DIR), ALL_TESTS)
return html_frame % '\n'.join(find_all_test_files(root))
def main(request, response):
if "debug" in request.GET:
"""If '?debug=' is set, return the document for a single test."""
response.writer.write_status(200)
response.writer.end_headers()
html_frame = dump_file(path.join(request.doc_root, DEFAULT_RESOURCE_DIR),
@ -40,15 +77,18 @@ def main(request, response):
response.writer.write_content(test_file)
return;
if not "file" in request.GET:
response.writer.write_status(404)
if "file" in request.GET:
"""If '?file=' is set, send a cookie and a document which contains the
expectation of which cookies should be set by the browser in response."""
cookie_response = CookieTestResponse(request.GET['file'], request.doc_root)
response.writer.write_status(200)
response.writer.write(cookie_response.cookie_setting_header())
response.writer.end_headers()
response.writer.write_content("The 'file' parameter is missing!")
response.writer.write_content(cookie_response.body_with_expectation())
return;
cookie_response = CookieTestResponse(request.GET['file'], request.doc_root)
"""Without any arguments, return documentation and run all available tests."""
response.writer.write_status(200)
response.writer.write(cookie_response.cookie_setting_header())
response.writer.end_headers()
response.writer.write_content(cookie_response.body_with_expectation())
response.writer.write_content(generate_for_all_tests(request.doc_root))

View file

@ -8,9 +8,19 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="cookie-http-state-template.js"></script>
<style type="text/css">
.scrollable {
height:150px;
overflow-y:scroll;
}
</style>
</head>
<body>
<div id="log"></div>
<h3>Log</h3>
<div id="log" class="scrollable"></div>
<h3>IFrame</h3>
<div id="iframes" class="toggleable scrollable"></div>
<h3>Test Results</h3>
<script>
setup({ explicit_timeout: true });

View file

@ -0,0 +1 @@
Cookie: foo=春节回家路·春运完全手册

View file

@ -0,0 +1 @@
Set-Cookie: foo=春节回家路·春运完全手册

View file

@ -0,0 +1 @@
Cookie: 春节回=家路·春运完全手册

View file

@ -0,0 +1 @@
Set-Cookie: 春节回=家路·春运完全手册

View file

@ -0,0 +1 @@
Cookie: 春节回=家路·春运

View file

@ -0,0 +1 @@
Set-Cookie: 春节回=家路·春运; 完全手册

View file

@ -0,0 +1 @@
Cookie: foo="春节回家路·春运完全手册"

View file

@ -0,0 +1 @@
Set-Cookie: foo="春节回家路·春运完全手册"

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zzz " ;

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zzz " ;

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zz;pp" ; ;

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zz ;

View file

@ -0,0 +1 @@
Cookie: aBc="zzz " "ppp"

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zzz " "ppp" ;

View file

@ -0,0 +1 @@
Cookie: aBc="zzz " "ppp"

View file

@ -0,0 +1 @@
Set-Cookie: aBc="zzz " "ppp" ;

View file

@ -0,0 +1 @@
Set-Cookie: aBc=A"B ;

View file

@ -0,0 +1 @@
Set-Cookie: BLAHHH; path=/;

View file

@ -0,0 +1 @@
Set-Cookie: "BLA\"HHH"; path=/;

View file

@ -0,0 +1 @@
Set-Cookie: ABC=; path = /

View file

@ -0,0 +1 @@
Set-Cookie: A = BC ;foo;;; bar

View file

@ -0,0 +1 @@
Set-Cookie: A=== BC ;foo;;; bar

View file

@ -0,0 +1 @@
Cookie: foo="zohNumRKgI0oxyhSsV3Z7D"

View file

@ -0,0 +1 @@
Set-Cookie: foo="zohNumRKgI0oxyhSsV3Z7D" ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ;

View file

@ -0,0 +1 @@
Cookie: foo=zohNumRKgI0oxyhSsV3Z7D

View file

@ -0,0 +1 @@
Set-Cookie: foo=zohNumRKgI0oxyhSsV3Z7D ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ;

View file

@ -0,0 +1 @@
Cookie: a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View file

@ -0,0 +1 @@
Set-Cookie: a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View file

@ -0,0 +1 @@
Cookie: foo=bar, baz=qux

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar, baz=qux

View file

@ -0,0 +1 @@
Cookie: foo="bar, baz=qux"

View file

@ -0,0 +1 @@
Set-Cookie: foo="bar, baz=qux"

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar; b,az=qux

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar; baz=q,ux

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar; Max-Age=50,399

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar; Expires=Fri, 07 Aug 2019 08:04:19 GMT

View file

@ -0,0 +1 @@
Set-Cookie: foo=bar; Expires=Fri 07 Aug 2019 08:04:19 GMT, baz=qux

View file

@ -0,0 +1 @@
Set-Cookie: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; path=/cookie-parser-result/foo/bar
Location: /cookie-parser-result/f%6Fo/bar?disabled-path0029

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=home.example.org
Location: http://home.example.org:8888/cookie-parser-result?domain0001

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=home.example.org
Location: http://sibling.example.org:8888/cookie-parser-result?domain0002

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=.home.example.org
Location: http://home.example.org:8888/cookie-parser-result?domain0003

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=home.example.org
Location: http://subdomain.home.example.org:8888/cookie-parser-result?domain0004

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=.home.example.org
Location: http://subdomain.home.example.org:8888/cookie-parser-result?domain0005

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=.home.example.org
Location: http://sibling.example.org:8888/cookie-parser-result?domain0006

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=sibling.example.org
Location: http://sibling.example.org:8888/cookie-parser-result?domain0007

View file

@ -0,0 +1,2 @@
Set-Cookie: foo=bar; domain=.example.org
Location: http://home.example.org:8888/cookie-parser-result?domain0008

Some files were not shown because too many files have changed in this diff Show more