Skip to content

Commit 6cfe0f9

Browse files
committed
test: cover request logging native fallback paths
Signed-off-by: lucarlig <luca.carlig@ibm.com>
1 parent 69be3a4 commit 6cfe0f9

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

tests/unit/mcpgateway/middleware/test_request_logging_middleware.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
from starlette.datastructures import Headers
1515
from starlette.types import Scope
1616
from mcpgateway.middleware.request_logging_middleware import (
17+
_load_rust_request_logging_module,
18+
_mask_json_payload_for_logging,
1719
mask_sensitive_data,
1820
mask_jwt_in_cookies,
1921
mask_sensitive_headers,
@@ -250,6 +252,39 @@ def test_mask_sensitive_headers_fall_back_to_python_when_native_extension_import
250252
assert len(dummy_logger.warnings) == 1
251253

252254

255+
def test_mask_json_payload_for_logging_returns_native_string_result(monkeypatch):
256+
native_extension = MagicMock()
257+
native_extension.mask_sensitive_json_bytes.return_value = '{"password":"******","data":"ok"}' # pragma: allowlist secret
258+
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware.settings.experimental_rust_request_logging_masking_enabled", True, raising=False)
259+
260+
with patch("mcpgateway.middleware.request_logging_middleware._load_rust_request_logging_module", return_value=native_extension):
261+
masked = _mask_json_payload_for_logging(orjson.dumps({"password": "123", "data": "ok"}))
262+
263+
assert masked == '{"password":"******","data":"ok"}' # pragma: allowlist secret
264+
265+
266+
def test_mask_json_payload_for_logging_falls_back_when_native_json_masking_raises(monkeypatch):
267+
native_extension = MagicMock()
268+
native_extension.mask_sensitive_json_bytes.side_effect = RuntimeError("boom")
269+
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware.settings.experimental_rust_request_logging_masking_enabled", True, raising=False)
270+
271+
with (
272+
patch("mcpgateway.middleware.request_logging_middleware._load_rust_request_logging_module", return_value=native_extension),
273+
patch("mcpgateway.middleware.request_logging_middleware.mask_sensitive_data", return_value={"password": "******", "data": "ok"}), # pragma: allowlist secret
274+
):
275+
masked = _mask_json_payload_for_logging(orjson.dumps({"password": "123", "data": "ok"}))
276+
277+
assert masked == '{"password":"******","data":"ok"}' # pragma: allowlist secret
278+
279+
280+
def test_load_rust_request_logging_module_returns_cached_module(monkeypatch):
281+
cached_module = object()
282+
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware._RUST_REQUEST_LOGGING_MODULE", cached_module)
283+
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware._RUST_REQUEST_LOGGING_IMPORT_FAILED", False)
284+
285+
assert _load_rust_request_logging_module() is cached_module
286+
287+
253288
# --- RequestLoggingMiddleware tests ---
254289

255290

0 commit comments

Comments
 (0)