zapretgui/tests/test_telegram_proxy_ui_texts.py
loop-uh 895dff7311
All checks were successful
Zapret source guards / validate (push) Successful in 9s
Telegram Proxy: понятно, что это, когда включать и какой режим выбрать
- Подзаголовок: небольшой прокси на этом компьютере доводит соединение
  до серверов Telegram обходным путём; включать, если Telegram долго
  «подключается» или не грузит сообщения и медиа.
- Режим: SOCKS5 — обычный прокси, выбирайте его; MTProxy — для опытных,
  соединение с ключом (secret), которое можно замаскировать (Fake TLS).
- Экскурсия telegram_status и telegram_settings — те же пояснения.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:16:41 +03:00

120 lines
5.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
import inspect
import unittest
class TelegramProxyUiTextsTests(unittest.TestCase):
def test_settings_text_plan_matches_clean_main_scenario(self) -> None:
from telegram_proxy.ui import text_plan
plan = text_plan.TELEGRAM_PROXY_SETTINGS_TEXT
self.assertEqual(
plan.page_subtitle,
"Небольшой прокси на этом компьютере: Telegram подключается к нему, а он доводит соединение до серверов "
"Telegram обходным путём. Включайте, если Telegram долго «подключается» или не грузит сообщения и медиа.",
)
self.assertIn("SOCKS5 — обычный прокси, выбирайте его", plan.proxy_mode_description)
self.assertEqual(plan.setup_title, "Подключить Telegram")
self.assertIn("Telegram сам предложит добавить прокси", plan.setup_description)
self.assertNotIn("Zastogram", plan.setup_description)
self.assertEqual(plan.zastogram_title, "Не помогает прокси?")
self.assertIn("ZaStoGram", plan.zastogram_description)
self.assertIn("Telegram Desktop", plan.zastogram_description)
self.assertEqual(plan.upstream_group_title, "Внешний прокси")
self.assertEqual(plan.upstream_toggle_title, "Использовать внешний прокси")
self.assertEqual(
plan.upstream_toggle_description,
"Резервный SOCKS5, если часть серверов Telegram не отвечает.",
)
self.assertEqual(plan.advanced_nav_title, "Продвинутые настройки")
self.assertEqual(plan.advanced_nav_description, "Внешний прокси, Cloudflare, DC→IP, пул и буфер")
joined = "\n".join(plan)
self.assertNotIn("ПЕРЕЗАПУСТИТЬ", joined)
self.assertNotIn("upstream", joined)
self.assertNotIn("WSS relay", joined)
self.assertNotIn("fallback", joined)
def test_group_titles_do_not_repeat_first_row_title(self) -> None:
# Заголовок группы прямо над строкой с тем же названием — лишний повтор.
from telegram_proxy.ui import text_plan
plan = text_plan.TELEGRAM_PROXY_SETTINGS_TEXT
self.assertNotEqual(plan.upstream_group_title, plan.upstream_toggle_title)
self.assertNotEqual(plan.cloudflare_group_title, plan.cloudflare_toggle_title)
def test_setup_hint_is_tooltip_not_floating_caption(self) -> None:
from telegram_proxy.ui import settings_build
source = inspect.getsource(settings_build)
self.assertIn("set_tooltip(setup_title_label, text.setup_description)", source)
self.assertNotIn("setup_desc_label", source)
self.assertNotIn("setup_fallback_label", source)
self.assertNotIn("QuickActionsBar", source)
def test_advanced_page_exposes_cloudflare_test_and_copy_actions(self) -> None:
from telegram_proxy.ui import advanced_build, settings_build
signature = inspect.signature(advanced_build.build_cloudflare_group)
source = inspect.getsource(advanced_build)
main_signature = inspect.signature(settings_build.build_telegram_proxy_settings_card)
self.assertIn("on_test_cloudflare", signature.parameters)
self.assertIn("on_copy_cloudflare_dns", signature.parameters)
self.assertIn("on_test_cloudflare_worker", signature.parameters)
self.assertIn("on_copy_cloudflare_worker_code", signature.parameters)
self.assertIn("on_copy_fake_tls_nginx_config", main_signature.parameters)
for name in (
"cloudflare_test_btn",
"cloudflare_dns_btn",
"cloudflare_worker_test_btn",
"cloudflare_worker_code_btn",
"Проверить",
"DNS",
"Код Worker",
):
self.assertIn(name, source)
def test_advanced_page_exposes_all_technical_options(self) -> None:
from telegram_proxy.ui import advanced_build, advanced_page, settings_build
build_source = inspect.getsource(advanced_build)
main_build_source = inspect.getsource(settings_build)
page_source = inspect.getsource(advanced_page.TelegramProxyAdvancedPage)
for name in ("dc_ip_edit", "pool_size_spin", "buffer_kb_spin", "cloudflare_toggle", "upstream_toggle"):
self.assertIn(name, build_source)
for name in ("fake_tls_domain_edit", "proxy_protocol_toggle", "mtproxy_secret_edit", "Nginx"):
self.assertIn(name, main_build_source)
self.assertIn("_on_pool_size_changed", page_source)
self.assertIn("_on_buffer_kb_changed", page_source)
self.assertIn("_on_dc_ip_changed", page_source)
def test_proxy_mode_choice_marks_socks5_as_recommended(self) -> None:
from telegram_proxy.ui import settings_build
source = inspect.getsource(settings_build)
self.assertIn("SOCKS5 (рекомендуется)", source)
self.assertIn("MTProxy (продвинутый)", source)
def test_every_setting_row_uses_its_own_icon(self) -> None:
import re
from telegram_proxy.ui import advanced_build, settings_build
icons = re.findall(
r'"(fa5[sb]\.[a-z0-9-]+)"',
inspect.getsource(settings_build) + inspect.getsource(advanced_build),
)
self.assertTrue(icons)
self.assertEqual(len(icons), len(set(icons)), icons)
if __name__ == "__main__":
unittest.main()