|
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 |
|
@@ -2048,6 +2048,34 @@ def test_session_cookies(self): |
2048 | 2048 | # we didn't have session cookies in the first place |
2049 | 2049 | self.assertNotEqual(counter["session_before"], 0) |
2050 | 2050 |
|
| 2051 | + def test_load_session_cookies(self): |
| 2052 | + # curl and Wget write 0 in the expires field for session cookies, |
| 2053 | + # while we write an empty field. Both should be read (gh-61366). |
| 2054 | + filename = os_helper.TESTFN |
| 2055 | + self.addCleanup(os_helper.unlink, filename) |
| 2056 | + expires = int(time.time() + 3600) |
| 2057 | + with open(filename, "w") as f: |
| 2058 | + f.write(NETSCAPE_HEADER_TEXT) |
| 2059 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t%u\tperm\tbar\n" % expires) |
| 2060 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t0\tcurl_session\tbar\n") |
| 2061 | + f.write("www.foo.com\tFALSE\t/\tFALSE\t\tour_session\tbar\n") |
| 2062 | + |
| 2063 | + c = MozillaCookieJar() |
| 2064 | + c.revert(filename) |
| 2065 | + self.assertEqual([cookie.name for cookie in c], ["perm"]) |
| 2066 | + |
| 2067 | + c = MozillaCookieJar() |
| 2068 | + c.revert(filename, ignore_discard=True) |
| 2069 | + self.assertEqual(sorted(cookie.name for cookie in c), |
| 2070 | + ["curl_session", "our_session", "perm"]) |
| 2071 | + for cookie in c: |
| 2072 | + if cookie.name == "perm": |
| 2073 | + self.assertEqual(cookie.expires, expires) |
| 2074 | + self.assertFalse(cookie.discard) |
| 2075 | + else: |
| 2076 | + self.assertIsNone(cookie.expires) |
| 2077 | + self.assertTrue(cookie.discard) |
| 2078 | + |
2051 | 2079 |
|
2052 | 2080 | if __name__ == "__main__": |
2053 | 2081 | unittest.main() |
0 commit comments