forked from extern/httpie-cli
Fix handling of session files with Cookie:
followed by other headers (#1127)
* Fix the handling of cookies from session files * Apply suggestions from code review Co-authored-by: Jakub Roztocil <jakub@roztocil.co> * Fix test docstring formatting Co-authored-by: Jakub Roztocil <jakub@roztocil.co>
This commit is contained in:
parent
54c8612452
commit
d7caeaf372
@ -13,6 +13,7 @@ This project adheres to `Semantic Versioning <https://semver.org/>`_.
|
|||||||
an alternative to ``stdin``. (`#534`_)
|
an alternative to ``stdin``. (`#534`_)
|
||||||
* Fixed ``--continue --download`` with a single byte to be downloaded left. (`#1032`_)
|
* Fixed ``--continue --download`` with a single byte to be downloaded left. (`#1032`_)
|
||||||
* Fixed ``--verbose`` HTTP 307 redirects with streamed request body. (`#1088`_)
|
* Fixed ``--verbose`` HTTP 307 redirects with streamed request body. (`#1088`_)
|
||||||
|
* Fixed handling of session files with `Cookie:` followed by other headers. (`#1126`_)
|
||||||
* Add internal support for file-like object responses to improve adapter plugin support. (`#1094`_)
|
* Add internal support for file-like object responses to improve adapter plugin support. (`#1094`_)
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ class Session(BaseConfigDict):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
headers = self.headers
|
headers = self.headers
|
||||||
for name, value in request_headers.items():
|
for name, value in request_headers.copy().items():
|
||||||
|
|
||||||
if value is None:
|
if value is None:
|
||||||
continue # Ignore explicitly unset headers
|
continue # Ignore explicitly unset headers
|
||||||
|
@ -178,6 +178,24 @@ class TestSession(SessionTestBase):
|
|||||||
assert HTTP_OK in r2
|
assert HTTP_OK in r2
|
||||||
assert r2.json['headers']['Foo'] == 'Bar'
|
assert r2.json['headers']['Foo'] == 'Bar'
|
||||||
|
|
||||||
|
def test_session_with_cookie_followed_by_another_header(self, httpbin):
|
||||||
|
"""
|
||||||
|
Make sure headers don’t get mutated — <https://github.com/httpie/httpie/issues/1126>
|
||||||
|
"""
|
||||||
|
self.start_session(httpbin)
|
||||||
|
session_data = {
|
||||||
|
"headers": {
|
||||||
|
"cookie": "...",
|
||||||
|
"zzz": "..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
session_path = self.config_dir / 'session-data.json'
|
||||||
|
session_path.write_text(json.dumps(session_data))
|
||||||
|
r = http('--session', str(session_path), 'GET', httpbin.url + '/get',
|
||||||
|
env=self.env())
|
||||||
|
assert HTTP_OK in r
|
||||||
|
assert 'Zzz' in r
|
||||||
|
|
||||||
def test_session_unicode(self, httpbin):
|
def test_session_unicode(self, httpbin):
|
||||||
self.start_session(httpbin)
|
self.start_session(httpbin)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user