From 65cbbf15c91a0d838dd0b5d8ba8d714e27d6d369 Mon Sep 17 00:00:00 2001 From: Daniel Ziegenberg Date: Wed, 13 Oct 2021 17:11:26 +0200 Subject: [PATCH] Use the AWX HTTP client headers for rocketchat notifications Signed-off-by: Daniel Ziegenberg --- awx/main/notifications/rocketchat_backend.py | 5 +++- .../unit/notifications/test_rocketchat.py | 24 +++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/awx/main/notifications/rocketchat_backend.py b/awx/main/notifications/rocketchat_backend.py index 6d331d9e65..9092b90f17 100644 --- a/awx/main/notifications/rocketchat_backend.py +++ b/awx/main/notifications/rocketchat_backend.py @@ -9,6 +9,7 @@ from django.utils.encoding import smart_text from django.utils.translation import ugettext_lazy as _ from awx.main.notifications.base import AWXBaseEmailBackend +from awx.main.utils import get_awx_http_client_headers from awx.main.notifications.custom_notification_base import CustomNotificationBase logger = logging.getLogger('awx.main.notifications.rocketchat_backend') @@ -38,7 +39,9 @@ class RocketChatBackend(AWXBaseEmailBackend, CustomNotificationBase): if optvalue is not None: payload[optval] = optvalue.strip() - r = requests.post("{}".format(m.recipients()[0]), data=json.dumps(payload), verify=(not self.rocketchat_no_verify_ssl)) + r = requests.post( + "{}".format(m.recipients()[0]), data=json.dumps(payload), headers=get_awx_http_client_headers(), verify=(not self.rocketchat_no_verify_ssl) + ) if r.status_code >= 400: logger.error(smart_text(_("Error sending notification rocket.chat: {}").format(r.status_code))) diff --git a/awx/main/tests/unit/notifications/test_rocketchat.py b/awx/main/tests/unit/notifications/test_rocketchat.py index 8f00d19966..9f087ba98f 100644 --- a/awx/main/tests/unit/notifications/test_rocketchat.py +++ b/awx/main/tests/unit/notifications/test_rocketchat.py @@ -7,8 +7,11 @@ import awx.main.notifications.rocketchat_backend as rocketchat_backend def test_send_messages(): - with mock.patch('awx.main.notifications.rocketchat_backend.requests') as requests_mock: + with mock.patch('awx.main.notifications.rocketchat_backend.requests') as requests_mock, mock.patch( + 'awx.main.notifications.rocketchat_backend.get_awx_http_client_headers' + ) as version_mock: requests_mock.post.return_value.status_code = 201 + version_mock.return_value = {'Content-Type': 'application/json', 'User-Agent': 'AWX 0.0.1.dev (open)'} backend = rocketchat_backend.RocketChatBackend() message = EmailMessage( 'test subject', @@ -23,7 +26,12 @@ def test_send_messages(): message, ] ) - requests_mock.post.assert_called_once_with('http://example.com', data='{"text": "test subject"}', verify=True) + requests_mock.post.assert_called_once_with( + 'http://example.com', + data='{"text": "test subject"}', + headers={'Content-Type': 'application/json', 'User-Agent': 'AWX 0.0.1.dev (open)'}, + verify=True, + ) assert sent_messages == 1 @@ -84,8 +92,11 @@ def test_send_messages_with_icon_url(): def test_send_messages_with_no_verify_ssl(): - with mock.patch('awx.main.notifications.rocketchat_backend.requests') as requests_mock: + with mock.patch('awx.main.notifications.rocketchat_backend.requests') as requests_mock, mock.patch( + 'awx.main.notifications.rocketchat_backend.get_awx_http_client_headers' + ) as version_mock: requests_mock.post.return_value.status_code = 201 + version_mock.return_value = {'Content-Type': 'application/json', 'User-Agent': 'AWX 0.0.1.dev (open)'} backend = rocketchat_backend.RocketChatBackend(rocketchat_no_verify_ssl=True) message = EmailMessage( 'test subject', @@ -100,5 +111,10 @@ def test_send_messages_with_no_verify_ssl(): message, ] ) - requests_mock.post.assert_called_once_with('http://example.com', data='{"text": "test subject"}', verify=False) + requests_mock.post.assert_called_once_with( + 'http://example.com', + data='{"text": "test subject"}', + headers={'Content-Type': 'application/json', 'User-Agent': 'AWX 0.0.1.dev (open)'}, + verify=False, + ) assert sent_messages == 1