|
17 | 17 | CookieJar, DefaultCookiePolicy, LWPCookieJar, MozillaCookieJar, |
18 | 18 | LoadError, lwp_cookie_str, DEFAULT_HTTP_PORT, escape_path, |
19 | 19 | reach, is_HDN, domain_match, user_domain_match, request_path, |
20 | | - request_port, request_host) |
| 20 | + request_port, request_host, NETSCAPE_HEADER_TEXT) |
21 | 21 |
|
22 | 22 | mswindows = (sys.platform == "win32") |
23 | 23 |
|
@@ -2041,6 +2041,34 @@ def test_session_cookies(self): |
2041 | 2041 | # we didn't have session cookies in the first place |
2042 | 2042 | self.assertNotEqual(counter["session_before"], 0) |
2043 | 2043 |
|
| 2044 | + def test_load_session_cookies(self): |
| 2045 | + # curl and Wget write 0 in the expires field for session cookies, |
| 2046 | + # while we write an empty field. Both should be read (gh-61366). |
| 2047 | + filename = os_helper.TESTFN |
| 2048 | + self.addCleanup(os_helper.unlink, filename) |
| 2049 | + expires = int(time.time() + 3600) |
| 2050 | + with open(filename, "w") as f: |
| 2051 | + f.write(NETSCAPE_HEADER_TEXT) |
| 2052 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t%u\tperm\tbar\n" % expires) |
| 2053 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t0\tcurl_session\tbar\n") |
| 2054 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t\tour_session\tbar\n") |
| 2055 | + |
| 2056 | + c = MozillaCookieJar() |
| 2057 | + c.revert(filename) |
| 2058 | + self.assertEqual([cookie.name for cookie in c], ["perm"]) |
| 2059 | + |
| 2060 | + c = MozillaCookieJar() |
| 2061 | + c.revert(filename, ignore_discard=True) |
| 2062 | + self.assertEqual(sorted(cookie.name for cookie in c), |
| 2063 | + ["curl_session", "our_session", "perm"]) |
| 2064 | + for cookie in c: |
| 2065 | + if cookie.name == "perm": |
| 2066 | + self.assertEqual(cookie.expires, expires) |
| 2067 | + self.assertFalse(cookie.discard) |
| 2068 | + else: |
| 2069 | + self.assertIsNone(cookie.expires) |
| 2070 | + self.assertTrue(cookie.discard) |
| 2071 | + |
2044 | 2072 |
|
2045 | 2073 | if __name__ == "__main__": |
2046 | 2074 | unittest.main() |
0 commit comments