uri/win_uri: Make method a free text field (#49719)

* uri/win_uri: Make method a free text field

Since various interfaces introduce their own HTTP method (e.g. like
PROPFIND, LIST or TRACE) it's better to leave this up to the user.

* Fix HTTP method check in module_utils urls

* Add integration test for method UNKNOWN

* Clarify the change as requested during review
This commit is contained in:
Dag Wieers 2019-02-28 21:55:18 +01:00 committed by ansibot
parent 81ec48c7b4
commit 4e6c113bf0
7 changed files with 50 additions and 11 deletions

View file

@ -390,6 +390,20 @@
- result is failure
- "'failed to parse body as form_urlencoded: too many values to unpack' in result.msg"
- name: Validate invalid method
uri:
url: https://{{ httpbin_host }}/anything
method: UNKNOWN
register: result
ignore_errors: yes
- name: Assert invalid method fails
assert:
that:
- result is failure
- result.status == 405
- "'METHOD NOT ALLOWED' in result.msg"
- name: Test client cert auth, no certs
uri:
url: "https://ansible.http.tests/ssl_client_verify"

View file

@ -336,6 +336,20 @@
- get_custom_header.json.headers['Test-Header'] == 'hello'
- get_custom_header.json.headers['Another-Header'] == 'world'
- name: Validate invalid method
win_uri:
url: https://{{ httpbin_host }}/anything
method: UNKNOWN
register: invalid_method
ignore_errors: yes
- name: Assert invalid method fails
assert:
that:
- invalid_method is failure
- invalid_method.status_code == 405
- invalid_method.status_description == 'METHOD NOT ALLOWED'
# client cert auth tests
- name: get request with timeout

View file

@ -363,8 +363,14 @@ def test_Request_open_cookies(urlopen_mock, install_opener_mock):
def test_Request_open_invalid_method(urlopen_mock, install_opener_mock):
with pytest.raises(ConnectionError):
r = Request().open('BOGUS', 'https://ansible.com/')
r = Request().open('UNKNOWN', 'https://ansible.com/')
args = urlopen_mock.call_args[0]
req = args[0]
assert req.data is None
assert req.get_method() == 'UNKNOWN'
# assert r.status == 504
def test_Request_open_custom_method(urlopen_mock, install_opener_mock):