From 8805956926a96446615530e1ec3a0b6b207484e8 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 25 May 2022 14:13:28 +0200 Subject: [PATCH] utils/soap: disable zeep.transports logger (#64940) --- passerelle/utils/soap.py | 4 +++- tests/test_utils_soap.py | 22 ++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/passerelle/utils/soap.py b/passerelle/utils/soap.py index 338fe860..f0985ca9 100644 --- a/passerelle/utils/soap.py +++ b/passerelle/utils/soap.py @@ -22,6 +22,7 @@ from zeep.cache import InMemoryCache from zeep.transports import Transport from passerelle.utils.jsonresponse import APIError +from passerelle.utils.logging import ignore_loggers class SOAPError(APIError): @@ -90,7 +91,8 @@ class SOAPTransport(Transport): ) def post_xml(self, *args, **kwargs): - response = super().post_xml(*args, **kwargs) + with ignore_loggers('zeep', 'zeep.transports'): + response = super().post_xml(*args, **kwargs) if self.remove_first_bytes_for_xml: return ResponseFixContentWrapper(response) diff --git a/tests/test_utils_soap.py b/tests/test_utils_soap.py index 35fc9472..d4ff2d6b 100644 --- a/tests/test_utils_soap.py +++ b/tests/test_utils_soap.py @@ -13,6 +13,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import logging + import mock import pytest import requests @@ -21,6 +23,7 @@ from zeep import Settings from zeep.exceptions import TransportError, XMLParseError from zeep.plugins import Plugin +from passerelle.utils import Request from passerelle.utils.soap import SOAPClient WSDL = 'tests/data/soap.wsdl' @@ -79,11 +82,12 @@ def test_disable_strict_mode(mocked_post): assert result['price'] == 4.2 -@mock.patch('requests.sessions.Session.post') -def test_remove_first_bytes_for_xml(mocked_post): +@mock.patch('requests.sessions.Session.send') +def test_remove_first_bytes_for_xml(mocked_send, caplog): response = requests.Response() response.status_code = 200 - response._content = force_bytes( + response.headers = {'Content-Type': 'application/xml'} + response._content = b'\x8b' + force_bytes( '''blabla \n @@ -94,9 +98,12 @@ def test_remove_first_bytes_for_xml(mocked_post): \n bloublou''' ) - mocked_post.return_value = response + mocked_send.return_value = response soap_resource = SOAPResource() + logger = logging.getLogger('soap_resource') + logger.setLevel(logging.INFO) + soap_resource.requests = Request(logger=logger) client = SOAPClient(soap_resource) with pytest.raises(TransportError): @@ -107,3 +114,10 @@ def test_remove_first_bytes_for_xml(mocked_post): assert len(result) == 2 assert result['skipMe'] == 1.2 assert result['price'] == 4.2 + + assert len(caplog.records) == 2 + assert 'response_content' not in caplog.records[-1].__dict__ + logger.setLevel(logging.DEBUG) + result = client.service.GetLastTradePrice(tickerSymbol='banana') + assert len(caplog.records) == 3 + assert 'response_content' in caplog.records[-1].__dict__ -- 2.35.1