zapretgui/tests/test_bypass_tools.py
loop-uh 189472db2c
All checks were successful
Zapret source guards / validate (push) Successful in 10s
BlockCheck называет способ блокировки: если сайт обрывается на шифровании, программа тут же пробует тот же адрес с посторонним именем и вовсе без имени — отвечает, значит режут по имени сайта (в отчёте «Блокировка по имени сайта: с именем … соединение обрывается, а с посторонним именем тот же сервер отвечает»), не отвечает ни с каким — закрыт сам адрес или его сеть; на порту 80 распознаётся страница провайдера о блокировке (код 451, переход на страницу оператора, ссылка на реестр), при этом защита сайта от ботов (403, 429, «вы не робот») за блокировку не принимается; адрес, который отвечает на пинг, но не принимает соединения, называется закрытым для соединений; причина показана в подробностях строки, в подсказке и первой строкой совета; в режиме «Все сайты» добавлены российские контрольные сайты (Яндекс, ВКонтакте): если открываются только они, а зарубежные контрольные нет — это названо режимом «белых списков» с пояснением, что Zapret в нём не помогает; BlockCheck и вкладка «DNS-серверы» предупреждают, если во время проверки работали другие программы обхода или VPN (Xray, sing-box, Clash, WARP, GoodbyeDPI и другие) — результат тогда показывает сеть вместе с ними
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 20:36:30 +03:00

39 lines
1.7 KiB
Python

from __future__ import annotations
import unittest
from unittest.mock import patch
from utils import bypass_tools
class BypassToolsTests(unittest.TestCase):
def test_tools_are_recognised_by_process_name_in_any_case(self) -> None:
names = ["explorer.exe", "XRAY.EXE", "sing-box.exe", "chrome.exe"]
self.assertEqual(bypass_tools.bypass_tools_among(names), ("Xray", "sing-box"))
def test_two_process_names_of_one_tool_are_named_once(self) -> None:
self.assertEqual(bypass_tools.bypass_tools_among(["ciadpi.exe", "byedpi.exe"]), ("ByeDPI",))
def test_ordinary_processes_and_zapret_itself_are_not_listed(self) -> None:
self.assertEqual(bypass_tools.bypass_tools_among(["winws2.exe", "winws.exe", "svchost.exe", "", None]), ())
def test_every_name_in_the_list_is_a_lowercase_exe(self) -> None:
for name, title in bypass_tools.BYPASS_TOOLS.items():
with self.subTest(name=name):
self.assertEqual(name, name.lower())
self.assertTrue(name.endswith(".exe"))
self.assertTrue(title)
def test_running_tools_come_from_process_list(self) -> None:
records = [(4, "System"), (100, "warp-svc.exe"), (200, "notepad.exe")]
with patch("utils.windows_process_probe.iter_process_records_winapi", return_value=records):
self.assertEqual(bypass_tools.running_bypass_tools(), ("Cloudflare WARP",))
def test_failed_process_list_means_nothing_known(self) -> None:
with patch("utils.windows_process_probe.iter_process_records_winapi", side_effect=OSError("нет доступа")):
self.assertEqual(bypass_tools.running_bypass_tools(), ())
if __name__ == "__main__":
unittest.main()