RestRequestException when using custom headers
methsib opened this issue · 3 comments
methsib commented
Our tests started failing today with following exception and further investigations found that latest version of requests
is causing the issue.
requests.exceptions.InvalidHeader: Header part ('application/x-www-form-urlencoded') from {'content-type': 'application/x-www-form-urlencoded'} must be of type str or bytes, not <class 'tavern.util.formatted_str.FormattedString'>
Steps to reproduce
---
test_name: Test
stages:
- name: Test requests issue
request:
url: "http://www.example.com/get_info"
method: GET
headers:
content-type: application/x-www-form-urlencoded
Error message
Errors:
E tavern.util.exceptions.RestRequestException
---------------------------------------------------------------------------------------------------------------------------------------- Captured log call -----------------------------------------------------------------------------------------------------------------------------------------
ERROR tavern._plugins.rest.request:request.py:552 Error running prepared request
Traceback (most recent call last):
File "C:\myenv\lib\site-packages\tavern\_plugins\rest\request.py", line 550, in run
return self._prepared()
File "C:\myenv\lib\site-packages\tavern\_plugins\rest\request.py", line 530, in prepared_request
return session.request(**self._request_args)
File "C:\myenv\lib\site-packages\requests\sessions.py", line 573, in request
prep = self.prepare_request(req)
File "C:\myenv\lib\site-packages\requests\sessions.py", line 484, in prepare_request
p.prepare(
File "C:\myenv\lib\site-packages\requests\models.py", line 369, in prepare
self.prepare_headers(headers)
File "C:\myenv\lib\site-packages\requests\models.py", line 491, in prepare_headers
check_header_validity(header)
File "C:\myenv\lib\site-packages\requests\utils.py", line 1037, in check_header_validity
raise InvalidHeader(
requests.exceptions.InvalidHeader: Header part ('application/x-www-form-urlencoded') from {'content-type': 'application/x-www-form-urlencoded'} must be of type str or bytes, not <class 'tavern.util.formatted_str.FormattedString'>
Notes
It seems the headers are being turned into FormattedString objects and called in the rest module here.
And the headers specifically are added to the request args here.
raidgar98 commented
quick fix:
during installation force dependency
pip install requests==2.27.1 tavern
Alonreznik commented
Also here, and worked.
michaelboulton commented
Should be fixed in 1.23.2.