Skip to content

Commit fe56ca8

Browse files
committed
feat: restore pyo3 request logging path
Signed-off-by: lucarlig <luca.carlig@ibm.com>
1 parent bf972dd commit fe56ca8

3 files changed

Lines changed: 198 additions & 9 deletions

File tree

tests/unit/mcpgateway/middleware/test_request_logging_middleware.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def test_mask_sensitive_data_ignores_empty_normalized_keys():
125125
assert masked["password"] == "******"
126126

127127

128-
def test_mask_sensitive_data_uses_rust_sidecar_when_enabled(monkeypatch):
128+
def test_mask_sensitive_data_uses_pyo3_module_when_enabled(monkeypatch):
129129
rust_module = MagicMock()
130130
rust_module.mask_sensitive_data.return_value = {"password": "******", "username": "user"} # pragma: allowlist secret
131131
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware.settings.experimental_rust_request_logging_masking_enabled", True, raising=False)
@@ -137,14 +137,6 @@ def test_mask_sensitive_data_uses_rust_sidecar_when_enabled(monkeypatch):
137137
rust_module.mask_sensitive_data.assert_called_once_with({"password": "secret", "username": "user"}, 10) # pragma: allowlist secret
138138

139139

140-
def test_mask_sensitive_headers_missing_sidecar_is_hard_failure_when_enabled(monkeypatch):
141-
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware.settings.experimental_rust_request_logging_masking_enabled", True, raising=False)
142-
143-
with patch("mcpgateway.middleware.request_logging_middleware._load_rust_request_logging_module", side_effect=ModuleNotFoundError("missing sidecar")):
144-
with pytest.raises(ModuleNotFoundError, match="missing sidecar"):
145-
mask_sensitive_headers({"Authorization": "Bearer abc"})
146-
147-
148140
# --- mask_jwt_in_cookies tests ---
149141

150142

@@ -204,6 +196,18 @@ def test_mask_sensitive_headers_respects_non_sensitive_suffixes():
204196
assert masked["X-JWT_Status_Count"] == "7"
205197

206198

199+
def test_mask_sensitive_headers_uses_pyo3_module_when_enabled(monkeypatch):
200+
rust_module = MagicMock()
201+
rust_module.mask_sensitive_headers.return_value = {"Authorization": "******"}
202+
monkeypatch.setattr("mcpgateway.middleware.request_logging_middleware.settings.experimental_rust_request_logging_masking_enabled", True, raising=False)
203+
204+
with patch("mcpgateway.middleware.request_logging_middleware._load_rust_request_logging_module", return_value=rust_module):
205+
masked = mask_sensitive_headers({"Authorization": "Bearer abc"})
206+
207+
assert masked == {"Authorization": "******"}
208+
rust_module.mask_sensitive_headers.assert_called_once_with({"Authorization": "Bearer abc"})
209+
210+
207211
# --- RequestLoggingMiddleware tests ---
208212

209213

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# -*- coding: utf-8 -*-
2+
"""Configuration tests for request-logging Rust integration."""
3+
4+
from mcpgateway.config import Settings
5+
6+
7+
def test_request_logging_uses_single_pyo3_flag(monkeypatch):
8+
"""The request-logging Rust integration should be controlled by one PyO3 flag."""
9+
monkeypatch.setenv("EXPERIMENTAL_RUST_REQUEST_LOGGING_MASKING_ENABLED", "true")
10+
11+
settings = Settings(_env_file=None)
12+
13+
assert settings.experimental_rust_request_logging_masking_enabled is True

tools_rust/request_logging_masking_sidecar/Cargo.lock

Lines changed: 172 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)