mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
bpo-35647: Fix path check in cookiejar (#11436)
* Refactor cookie path check as per RFC 6265 * Add tests for prefix match of path * Add news entry * Fix set_ok_path and refactor tests * Use slice for last letter
This commit is contained in:
parent
1aeeaeb79e
commit
0e1f1f0105
3 changed files with 36 additions and 5 deletions
|
@ -720,6 +720,30 @@ class CookieTests(unittest.TestCase):
|
|||
req = urllib.request.Request("http://www.example.com")
|
||||
self.assertEqual(request_path(req), "/")
|
||||
|
||||
def test_path_prefix_match(self):
|
||||
pol = DefaultCookiePolicy()
|
||||
strict_ns_path_pol = DefaultCookiePolicy(strict_ns_set_path=True)
|
||||
|
||||
c = CookieJar(pol)
|
||||
base_url = "http://bar.com"
|
||||
interact_netscape(c, base_url, 'spam=eggs; Path=/foo')
|
||||
cookie = c._cookies['bar.com']['/foo']['spam']
|
||||
|
||||
for path, ok in [('/foo', True),
|
||||
('/foo/', True),
|
||||
('/foo/bar', True),
|
||||
('/', False),
|
||||
('/foobad/foo', False)]:
|
||||
url = f'{base_url}{path}'
|
||||
req = urllib.request.Request(url)
|
||||
h = interact_netscape(c, url)
|
||||
if ok:
|
||||
self.assertIn('spam=eggs', h, f"cookie not set for {path}")
|
||||
self.assertTrue(strict_ns_path_pol.set_ok_path(cookie, req))
|
||||
else:
|
||||
self.assertNotIn('spam=eggs', h, f"cookie set for {path}")
|
||||
self.assertFalse(strict_ns_path_pol.set_ok_path(cookie, req))
|
||||
|
||||
def test_request_port(self):
|
||||
req = urllib.request.Request("http://www.acme.com:1234/",
|
||||
headers={"Host": "www.acme.com:4321"})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue