| 'use strict'; |
| |
| cookie_test(async t => { |
| let eventPromise = observeNextCookieChangeEvent(); |
| await setCookieStringHttp('HTTP-cookie=value; path=/'); |
| assert_equals( |
| await getCookieString(), |
| 'HTTP-cookie=value', |
| 'Cookie we wrote using HTTP in cookie jar'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'HTTP-cookie=value', |
| 'Cookie we wrote using HTTP in HTTP cookie jar'); |
| await verifyCookieChangeEvent( |
| eventPromise, {changed: [{name: 'HTTP-cookie', value: 'value'}]}, |
| 'Cookie we wrote using HTTP is observed'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await setCookieStringHttp('HTTP-cookie=new-value; path=/'); |
| assert_equals( |
| await getCookieString(), |
| 'HTTP-cookie=new-value', |
| 'Cookie we overwrote using HTTP in cookie jar'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'HTTP-cookie=new-value', |
| 'Cookie we overwrote using HTTP in HTTP cookie jar'); |
| await verifyCookieChangeEvent( |
| eventPromise, {changed: [{name: 'HTTP-cookie', value: 'new-value'}]}, |
| 'Cookie we overwrote using HTTP is observed'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await setCookieStringHttp('HTTP-cookie=DELETED; path=/; max-age=0'); |
| assert_equals( |
| await getCookieString(), |
| undefined, |
| 'Empty cookie jar after HTTP cookie-clearing using max-age=0'); |
| assert_equals( |
| await getCookieStringHttp(), |
| undefined, |
| 'Empty HTTP cookie jar after HTTP cookie-clearing using max-age=0'); |
| await verifyCookieChangeEvent( |
| eventPromise, {deleted: [{name: 'HTTP-cookie'}]}, |
| 'Deletion observed after HTTP cookie-clearing using max-age=0'); |
| }, 'HTTP set/overwrite/delete observed in CookieStore'); |
| |
| |
| cookie_test(async t => { |
| let eventPromise = observeNextCookieChangeEvent(); |
| await setCookieStringHttp('HTTP-🍪=🔵; path=/'); |
| assert_equals( |
| await getCookieString(), |
| 'HTTP-🍪=🔵', |
| 'Cookie we wrote using HTTP in cookie jar'); |
| await verifyCookieChangeEvent( |
| eventPromise, {changed: [{name: 'HTTP-🍪', value: '🔵'}]}, |
| 'Cookie we wrote using HTTP is observed'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await setCookieStringHttp('HTTP-🍪=DELETED; path=/; max-age=0'); |
| assert_equals( |
| await getCookieString(), |
| undefined, |
| 'Empty cookie jar after HTTP cookie-clearing using max-age=0'); |
| await verifyCookieChangeEvent( |
| eventPromise, {deleted: [{name: 'HTTP-🍪'}]}, |
| 'Deletion observed after HTTP cookie-clearing using max-age=0'); |
| |
| }, 'CookieStore agreed with HTTP headers agree on encoding non-ASCII cookies'); |
| |
| |
| cookie_test(async t => { |
| let eventPromise = observeNextCookieChangeEvent(); |
| await cookieStore.set('TEST', 'value0'); |
| assert_equals( |
| await getCookieString(), |
| 'TEST=value0', |
| 'Cookie jar contains only cookie we set'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'TEST=value0', |
| 'HTTP cookie jar contains only cookie we set'); |
| await verifyCookieChangeEvent( |
| eventPromise, |
| {changed: [{name: 'TEST', value: 'value0'}]}, |
| 'Observed value that was set'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await cookieStore.set('TEST', 'value'); |
| assert_equals( |
| await getCookieString(), |
| 'TEST=value', |
| 'Cookie jar contains only cookie we set'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'TEST=value', |
| 'HTTP cookie jar contains only cookie we set'); |
| await verifyCookieChangeEvent( |
| eventPromise, |
| {changed: [{name: 'TEST', value: 'value'}]}, |
| 'Observed value that was overwritten'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await cookieStore.delete('TEST'); |
| assert_equals( |
| await getCookieString(), |
| undefined, |
| 'Cookie jar does not contain cookie we deleted'); |
| assert_equals( |
| await getCookieStringHttp(), |
| undefined, |
| 'HTTP cookie jar does not contain cookie we deleted'); |
| await verifyCookieChangeEvent( |
| eventPromise, |
| {deleted: [{name: 'TEST'}]}, |
| 'Observed cookie that was deleted'); |
| }, 'CookieStore set/overwrite/delete observed in HTTP headers'); |
| |
| |
| cookie_test(async t => { |
| await cookieStore.set('🍪', '🔵'); |
| assert_equals( |
| await getCookieStringHttp(), |
| '🍪=🔵', |
| 'HTTP cookie jar contains only cookie we set'); |
| |
| await cookieStore.delete('🍪'); |
| assert_equals( |
| await getCookieStringHttp(), |
| undefined, |
| 'HTTP cookie jar does not contain cookie we deleted'); |
| }, 'HTTP headers agreed with CookieStore on encoding non-ASCII cookies'); |
| |
| |
| cookie_test(async t => { |
| // Non-UTF-8 byte sequences cause the Set-Cookie to be dropped. |
| let eventPromise = observeNextCookieChangeEvent(); |
| await setCookieBinaryHttp( |
| unescape(encodeURIComponent('HTTP-cookie=value')) + '\xef\xbf\xbd; path=/'); |
| assert_equals( |
| await getCookieString(), |
| 'HTTP-cookie=value\ufffd', |
| 'Binary cookie we wrote using HTTP in cookie jar'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'HTTP-cookie=value\ufffd', |
| 'Binary cookie we wrote using HTTP in HTTP cookie jar'); |
| assert_equals( |
| decodeURIComponent(escape(await getCookieBinaryHttp())), |
| 'HTTP-cookie=value\ufffd', |
| 'Binary cookie we wrote in binary HTTP cookie jar'); |
| assert_equals( |
| await getCookieBinaryHttp(), |
| unescape(encodeURIComponent('HTTP-cookie=value')) + '\xef\xbf\xbd', |
| 'Binary cookie we wrote in binary HTTP cookie jar'); |
| await verifyCookieChangeEvent( |
| eventPromise, {changed: [{name: 'HTTP-cookie', value: 'value\ufffd'}]}, |
| 'Binary cookie we wrote using HTTP is observed'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await setCookieBinaryHttp( |
| unescape(encodeURIComponent('HTTP-cookie=new-value')) + '\xef\xbf\xbd; path=/'); |
| assert_equals( |
| await getCookieString(), |
| 'HTTP-cookie=new-value\ufffd', |
| 'Binary cookie we overwrote using HTTP in cookie jar'); |
| assert_equals( |
| await getCookieStringHttp(), |
| 'HTTP-cookie=new-value\ufffd', |
| 'Binary cookie we overwrote using HTTP in HTTP cookie jar'); |
| assert_equals( |
| decodeURIComponent(escape(await getCookieBinaryHttp())), |
| 'HTTP-cookie=new-value\ufffd', |
| 'Binary cookie we overwrote in binary HTTP cookie jar'); |
| assert_equals( |
| await getCookieBinaryHttp(), |
| unescape(encodeURIComponent('HTTP-cookie=new-value')) + '\xef\xbf\xbd', |
| 'Binary cookie we overwrote in binary HTTP cookie jar'); |
| await verifyCookieChangeEvent( |
| eventPromise, {changed: [{name: 'HTTP-cookie', value: 'new-value\ufffd'}]}, |
| 'Binary cookie we overwrote using HTTP is observed'); |
| |
| eventPromise = observeNextCookieChangeEvent(); |
| await setCookieBinaryHttp( |
| unescape(encodeURIComponent('HTTP-cookie=DELETED; path=/; max-age=0'))); |
| assert_equals( |
| await getCookieString(), |
| undefined, |
| 'Empty cookie jar after binary HTTP cookie-clearing using max-age=0'); |
| assert_equals( |
| await getCookieStringHttp(), |
| undefined, |
| 'Empty HTTP cookie jar after' + |
| ' binary HTTP cookie-clearing using max-age=0'); |
| assert_equals( |
| await getCookieBinaryHttp(), |
| undefined, |
| 'Empty binary HTTP cookie jar after' + |
| ' binary HTTP cookie-clearing using max-age=0'); |
| await verifyCookieChangeEvent( |
| eventPromise, {deleted: [{name: 'HTTP-cookie'}]}, |
| 'Deletion observed after binary HTTP cookie-clearing using max-age=0'); |
| }, 'Binary HTTP set/overwrite/delete observed in CookieStore'); |