mirror of
https://github.com/aclist/dztui.git
synced 2026-10-31 15:12:48 +01:00
chore: add log redaction test
This commit is contained in:
1 parent
d75f87768e
commit
9fa7172056
2 files changed
+56
No files matched your search
@@ -3,6 +3,7 @@ import re
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
api_filter = r"(.*&key=)([^&]*)(.*)"
|
api_filter = r"(.*&key=)([^&]*)(.*)"
|
||||||
|
# FIXME: handle whitespace after directory name ($HOME root)
|
||||||
home_filter = r"(/home/)([^/]*)(.*)"
|
home_filter = r"(/home/)([^/]*)(.*)"
|
||||||
REDACTED = r"\1REDACTED\3"
|
REDACTED = r"\1REDACTED\3"
|
||||||
REDACTION_PATTERNS = [api_filter, home_filter]
|
REDACTION_PATTERNS = [api_filter, home_filter]
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import logging
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from dzgui.util.redact import RedactionFilter, REDACTION_PATTERNS
|
||||||
|
|
||||||
|
|
||||||
|
class RecordsListHandler(logging.Handler):
|
||||||
|
def __init__(self) -> None:
|
||||||
|
super().__init__()
|
||||||
|
self.records_list = []
|
||||||
|
|
||||||
|
def emit(self, record: logging.LogRecord) -> None:
|
||||||
|
self.records_list.append(record)
|
||||||
|
|
||||||
|
def pop(self) -> None:
|
||||||
|
return self.records_list[-1].msg
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.redact
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"log_error, expect",
|
||||||
|
[
|
||||||
|
("/home/SENSITIVE_USERNAME/subdir", "/home/REDACTED/subdir"),
|
||||||
|
(
|
||||||
|
"https://url.com/?api&key=SENSITIVE_KEY&results=10",
|
||||||
|
"https://url.com/?api&key=REDACTED&results=10",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"https://url.com/?api&key=SENSITIVE_KEY",
|
||||||
|
"https://url.com/?api&key=REDACTED",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"Error in directory: '/home/SENSITIVE_USERNAME/'",
|
||||||
|
"Error in directory: '/home/REDACTED/'",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"Error in directory: '/home/SENSITIVE_USERNAME'",
|
||||||
|
"Error in directory: '/home/REDACTED'",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_log_redaction(log_error: str, expect: str) -> None:
|
||||||
|
logger = logging.getLogger("TEST")
|
||||||
|
|
||||||
|
handler = RecordsListHandler()
|
||||||
|
logger.addHandler(handler)
|
||||||
|
logger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
_filter = RedactionFilter(patterns=REDACTION_PATTERNS)
|
||||||
|
logger.addFilter(_filter)
|
||||||
|
|
||||||
|
logger.critical(log_error)
|
||||||
|
redacted = handler.pop()
|
||||||
|
print(redacted)
|
||||||
|
assert expect == redacted
|
||||||
Reference in new issue
Block a user