From 8f9cf456b032691adffa46e1b9ed8c87168438af Mon Sep 17 00:00:00 2001 From: Sam Doran Date: Wed, 28 Oct 2020 09:34:06 -0400 Subject: [PATCH] url lookup - set default user agent (#72324) * Add unit tests * Add note about when default changed --- .../fragments/url-lookup-add-httpagent.yml | 2 ++ lib/ansible/plugins/lookup/url.py | 3 ++- test/units/plugins/lookup/test_url.py | 26 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/url-lookup-add-httpagent.yml create mode 100644 test/units/plugins/lookup/test_url.py diff --git a/changelogs/fragments/url-lookup-add-httpagent.yml b/changelogs/fragments/url-lookup-add-httpagent.yml new file mode 100644 index 00000000000..55f06b625d2 --- /dev/null +++ b/changelogs/fragments/url-lookup-add-httpagent.yml @@ -0,0 +1,2 @@ +bugfixes: + - url lookup - set default user agent to ``ansible-httpget`` (https://github.com/ansible/ansible/pull/72324) diff --git a/lib/ansible/plugins/lookup/url.py b/lib/ansible/plugins/lookup/url.py index 29c00f14f4e..026590f3274 100644 --- a/lib/ansible/plugins/lookup/url.py +++ b/lib/ansible/plugins/lookup/url.py @@ -64,9 +64,10 @@ options: - section: url_lookup key: timeout http_agent: - description: User-Agent to use in the request + description: User-Agent to use in the request. The default was changed in 2.11 to C(ansible-httpget). type: string version_added: "2.10" + default: ansible-httpget vars: - name: ansible_lookup_url_agent env: diff --git a/test/units/plugins/lookup/test_url.py b/test/units/plugins/lookup/test_url.py new file mode 100644 index 00000000000..2aa77b30b71 --- /dev/null +++ b/test/units/plugins/lookup/test_url.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Copyright: (c) 2020, Sam Doran +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +import pytest + +from ansible.plugins.loader import lookup_loader + + +@pytest.mark.parametrize( + ('kwargs', 'agent'), + ( + ({}, 'ansible-httpget'), + ({'http_agent': 'SuperFox'}, 'SuperFox'), + ) +) +def test_user_agent(mocker, kwargs, agent): + mock_open_url = mocker.patch('ansible.plugins.lookup.url.open_url', side_effect=AttributeError('raised intentionally')) + url_lookup = lookup_loader.get('url') + with pytest.raises(AttributeError): + url_lookup.run(['https://nourl'], **kwargs) + assert 'http_agent' in mock_open_url.call_args.kwargs + assert mock_open_url.call_args.kwargs['http_agent'] == agent