diff --git a/src/youtube_handler.py b/src/youtube_handler.py index 7d91194..2a12d82 100644 --- a/src/youtube_handler.py +++ b/src/youtube_handler.py @@ -59,6 +59,8 @@ def init_youtube(): def is_youtube_url(url: str) -> bool: + if not isinstance(url, str): + return False return "youtube.com" in url or "youtu.be" in url diff --git a/tests/test_is_youtube_url_nonstring.py b/tests/test_is_youtube_url_nonstring.py new file mode 100644 index 0000000..1a9254f --- /dev/null +++ b/tests/test_is_youtube_url_nonstring.py @@ -0,0 +1,14 @@ +from src.youtube_handler import is_youtube_url + + +def test_is_youtube_url_handles_non_string(): + # `"youtube.com" in url` raises TypeError on a non-string; a url field that + # can be None/other (e.g. from a JSON message) should just be "not YT". + assert is_youtube_url(123) is False + assert is_youtube_url(None) is False + assert is_youtube_url({"u": 1}) is False + + +def test_is_youtube_url_detects_real_urls(): + assert is_youtube_url("https://www.youtube.com/watch?v=x") is True + assert is_youtube_url("https://youtu.be/x") is True