diff options
author | Marcel Hellkamp <marc@gsites.de> | 2018-10-25 19:35:10 +0200 |
---|---|---|
committer | Marcel Hellkamp <marc@gsites.de> | 2018-10-25 19:35:10 +0200 |
commit | 4dab7d81a7a843541088d397011ac2f132791ff7 (patch) | |
tree | 8fdff1f595c11590adb74505d1ceb76d04048312 /test | |
parent | 33d1b8359776a3777509bbcc4be0496c435c8e34 (diff) | |
download | bottle-4dab7d81a7a843541088d397011ac2f132791ff7.tar.gz |
fix #1106: SameSite cookie attribute fails when using redirect
- Accept `BaseRequest.set_cookie()` arguments in snake_case and lowercase form. This affects the `max_age` and `same_site` arguments.
- Skip render/parse step when cloning SimpleCookie.
Diffstat (limited to 'test')
-rwxr-xr-x | test/test_environ.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/test/test_environ.py b/test/test_environ.py index d3bebde..bd6d3b1 100755 --- a/test/test_environ.py +++ b/test/test_environ.py @@ -7,7 +7,7 @@ import sys import itertools import bottle -from bottle import request, tob, touni, tonat, json_dumps, HTTPError, parse_date +from bottle import request, tob, touni, tonat, json_dumps, HTTPError, parse_date, CookieError from . import tools import wsgiref.util import base64 @@ -645,8 +645,32 @@ class TestResponse(unittest.TestCase): r.set_cookie('name2', 'value', httponly=False) cookies = sorted([value for name, value in r.headerlist if name.title() == 'Set-Cookie']) - self.assertEqual(cookies[0].lower(), 'name1=value; httponly') - self.assertEqual(cookies[1], 'name2=value') + self.assertEqual('name1=value; httponly', cookies[0].lower()) + self.assertEqual('name2=value', cookies[1]) + + def test_set_cookie_samesite(self): + r = BaseResponse() + r.set_cookie('name1', 'value', same_site="lax") + r.set_cookie('name2', 'value', same_site="strict") + + try: + r.set_cookie('name3', 'value', same_site='invalid') + self.fail("Should raise CookieError") + except CookieError: + pass + + cookies = sorted([value for name, value in r.headerlist + if name.title() == 'Set-Cookie']) + self.assertEqual('name1=value; samesite=lax', cookies[0].lower()) + self.assertEqual('name2=value; samesite=strict', cookies[1].lower()) + + def test_clone_cookie(self): + r = BaseResponse() + r.set_cookie('name1', 'value', same_site="strict") + r2 = r.copy(BaseResponse) + cookies = sorted([value for name, value in r2.headerlist + if name.title() == 'Set-Cookie']) + self.assertEqual('name1=value; samesite=strict', cookies[0].lower()) def test_delete_cookie(self): response = BaseResponse() |