|
16 | 16 | CookieJar, DefaultCookiePolicy, LWPCookieJar, MozillaCookieJar, |
17 | 17 | LoadError, lwp_cookie_str, DEFAULT_HTTP_PORT, escape_path, |
18 | 18 | reach, is_HDN, domain_match, user_domain_match, request_path, |
19 | | - request_port, request_host) |
| 19 | + request_port, request_host, NETSCAPE_HEADER_TEXT) |
20 | 20 |
|
21 | 21 | mswindows = (sys.platform == "win32") |
22 | 22 |
|
@@ -2023,6 +2023,34 @@ def test_session_cookies(self): |
2023 | 2023 | # we didn't have session cookies in the first place |
2024 | 2024 | self.assertNotEqual(counter["session_before"], 0) |
2025 | 2025 |
|
| 2026 | + def test_load_session_cookies(self): |
| 2027 | + # curl and Wget write 0 in the expires field for session cookies, |
| 2028 | + # while we write an empty field. Both should be read (gh-61366). |
| 2029 | + filename = os_helper.TESTFN |
| 2030 | + self.addCleanup(os_helper.unlink, filename) |
| 2031 | + expires = int(time.time() + 3600) |
| 2032 | + with open(filename, "w") as f: |
| 2033 | + f.write(NETSCAPE_HEADER_TEXT) |
| 2034 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t%u\tperm\tbar\n" % expires) |
| 2035 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t0\tcurl_session\tbar\n") |
| 2036 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t\tour_session\tbar\n") |
| 2037 | + |
| 2038 | + c = MozillaCookieJar() |
| 2039 | + c.revert(filename) |
| 2040 | + self.assertEqual([cookie.name for cookie in c], ["perm"]) |
| 2041 | + |
| 2042 | + c = MozillaCookieJar() |
| 2043 | + c.revert(filename, ignore_discard=True) |
| 2044 | + self.assertEqual(sorted(cookie.name for cookie in c), |
| 2045 | + ["curl_session", "our_session", "perm"]) |
| 2046 | + for cookie in c: |
| 2047 | + if cookie.name == "perm": |
| 2048 | + self.assertEqual(cookie.expires, expires) |
| 2049 | + self.assertFalse(cookie.discard) |
| 2050 | + else: |
| 2051 | + self.assertIsNone(cookie.expires) |
| 2052 | + self.assertTrue(cookie.discard) |
| 2053 | + |
2026 | 2054 |
|
2027 | 2055 | if __name__ == "__main__": |
2028 | 2056 | unittest.main() |
0 commit comments