forked from claw/flaskpaste
tests: fix mypy type errors in security tests
This commit is contained in:
@@ -565,7 +565,7 @@ def is_trusted_proxy() -> bool:
|
|||||||
Result is cached per-request in Flask's g object for efficiency.
|
Result is cached per-request in Flask's g object for efficiency.
|
||||||
"""
|
"""
|
||||||
if hasattr(g, "_trusted_proxy"):
|
if hasattr(g, "_trusted_proxy"):
|
||||||
return g._trusted_proxy
|
return bool(g._trusted_proxy)
|
||||||
|
|
||||||
expected = current_app.config.get("TRUSTED_PROXY_SECRET", "")
|
expected = current_app.config.get("TRUSTED_PROXY_SECRET", "")
|
||||||
if not expected:
|
if not expected:
|
||||||
@@ -573,7 +573,7 @@ def is_trusted_proxy() -> bool:
|
|||||||
return True
|
return True
|
||||||
provided = request.headers.get("X-Proxy-Secret", "")
|
provided = request.headers.get("X-Proxy-Secret", "")
|
||||||
g._trusted_proxy = hmac.compare_digest(expected, provided)
|
g._trusted_proxy = hmac.compare_digest(expected, provided)
|
||||||
return g._trusted_proxy
|
return bool(g._trusted_proxy)
|
||||||
|
|
||||||
|
|
||||||
def get_client_fingerprint() -> str | None:
|
def get_client_fingerprint() -> str | None:
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ def test_trusted_path_validation():
|
|||||||
]
|
]
|
||||||
|
|
||||||
for path, expected, desc in trusted_tests + untrusted_tests:
|
for path, expected, desc in trusted_tests + untrusted_tests:
|
||||||
result = is_trusted_clipboard_path(path)
|
result = is_trusted_clipboard_path(path) # type: ignore[operator]
|
||||||
status = "PASS" if result == expected else "FAIL"
|
status = "PASS" if result == expected else "FAIL"
|
||||||
results.append((status, desc, path, expected, result))
|
results.append((status, desc, path, expected, result))
|
||||||
print(f" {status}: {desc}")
|
print(f" {status}: {desc}")
|
||||||
@@ -76,7 +76,7 @@ def test_path_injection():
|
|||||||
os.environ["PATH"] = f"/tmp:{original_path}" # noqa: S108
|
os.environ["PATH"] = f"/tmp:{original_path}" # noqa: S108
|
||||||
|
|
||||||
# Try to find clipboard command
|
# Try to find clipboard command
|
||||||
cmd = find_clipboard_command(CLIPBOARD_READ_COMMANDS)
|
cmd = find_clipboard_command(CLIPBOARD_READ_COMMANDS) # type: ignore[operator]
|
||||||
|
|
||||||
# Restore PATH
|
# Restore PATH
|
||||||
os.environ["PATH"] = original_path
|
os.environ["PATH"] = original_path
|
||||||
@@ -159,7 +159,7 @@ def test_config_permissions():
|
|||||||
|
|
||||||
stderr_capture = io.StringIO()
|
stderr_capture = io.StringIO()
|
||||||
with redirect_stderr(stderr_capture):
|
with redirect_stderr(stderr_capture):
|
||||||
check_config_permissions(config_path)
|
check_config_permissions(config_path) # type: ignore[operator]
|
||||||
|
|
||||||
warning = stderr_capture.getvalue()
|
warning = stderr_capture.getvalue()
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ def test_config_permissions():
|
|||||||
config_path.chmod(0o600)
|
config_path.chmod(0o600)
|
||||||
stderr_capture = io.StringIO()
|
stderr_capture = io.StringIO()
|
||||||
with redirect_stderr(stderr_capture):
|
with redirect_stderr(stderr_capture):
|
||||||
check_config_permissions(config_path)
|
check_config_permissions(config_path) # type: ignore[operator]
|
||||||
|
|
||||||
warning = stderr_capture.getvalue()
|
warning = stderr_capture.getvalue()
|
||||||
if not warning:
|
if not warning:
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ def test_concurrent_memory_pressure():
|
|||||||
reset_rate_limits()
|
reset_rate_limits()
|
||||||
errors = []
|
errors = []
|
||||||
|
|
||||||
def make_requests(thread_id: int):
|
def make_requests(thread_id: int) -> None:
|
||||||
# Each thread needs its own app context
|
# Each thread needs its own app context
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import time
|
|||||||
import urllib.error
|
import urllib.error
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
BASE_URL = "http://127.0.0.1:5099"
|
BASE_URL = "http://127.0.0.1:5099"
|
||||||
|
|
||||||
@@ -65,9 +66,9 @@ def random_content(size=1024):
|
|||||||
return os.urandom(size)
|
return os.urandom(size)
|
||||||
|
|
||||||
|
|
||||||
def run_tests():
|
def run_tests() -> dict[str, Any]:
|
||||||
"""Run comprehensive pentest suite."""
|
"""Run comprehensive pentest suite."""
|
||||||
results = {"passed": 0, "failed": 0, "tests": []}
|
results: dict[str, Any] = {"passed": 0, "failed": 0, "tests": []}
|
||||||
paste_ids = []
|
paste_ids = []
|
||||||
|
|
||||||
def log_test(name, passed, details=""):
|
def log_test(name, passed, details=""):
|
||||||
|
|||||||
Reference in New Issue
Block a user