Fixing HTTPError case of fetch_url for Python 3 compatibility. (#45628)
* Fixing HTTPError case of fetch_url for Python 3 compatibility. * Adding unit test. * PEP8. * Changelog.
This commit is contained in:
parent
3a72e271ad
commit
ff1aa50fdb
3 changed files with 7 additions and 3 deletions
2
changelogs/fragments/45628-fetch_url-error-headers.yaml
Normal file
2
changelogs/fragments/45628-fetch_url-error-headers.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- "fetch_url did not always return lower-case header names in case of HTTP errors (https://github.com/ansible/ansible/pull/45628)."
|
|
@ -1303,7 +1303,8 @@ def fetch_url(module, url, data=None, headers=None, method=None,
|
|||
|
||||
# Try to add exception info to the output but don't fail if we can't
|
||||
try:
|
||||
info.update(dict(**e.info()))
|
||||
# Lowercase keys, to conform to py2 behavior, so that py3 and py2 are predictable
|
||||
info.update(dict((k.lower(), v) for k, v in e.info().items()))
|
||||
except:
|
||||
pass
|
||||
|
||||
|
|
|
@ -178,13 +178,14 @@ def test_fetch_url_httperror(open_url_mock, fake_ansible_module):
|
|||
'http://ansible.com/',
|
||||
500,
|
||||
'Internal Server Error',
|
||||
{},
|
||||
{'Content-Type': 'application/json'},
|
||||
StringIO('TESTS')
|
||||
)
|
||||
|
||||
r, info = fetch_url(fake_ansible_module, 'http://ansible.com/')
|
||||
|
||||
assert info == {'msg': 'HTTP Error 500: Internal Server Error', 'body': 'TESTS', 'status': 500, 'url': 'http://ansible.com/'}
|
||||
assert info == {'msg': 'HTTP Error 500: Internal Server Error', 'body': 'TESTS',
|
||||
'status': 500, 'url': 'http://ansible.com/', 'content-type': 'application/json'}
|
||||
|
||||
|
||||
def test_fetch_url_urlerror(open_url_mock, fake_ansible_module):
|
||||
|
|
Loading…
Reference in a new issue