test_logging_handlers: Mock get_host instead of replacing it.

This makes the test cleaner and we don't have to overwrite the `get_host`
callable on `HttpRequest`.

Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
Zixuan James Li
2022-07-28 13:08:55 -04:00
committed by Tim Abbott
parent fd8f049a8d
commit 16b51ef437

View File

@@ -3,6 +3,7 @@ import sys
from functools import wraps from functools import wraps
from types import TracebackType from types import TracebackType
from typing import Callable, Dict, Iterator, NoReturn, Optional, Tuple, Type, Union, cast from typing import Callable, Dict, Iterator, NoReturn, Optional, Tuple, Type, Union, cast
from unittest import mock
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from django.conf import settings from django.conf import settings
@@ -174,20 +175,18 @@ class AdminNotifyHandlerTest(ZulipTestCase):
record.request.user = self.example_user("hamlet") record.request.user = self.example_user("hamlet")
# Now simulate a DisallowedHost exception # Now simulate a DisallowedHost exception
def get_host_error() -> str: with mock.patch.object(
raise Exception("Get host failure!") record.request, "get_host", side_effect=Exception("Get host failure!")
) as m:
orig_get_host = record.request.get_host report = self.run_handler(record)
record.request.get_host = get_host_error self.assertIn("host", report)
report = self.run_handler(record) self.assertIn("user", report)
record.request.get_host = orig_get_host assert isinstance(report["user"], dict)
self.assertIn("host", report) self.assertIn("user_email", report["user"])
self.assertIn("user", report) self.assertIn("user_role", report["user"])
assert isinstance(report["user"], dict) self.assertIn("message", report)
self.assertIn("user_email", report["user"]) self.assertIn("stack_trace", report)
self.assertIn("user_role", report["user"]) m.assert_called_once()
self.assertIn("message", report)
self.assertIn("stack_trace", report)
# Test an exception_filter exception # Test an exception_filter exception
with patch("zerver.logging_handlers.get_exception_reporter_filter", return_value=15): with patch("zerver.logging_handlers.get_exception_reporter_filter", return_value=15):