summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMarcel Hellkamp <marc@gsites.de>2018-10-25 19:35:10 +0200
committerMarcel Hellkamp <marc@gsites.de>2018-10-25 19:35:10 +0200
commit4dab7d81a7a843541088d397011ac2f132791ff7 (patch)
tree8fdff1f595c11590adb74505d1ceb76d04048312 /test
parent33d1b8359776a3777509bbcc4be0496c435c8e34 (diff)
downloadbottle-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-xtest/test_environ.py30
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()