43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Tests for DB secret redaction logging filter."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from mes_dashboard.core.database import (
|
|
SecretRedactionFilter,
|
|
install_log_redaction_filter,
|
|
redact_connection_secrets,
|
|
)
|
|
|
|
|
|
def test_redact_connection_secrets_masks_oracle_url_password():
|
|
raw = "connect failed: oracle+oracledb://user:super-secret@db-host:1521/service"
|
|
masked = redact_connection_secrets(raw)
|
|
|
|
assert "super-secret" not in masked
|
|
assert "user:***@" in masked
|
|
|
|
|
|
def test_redact_connection_secrets_masks_db_password_env_pattern():
|
|
raw = "Runtime config error DB_PASSWORD=myPassword123"
|
|
masked = redact_connection_secrets(raw)
|
|
|
|
assert "myPassword123" not in masked
|
|
assert "DB_PASSWORD=***" in masked
|
|
|
|
|
|
def test_install_log_redaction_filter_attaches_to_logger_handlers():
|
|
logger = logging.getLogger("mes_dashboard.test_redaction")
|
|
logger.handlers = []
|
|
logger.filters = []
|
|
logger.setLevel(logging.INFO)
|
|
|
|
handler = logging.StreamHandler()
|
|
logger.addHandler(handler)
|
|
|
|
install_log_redaction_filter(logger)
|
|
|
|
assert any(isinstance(f, SecretRedactionFilter) for f in handler.filters)
|