zapretgui/tests/test_report_upgrade.py
loop-uh 6af2037ce8
All checks were successful
Zapret source guards / validate (push) Successful in 10s
Отчёт версии 3: внешний адрес скрыт и в сохранённых отчётах
Старые отчёты (версий 1 и 2) при открытии получают скрытый внешний адрес в разделе «Ваша сеть» и в тексте, как новые: отчётом делятся, а точный адрес пользователя в нём не нужен. Провайдер, номер сети и страна остаются.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 12:27:27 -04:00

68 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 unittest
from diagnostics.report_upgrade import REPORT_VERSION, upgrade
def _report(version: int | None) -> dict:
report = {
"services": [],
"problems": [],
"network": {
"external_ip": "109.252.1.77",
"local_ip": "192.168.1.5",
"prefix": "109.252.1.64/28",
"provider": "MTS · AS8359",
"lines": [
{"state": "info", "name": "Внешний адрес", "text": "109.252.1.77 (RU)"},
{"state": "info", "name": "Провайдер", "text": "MTS · AS8359, RU"},
],
},
"text": ["━━━━━━━━ Ваша сеть ━━━━━━━━", "ℹ️ Внешний адрес: 109.252.1.77 (RU)", "Ещё строка"],
}
if version is not None:
report["report_version"] = version
return report
class MaskTests(unittest.TestCase):
def test_version_two_report_gets_its_external_address_hidden_everywhere(self) -> None:
result = upgrade(_report(2))
network = result["network"]
self.assertEqual(result["report_version"], REPORT_VERSION)
self.assertEqual((network["external_ip"], network["prefix"], network["ip_masked"]), ("109.252.1.xxx", "109.252.1.xxx/28", True))
self.assertEqual(network["local_ip"], "192.168.1.5")
self.assertEqual(network["lines"][0]["text"], "109.252.1.xxx (RU)")
self.assertEqual(network["provider"], "MTS · AS8359")
self.assertNotIn("109.252.1.77", str(result))
def test_a_report_without_a_version_is_upgraded_in_one_pass(self) -> None:
result = upgrade(_report(None))
self.assertEqual(result["report_version"], REPORT_VERSION)
self.assertEqual(result["network"]["external_ip"], "109.252.1.xxx")
def test_current_report_is_returned_as_it_is(self) -> None:
report = _report(REPORT_VERSION)
self.assertIs(upgrade(report), report)
def test_the_original_report_is_not_changed(self) -> None:
report = _report(2)
upgrade(report)
self.assertEqual(report["network"]["external_ip"], "109.252.1.77")
self.assertIn("109.252.1.77", report["text"][1])
def test_report_without_the_network_section_only_gets_the_version(self) -> None:
result = upgrade({"report_version": 2, "services": []})
self.assertEqual(result, {"report_version": REPORT_VERSION, "services": []})
if __name__ == "__main__":
unittest.main()