fix: validate_caldav_url crashes with TypeError on a non-string URL (#1608)

This commit is contained in:
Afonso Coutinho
2026-06-03 00:35:16 +01:00
committed by GitHub
parent 0d88c9989e
commit 382d49d887
2 changed files with 23 additions and 1 deletions

View File

@@ -63,7 +63,7 @@ def _validate_caldav_ip(host: str) -> None:
def validate_caldav_url(raw_url: str) -> str: def validate_caldav_url(raw_url: str) -> str:
"""Validate and normalize a user-provided CalDAV URL before server-side use.""" """Validate and normalize a user-provided CalDAV URL before server-side use."""
url = (raw_url or "").strip() url = (raw_url if isinstance(raw_url, str) else "").strip()
if not url: if not url:
raise ValueError("CalDAV URL is required") raise ValueError("CalDAV URL is required")
parsed = urlparse(url) parsed = urlparse(url)

View File

@@ -0,0 +1,22 @@
"""Regression: validate_caldav_url must reject a non-string via its normal
ValueError path, not crash with TypeError.
It did `(raw_url or "").strip()`, so a non-string scalar (e.g. an int from a
mis-typed config) reached `.strip()` and raised TypeError instead of the
function\'s own ValueError.
"""
import pytest
from src.caldav_sync import validate_caldav_url
def test_non_string_raises_valueerror_not_typeerror():
with pytest.raises(ValueError):
validate_caldav_url(12345)
with pytest.raises(ValueError):
validate_caldav_url(None)
def test_valid_url_passes():
out = validate_caldav_url("https://dav.example.com/calendars/")
assert "example.com" in out