All checks were successful
Zapret source guards / validate (push) Successful in 9s
- Чужой сертификат по адресу из DNS теперь перепроверяется тем же запросом к настоящему адресу сайта (как контроль у OONI). Если и там чужой — HTTPS подменяет антивирус, прокси или сеть, а не DNS: это «не узнали», а не «подмена». Без эталона чужой сертификат тоже ничего не доказывает. - Сводка итога вынесена из виджетов в dns_check_plans; строка состояния строится из неё: при сбое и остановке больше нет зелёного «Проверка завершена», «Сохранить» доступно, только когда есть что сохранять. - Все адреса заданы на компьютере или в сети (hosts, VPN fake-ip, домашний фильтр) — не «Ваш DNS честный», а «адреса берутся не у провайдера»; такой домен подписан «Адрес не от провайдера», а не «Адрес из файла hosts». - Проверка, где не удалось проверить ни один адрес, пишется в историю как «не узнали», а не предупреждение. - Удалены неиспользуемые create_dns_check_worker (к тому же сломанный) и create_dns_check_save_worker в dns/commands.py, план очистки потока. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
1.9 KiB
Python
42 lines
1.9 KiB
Python
"""Вкладка «DNS подмена»: о недоступном эталонном сервере сказано в итоге."""
|
||
|
||
from __future__ import annotations
|
||
|
||
import unittest
|
||
|
||
from dns.dns_check_plans import summarize_dns_results
|
||
|
||
HONEST = {"discord.com": {"state": "ok"}}
|
||
UP = {"label": "Cloudflare", "address": "1.1.1.1", "ok": True, "reason": ""}
|
||
DOWN = {"label": "Google", "address": "8.8.8.8", "ok": False, "reason": "сервер молчит"}
|
||
|
||
|
||
class ReferenceNoteTests(unittest.TestCase):
|
||
def test_all_references_answering_adds_nothing(self) -> None:
|
||
summary = summarize_dns_results({"domains": HONEST, "reference": [UP]})
|
||
|
||
self.assertEqual(summary["kind"], "ok")
|
||
self.assertNotIn("эталон", summary["detail"].replace("совпадают с эталоном", ""))
|
||
|
||
def test_silent_reference_is_named_with_its_reason(self) -> None:
|
||
summary = summarize_dns_results({"domains": HONEST, "reference": [UP, DOWN]})
|
||
|
||
self.assertEqual(summary["kind"], "ok")
|
||
self.assertIn("Google (8.8.8.8) — сервер молчит", summary["detail"])
|
||
self.assertIn("по остальным", summary["detail"])
|
||
|
||
def test_without_any_reference_dns_is_not_called_honest(self) -> None:
|
||
summary = summarize_dns_results({"domains": HONEST, "reference": [DOWN]})
|
||
|
||
self.assertEqual((summary["kind"], summary["title"]), ("partial", "Проверить DNS не удалось"))
|
||
self.assertIn("сравнивать ответы было не с чем", summary["detail"])
|
||
|
||
def test_spoofing_keeps_its_verdict_and_gets_the_note(self) -> None:
|
||
summary = summarize_dns_results({"domains": {"x.com": {"state": "spoofed"}}, "reference": [UP, DOWN]})
|
||
|
||
self.assertEqual(summary["kind"], "spoofed")
|
||
self.assertIn("Google (8.8.8.8)", summary["detail"])
|
||
|
||
|
||
if __name__ == "__main__":
|
||
unittest.main()
|