From ce69434e71037d107fb8355811d8c836d58f7e3d Mon Sep 17 00:00:00 2001 From: Oleg A Date: Tue, 20 Apr 2021 10:20:40 +0300 Subject: [PATCH] feat: check payload length --- aiogram/utils/deep_linking.py | 4 ++++ tests/test_utils/test_deep_linking.py | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/aiogram/utils/deep_linking.py b/aiogram/utils/deep_linking.py index a2dc03dd..e8035d9a 100644 --- a/aiogram/utils/deep_linking.py +++ b/aiogram/utils/deep_linking.py @@ -110,6 +110,10 @@ async def _create_link(link_type, payload: str, encode=False): ) raise ValueError(message) + if len(payload) > 64: + message = "Payload must be up to 64 characters long." + raise ValueError(message) + return f"https://t.me/{bot.username}?{link_type}={payload}" diff --git a/tests/test_utils/test_deep_linking.py b/tests/test_utils/test_deep_linking.py index 6f42040e..f4aa14f1 100644 --- a/tests/test_utils/test_deep_linking.py +++ b/tests/test_utils/test_deep_linking.py @@ -76,3 +76,14 @@ class TestDeepLinking: encoded_payload = encode_payload(wrong_payload) assert link == f'https://t.me/{USERNAME}?start={encoded_payload}' + + async def test_64_len_payload(self): + payload = "p" * 64 + link = await get_start_link(payload) + assert link + + async def test_too_long_payload(self): + payload = "p" * 65 + print(payload, len(payload)) + with pytest.raises(ValueError): + await get_start_link(payload)