fix: validate_caldav_url crashes with TypeError on a non-string URL (#1608)
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
22
tests/test_caldav_url_nonstring.py
Normal file
22
tests/test_caldav_url_nonstring.py
Normal 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
|
||||||
Reference in New Issue
Block a user