mirror of https://github.com/scrapy/scrapy.git
Cookies: Cast primitive types to str (#5253)
* cast primitive types to str * add tests
This commit is contained in:
parent
214525c2c1
commit
6c858cec91
|
|
@ -80,8 +80,8 @@ class CookiesMiddleware:
|
|||
logger.warning(msg.format(request, cookie, key))
|
||||
return
|
||||
continue
|
||||
if isinstance(cookie[key], str):
|
||||
decoded[key] = cookie[key]
|
||||
if isinstance(cookie[key], (bool, float, int, str)):
|
||||
decoded[key] = str(cookie[key])
|
||||
else:
|
||||
try:
|
||||
decoded[key] = cookie[key].decode("utf8")
|
||||
|
|
|
|||
|
|
@ -347,3 +347,24 @@ class CookiesMiddlewareTest(TestCase):
|
|||
self.assertCookieValEqual(req1.headers['Cookie'], 'key=value1')
|
||||
self.assertCookieValEqual(req2.headers['Cookie'], 'key=value2')
|
||||
self.assertCookieValEqual(req3.headers['Cookie'], 'key=')
|
||||
|
||||
def test_primitive_type_cookies(self):
|
||||
# Boolean
|
||||
req1 = Request('http://example.org', cookies={'a': True})
|
||||
assert self.mw.process_request(req1, self.spider) is None
|
||||
self.assertCookieValEqual(req1.headers['Cookie'], b'a=True')
|
||||
|
||||
# Float
|
||||
req2 = Request('http://example.org', cookies={'a': 9.5})
|
||||
assert self.mw.process_request(req2, self.spider) is None
|
||||
self.assertCookieValEqual(req2.headers['Cookie'], b'a=9.5')
|
||||
|
||||
# Integer
|
||||
req3 = Request('http://example.org', cookies={'a': 10})
|
||||
assert self.mw.process_request(req3, self.spider) is None
|
||||
self.assertCookieValEqual(req3.headers['Cookie'], b'a=10')
|
||||
|
||||
# String
|
||||
req4 = Request('http://example.org', cookies={'a': 'b'})
|
||||
assert self.mw.process_request(req4, self.spider) is None
|
||||
self.assertCookieValEqual(req4.headers['Cookie'], b'a=b')
|
||||
|
|
|
|||
Loading…
Reference in New Issue