add: шаблон для ошибки (3)

This commit is contained in:
2026-09-14 23:44:16 +03:00
parent 1c2d0de14c
commit 4d5e4cf86d
11 changed files with 4860 additions and 5 deletions
+50 -5
View File
@@ -1444,12 +1444,30 @@ class BlogPostModelAndAdminTests(BaseMediaTestCase):
self.assertEqual(resp_list.status_code, 200)
self.assertContains(resp_list, "Центр отладки страниц ошибок")
self.assertContains(resp_list, "/_error/404")
self.assertContains(resp_list, "готов к просмотру")
# 2. Предпросмотр конкретной ошибки 404
resp_404 = self.client.get("/_error/404")
self.assertEqual(resp_404.status_code, 404)
self.assertContains(resp_404, "Гипноузел не обнаружен", status_code=404)
self.assertContains(resp_404, "СБОЙ МАТРИЦЫ // КОД? 404", status_code=404)
# 2. Проверка каждого кода ошибки
expected_checks = [
("400", 400, "Сбой ментального протокола"),
("401", 401, "Требуется ментальная идентификация"),
("403", 403, "Отказано бюрократом 24-го уровня"),
("404", 404, "Гипноузел не обнаружен"),
("413", 413, "Перегрузка сенсорных каналов"),
("429", 429, "Слишком много мыслей в секунду"),
("500", 500, "Критический перегрев неокортекса"),
("502", 502, "Контейнер потерял сознание"),
("503", 503, "Плановый сеанс гипнотерапии"),
("504", 504, "Разрыв астральной связи"),
("under_reconstruction", 200, "Сектор на реконструкции"),
]
for code, expected_status, text_fragment in expected_checks:
resp = self.client.get(f"/_error/{code}")
self.assertEqual(resp.status_code, expected_status, f"Ошибка при проверке кода {code}")
self.assertContains(resp, text_fragment, status_code=expected_status)
self.assertContains(resp, "return-btn", status_code=expected_status)
self.assertContains(resp, "logo-hypn0.svg", status_code=expected_status)
self.assertContains(resp, "thinking.svg", status_code=expected_status)
# 3. Предпросмотр с суффиксом .html
resp_404_html = self.client.get("/_error/404.html")
@@ -1460,3 +1478,30 @@ class BlogPostModelAndAdminTests(BaseMediaTestCase):
resp_non_existent = self.client.get("/_error/non-existent-code-999")
self.assertEqual(resp_non_existent.status_code, 404)
self.assertContains(resp_non_existent, "Шаблон для ошибки 'non-existent-code-999' не найден", status_code=404)
def test_custom_django_error_handlers(self):
"""Проверка прямого вызова стандартных Django-обработчиков ошибок."""
from django.test import RequestFactory
from hypn0_site.views import error_400, error_403, error_404, error_500
factory = RequestFactory()
req400 = factory.get("/bad-request")
resp400 = error_400(req400)
self.assertEqual(resp400.status_code, 400)
self.assertIn("Сбой ментального протокола", resp400.content.decode("utf-8"))
req403 = factory.get("/forbidden")
resp403 = error_403(req403)
self.assertEqual(resp403.status_code, 403)
self.assertIn("Отказано бюрократом 24-го уровня", resp403.content.decode("utf-8"))
req404 = factory.get("/not-found")
resp404 = error_404(req404)
self.assertEqual(resp404.status_code, 404)
self.assertIn("Гипноузел не обнаружен", resp404.content.decode("utf-8"))
req500 = factory.get("/server-error")
resp500 = error_500(req500)
self.assertEqual(resp500.status_code, 500)
self.assertIn("Критический перегрев неокортекса", resp500.content.decode("utf-8"))