logs: log 405 error as warning using ProxyLogger (#51263)
This commit is contained in:
parent
0b542110ca
commit
c693de3344
|
@ -450,7 +450,20 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
|
|||
return is_authorized(request, self.connector, perm)
|
||||
|
||||
def perform(self, request, *args, **kwargs):
|
||||
connector_name, endpoint_name = kwargs['connector'], kwargs['endpoint']
|
||||
url = request.get_full_path()
|
||||
|
||||
if request.method.lower() not in self.endpoint.endpoint_info.methods:
|
||||
self.connector.logger.warning(
|
||||
'endpoint %s %s (=> 405)' % (request.method, url),
|
||||
extra={
|
||||
'request': request,
|
||||
'connector': connector_name,
|
||||
'connector_endpoint': endpoint_name,
|
||||
'connector_endpoint_method': self._allowed_methods(),
|
||||
'connector_endpoint_url': url,
|
||||
},
|
||||
)
|
||||
return self.http_method_not_allowed(request, *args, **kwargs)
|
||||
if not self.check_perms(request):
|
||||
raise PermissionDenied()
|
||||
|
@ -476,8 +489,6 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
|
|||
raise WrongParameter(missing, extra)
|
||||
|
||||
# auto log request's inputs
|
||||
connector_name, endpoint_name = kwargs['connector'], kwargs['endpoint']
|
||||
url = request.get_full_path()
|
||||
payload = request.body[
|
||||
: self.connector.logging_parameters.requests_max_size or settings.LOGGED_REQUESTS_MAX_SIZE
|
||||
]
|
||||
|
|
|
@ -157,6 +157,32 @@ def test_proxy_logger_transaction_id(mocked_send, app, arcgis):
|
|||
assert log1.extra['transaction_id'] == log2.extra['transaction_id']
|
||||
|
||||
|
||||
@mock.patch('passerelle.utils.Request.patch')
|
||||
def test_proxy_logger_on_405(mocked_patch, caplog, app, arcgis):
|
||||
mocked_patch.return_value = utils.FakedResponse(status_code=500)
|
||||
|
||||
# simple logger
|
||||
arcgis.log_evel = 'WARNING'
|
||||
log = ResourceLog.objects.filter(appname='arcgis', slug='test').delete()
|
||||
caplog.clear()
|
||||
resp = app.patch('/arcgis/test/district', status=405)
|
||||
assert not resp.text
|
||||
|
||||
# Resource Custom DB Logger
|
||||
log = ResourceLog.objects.filter(appname='arcgis', slug='test').first()
|
||||
assert log.levelno == 30
|
||||
assert log.message == 'endpoint PATCH /arcgis/test/district (=> 405)'
|
||||
assert log.extra['connector_endpoint_method'] == ['GET']
|
||||
|
||||
# Resource Generic Logger
|
||||
for record in caplog.records:
|
||||
if record.name != 'passerelle.resource.arcgis.test':
|
||||
continue
|
||||
assert record.levelno == 30
|
||||
assert record.levelname == 'WARNING'
|
||||
assert record.message == 'endpoint PATCH /arcgis/test/district (=> 405)'
|
||||
|
||||
|
||||
class FakeConnectorBase(object):
|
||||
slug = 'connector'
|
||||
|
||||
|
|
Loading…
Reference in New Issue