Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions kn_defaults/logging/middlewares.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,28 +97,33 @@ def get_post_parameters(self, request, method='POST'):
else:
sensitive_post_parameters = getattr(request, 'sensitive_post_parameters', [])
if method == "PUT":
method_attr = json.loads(getattr(request, "body", b"{}"))
if hasattr(request, "data"): # if drf is used we can safely access data
method_attr = request.data
# If it's not used we can't read body twice as it will cause an exception
# so return empty json instead
# method_attr = json.loads(getattr(request, "body", b"{}"))
method_attr = {}
else:
method_attr = getattr(request, method, None)

if not method_attr:
return {}
cleansed = method_attr.copy()
if sensitive_post_parameters:
if sensitive_post_parameters == '__ALL__':
# Cleanse all parameters.
for k in cleansed:
cleansed[k] = CLEANSED_SUBSTITUTE
return cleansed
else:
# Cleanse only the specified parameters.
for param in sensitive_post_parameters:
if param in cleansed:
cleansed[param] = CLEANSED_SUBSTITUTE
return cleansed
else:
if not sensitive_post_parameters:
return cleansed

if sensitive_post_parameters == '__ALL__':
# Cleanse all parameters.
for k in cleansed:
cleansed[k] = CLEANSED_SUBSTITUTE
return cleansed

# Cleanse only the specified parameters.
for param in sensitive_post_parameters:
if param in cleansed:
cleansed[param] = CLEANSED_SUBSTITUTE
return cleansed

def process_exception(self, request, exception):
data = self.get_data(request, exception=exception)
traceback_ = traceback.format_exc()
Expand Down
4 changes: 4 additions & 0 deletions runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

if __name__ == "__main__":
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.test_settings'
os.environ['DJANGO_PROJECT_NAME'] = 'kn_defaults_test'
os.environ['DJANGO_PROJECT_ROOT'] = '.'
os.environ['DJANGO_LOGSTASH_HOST'] = ''
os.environ['DJANGO_LOGSTASH_PORT'] = '0'
django.setup()
TestRunner = get_runner(settings)
test_runner = TestRunner()
Expand Down
6 changes: 3 additions & 3 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import os

from kn_defaults.logging.defaults import get_base_logging

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = 'fake-key'
Expand Down Expand Up @@ -50,9 +52,7 @@
'success_func_view',
'error_func_view',
]
from kn_defaults.logging.defaults import BASE_LOGGING

BASE_LOGGING.update({})
LOGGING = BASE_LOGGING
LOGGING = get_base_logging(logstash=False)

RAVEN_CONFIG = {'dsn': ''}
6 changes: 3 additions & 3 deletions tests/tests.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
from unittest._log import _CapturingHandler
from unittest.case import _BaseTestCaseContext

from django.test import TestCase, override_settings
from django.urls import reverse
import pdb
import logging

from unittest.case import _AssertLogsContext, _BaseTestCaseContext, _CapturingHandler

from kn_defaults.logging.defaults import KN_FORMATTER, logging_decorator, FUNCTION_LOGGER_FORMATTER

_AssertLogsContext.LOGGING_FORMAT = KN_FORMATTER


class _AssertLogsContext(_BaseTestCaseContext):
"""A context manager used to implement TestCase.assertLogs()."""
Expand Down