diff --git a/markitdown_mcp/server.py b/markitdown_mcp/server.py index 416c726..574f71d 100644 --- a/markitdown_mcp/server.py +++ b/markitdown_mcp/server.py @@ -538,7 +538,6 @@ def safe_convert_with_limits(markitdown_instance: MarkItDown, file_path: str) -> Path(sanitized_file_path).unlink(missing_ok=True) -@normalize_timing def validate_and_sanitize_path( file_path: str, allowed_dirs: list[str] | None = None ) -> tuple[Path, bool]: diff --git a/tests/unit/test_additional_coverage.py b/tests/unit/test_additional_coverage.py index a0bf03b..7d6a6ec 100644 --- a/tests/unit/test_additional_coverage.py +++ b/tests/unit/test_additional_coverage.py @@ -12,16 +12,17 @@ from markitdown_mcp.server import ( MarkItDownMCPServer, - MCPRequest, SecurityError, - validate_xml_security, - validate_json_security, extract_text_from_binary, + normalize_timing, + safe_convert_with_limits, sanitize_unicode_text, - with_timeout, + secure_compare, validate_base64, - safe_convert_with_limits, validate_file_content_security, + validate_json_security, + validate_xml_security, + with_timeout, ) @@ -201,6 +202,35 @@ def operation(): result = operation() assert result == "no timeout" + def test_secure_compare(self): + """Test constant-time comparison helper.""" + assert secure_compare("same", "same") is True + assert secure_compare("same", "different") is False + + def test_normalize_timing_success(self): + """Test timing normalization decorator returns successful results.""" + @normalize_timing + def operation(): + return "normalized" + + start_time = time.time() + result = operation() + + assert result == "normalized" + assert time.time() - start_time >= 0.05 + + def test_normalize_timing_exception(self): + """Test timing normalization decorator re-raises exceptions.""" + @normalize_timing + def operation(): + raise ValueError("normalized error") + + start_time = time.time() + with pytest.raises(ValueError, match="normalized error"): + operation() + + assert time.time() - start_time >= 0.05 + def test_validate_base64_valid(self): """Test base64 validation with valid data.""" import base64 @@ -320,4 +350,4 @@ def test_validate_file_content_security_other(self): result = validate_file_content_security(temp_path) assert result == temp_path # Should return original for non-special files finally: - Path(temp_path).unlink(missing_ok=True) \ No newline at end of file + Path(temp_path).unlink(missing_ok=True)