diff --git a/aiogram/bot/api.py b/aiogram/bot/api.py index 675626ac..9589c3e5 100644 --- a/aiogram/bot/api.py +++ b/aiogram/bot/api.py @@ -24,11 +24,17 @@ def check_token(token: str) -> bool: :param token: :return: """ + if not isinstance(token, str): + message = (f"Token is invalid! " + f"It must be 'str' type instead of {type(token)} type.") + raise exceptions.ValidationError(message) + if any(x.isspace() for x in token): - raise exceptions.ValidationError('Token is invalid!') + message = "Token is invalid! It can't contains spaces." + raise exceptions.ValidationError(message) left, sep, right = token.partition(':') - if (not sep) or (not left.isdigit()) or (len(left) < 3): + if (not sep) or (not left.isdigit()) or (not right): raise exceptions.ValidationError('Token is invalid!') return True diff --git a/tests/test_bot/test_api.py b/tests/test_bot/test_api.py index c5193bcc..29418169 100644 --- a/tests/test_bot/test_api.py +++ b/tests/test_bot/test_api.py @@ -1,18 +1,32 @@ import pytest -from aiogram.bot.api import check_token +from aiogram.bot.api import check_token from aiogram.utils.exceptions import ValidationError - VALID_TOKEN = '123456789:AABBCCDDEEFFaabbccddeeff-1234567890' -INVALID_TOKEN = '123456789:AABBCCDDEEFFaabbccddeeff 123456789' # Space in token and wrong length +INVALID_TOKENS = [ + '123456789:AABBCCDDEEFFaabbccddeeff 123456789', # space is exists + 'ABC:AABBCCDDEEFFaabbccddeeff123456789', # left part is not digit + ':AABBCCDDEEFFaabbccddeeff123456789', # there is no left part + '123456789:', # there is no right part + 'ABC AABBCCDDEEFFaabbccddeeff123456789', # there is no ':' separator + None, # is None + 12345678, # is digit + {}, # is dict + [], # is dict +] -class Test_check_token: +@pytest.fixture(params=INVALID_TOKENS, name='invalid_token') +def invalid_token_fixture(request): + return request.param + + +class TestCheckToken: def test_valid(self): assert check_token(VALID_TOKEN) is True - def test_invalid_token(self): + def test_invalid_token(self, invalid_token): with pytest.raises(ValidationError): - check_token(INVALID_TOKEN) + check_token(invalid_token)