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:
|
||||
"""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:
|
||||
raise ValueError("CalDAV URL is required")
|
||||
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