This commit is contained in:
2026-04-22 18:34:13 +03:00
parent 3992121397
commit ce7a1f70b2
60 changed files with 10243 additions and 3443 deletions

81
tests/test_config.py Normal file
View File

@@ -0,0 +1,81 @@
from app.config import Settings
def test_database_server_url_excludes_database_name() -> None:
settings = Settings.model_construct(
db_host="127.0.0.1",
db_port=3306,
db_name="oreolvpn",
db_user="user",
db_password="pass",
)
assert settings.database_server_url == "mysql+aiomysql://user:pass@127.0.0.1:3306/?charset=utf8mb4"
def test_support_ticket_link_parses_private_topic_link() -> None:
settings = Settings.model_construct(
bot_support_ticket_link="https://t.me/c/3646494169/2/3",
bot_support_ticket_chat_id_raw="",
bot_support_ticket_thread_id=0,
)
assert settings.support_ticket_chat_id == -1003646494169
assert settings.support_ticket_message_thread_id == 2
def test_payment_review_link_parses_private_topic_link() -> None:
settings = Settings.model_construct(
payment_review_link="https://t.me/c/3646494169/56/57",
payment_review_chat_id_raw="",
payment_review_thread_id=0,
)
assert settings.payment_review_chat_id == -1003646494169
assert settings.payment_review_message_thread_id == 56
def test_moderator_ids_are_parsed() -> None:
settings = Settings.model_construct(
bot_moderator_ids_raw="123, 456 ,789",
)
assert settings.bot_moderator_ids == {123, 456, 789}
assert settings.is_moderator(456) is True
assert settings.is_moderator(999) is False
def test_public_username_is_normalized() -> None:
settings = Settings.model_construct(
bot_public_username="@oreol_vpn_bot",
)
assert settings.bot_public_username_normalized == "oreol_vpn_bot"
def test_payment_internal_squad_uuids_are_parsed() -> None:
settings = Settings.model_construct(
payment_internal_squad_uuids_raw="uuid-1, uuid-2 ,uuid-3",
)
assert settings.payment_internal_squad_uuids == ["uuid-1", "uuid-2", "uuid-3"]
def test_payment_username_prefix_is_normalized() -> None:
settings = Settings.model_construct(
payment_username_prefix="Oreol!! prefix",
)
assert settings.payment_username_prefix_normalized == "Oreolprefix"
def test_payment_plans_are_parsed() -> None:
settings = Settings.model_construct(
payment_plans_raw="30:250,180:600,365:1000",
)
plans = settings.payment_plans
assert [plan.code for plan in plans] == ["30d", "180d", "365d"]
assert [plan.days for plan in plans] == [30, 180, 365]
assert [plan.amount_rub for plan in plans] == [250, 600, 1000]