import pytest from url_shortener.dtos import RequestInfo def test_request_info_existing_country_code_lowercase(): request_info = RequestInfo( client_ip=None, user_agent=None, domain="test", country_code="us" ) assert request_info.country_code == "us" def test_request_info_existing_country_code_uppercase(): request_info = RequestInfo( client_ip=None, user_agent=None, domain="test", country_code="US" ) assert request_info.country_code == "US" def test_request_info_not_existing_country_code(): request_info = RequestInfo( client_ip=None, user_agent=None, domain="test", country_code="XX" ) assert request_info.country_code is None def test_request_info_empty_country_code(): request_info = RequestInfo( client_ip=None, user_agent=None, domain="test", country_code=None ) assert request_info.country_code is None @pytest.mark.parametrize( ["user_agent", "is_bot"], [ ["Mozilla/5.0 (Android 15; Mobile; rv:138.0) Gecko/138.0 Firefox/138.0", False], ["TelegramBot (like TwitterBot)", True], ["Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)", True], [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.4 Safari/605.1.15", False, ], [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36", False, ], [ "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)", True, ], ], ) def test_request_info_is_bot(user_agent: str, is_bot: bool): request_info = RequestInfo( client_ip=None, user_agent=user_agent, domain="test", country_code=None ) assert request_info.is_bot is is_bot