error-bot: Remove ERROR_BOT support.

This isn't sufficiently useful to keep the added complexity.  Users
should use the email error reporting, or set up Sentry error
reporting.
This commit is contained in:
Alex Vandiver
2023-04-11 17:51:14 +00:00
committed by Tim Abbott
parent db07b8668f
commit d888bb3df2
11 changed files with 25 additions and 111 deletions

View File

@@ -20,7 +20,7 @@ from zerver.lib.email_mirror import (
get_missed_message_token_from_address,
is_forwarded,
is_missed_message_address,
log_and_report,
log_error,
process_message,
process_missed_message,
redact_email_address,
@@ -1688,52 +1688,37 @@ class TestEmailMirrorProcessMessageNoValidRecipient(ZulipTestCase):
incoming_valid_message["To"] = "address@wrongdomain, address@notzulip"
incoming_valid_message["Reply-to"] = self.example_email("othello")
with mock.patch("zerver.lib.email_mirror.log_and_report") as mock_log_and_report:
with mock.patch("zerver.lib.email_mirror.log_error") as mock_log_error:
process_message(incoming_valid_message)
mock_log_and_report.assert_called_with(
mock_log_error.assert_called_with(
incoming_valid_message, "Missing recipient in mirror email", None
)
class TestEmailMirrorLogAndReport(ZulipTestCase):
def test_log_and_report(self) -> None:
def test_log_error(self) -> None:
user_profile = self.example_user("hamlet")
self.login_user(user_profile)
self.subscribe(user_profile, "errors")
stream = get_stream("Denmark", user_profile.realm)
stream_to_address = encode_email_address(stream)
address = Address(addr_spec=stream_to_address)
scrubbed_address = Address(
username="X" * len(address.username), domain=address.domain
).addr_spec
incoming_valid_message = EmailMessage()
incoming_valid_message.set_content("Test body")
incoming_valid_message["Subject"] = "Test subject"
incoming_valid_message["From"] = self.example_email("hamlet")
incoming_valid_message["To"] = stream_to_address
with self.assertLogs("zerver.lib.email_mirror", "ERROR") as error_log:
log_and_report(incoming_valid_message, "test error message", stream_to_address)
log_error(incoming_valid_message, "test error message", stream_to_address)
self.assertEqual(
error_log.output,
[
f"ERROR:zerver.lib.email_mirror:Sender: hamlet@zulip.com\nTo: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@testserver <Address to stream id: {stream.id}>\ntest error message"
],
)
message = most_recent_message(user_profile)
self.assertEqual("email mirror error", message.topic_name())
msg_content = message.content.strip("~").strip()
expected_content = "Sender: {}\nTo: {} <Address to stream id: {}>\ntest error message"
expected_content = expected_content.format(
self.example_email("hamlet"), scrubbed_address, stream.id
)
self.assertEqual(msg_content, expected_content)
with self.assertLogs("zerver.lib.email_mirror", "ERROR") as error_log:
log_and_report(incoming_valid_message, "test error message", None)
log_error(incoming_valid_message, "test error message", None)
self.assertEqual(
error_log.output,
[
@@ -1741,25 +1726,6 @@ class TestEmailMirrorLogAndReport(ZulipTestCase):
],
)
message = most_recent_message(user_profile)
self.assertEqual("email mirror error", message.topic_name())
msg_content = message.content.strip("~").strip()
expected_content = "Sender: {}\nTo: No recipient found\ntest error message"
expected_content = expected_content.format(self.example_email("hamlet"))
self.assertEqual(msg_content, expected_content)
def test_log_and_report_no_errorbot(self) -> None:
with self.settings(ERROR_BOT=None):
incoming_valid_message = EmailMessage()
incoming_valid_message.set_content("Test body")
incoming_valid_message["Subject"] = "Test subject"
incoming_valid_message["From"] = self.example_email("hamlet")
with self.assertLogs(logger_name, level="ERROR") as m:
log_and_report(incoming_valid_message, "test error message", None)
expected_content = "Sender: {}\nTo: No recipient found\ntest error message"
expected_content = expected_content.format(self.example_email("hamlet"))
self.assertEqual(m.output, [f"ERROR:{logger_name}:{expected_content}"])
def test_redact_email_address(self) -> None:
user_profile = self.example_user("hamlet")
self.login_user(user_profile)

View File

@@ -997,9 +997,9 @@ class RealmTest(ZulipTestCase):
realm=realm, name=UserGroup.FULL_MEMBERS_GROUP_NAME, is_system_group=True
)
self.assert_length(UserGroupMembership.objects.filter(user_group=members_system_group), 10)
self.assert_length(UserGroupMembership.objects.filter(user_group=members_system_group), 9)
self.assert_length(
UserGroupMembership.objects.filter(user_group=full_members_system_group), 10
UserGroupMembership.objects.filter(user_group=full_members_system_group), 9
)
self.assertEqual(realm.waiting_period_threshold, 0)

View File

@@ -4431,7 +4431,7 @@ class SubscriptionAPITest(ZulipTestCase):
)
self.assertNotIn(self.example_user("polonius").id, add_peer_event["users"])
self.assert_length(add_peer_event["users"], 12)
self.assert_length(add_peer_event["users"], 11)
self.assertEqual(add_peer_event["event"]["type"], "subscription")
self.assertEqual(add_peer_event["event"]["op"], "peer_add")
self.assertEqual(add_peer_event["event"]["user_ids"], [self.user_profile.id])
@@ -4462,7 +4462,7 @@ class SubscriptionAPITest(ZulipTestCase):
# We don't send a peer_add event to othello
self.assertNotIn(user_profile.id, add_peer_event["users"])
self.assertNotIn(self.example_user("polonius").id, add_peer_event["users"])
self.assert_length(add_peer_event["users"], 12)
self.assert_length(add_peer_event["users"], 11)
self.assertEqual(add_peer_event["event"]["type"], "subscription")
self.assertEqual(add_peer_event["event"]["op"], "peer_add")
self.assertEqual(add_peer_event["event"]["user_ids"], [user_profile.id])

View File

@@ -333,11 +333,11 @@ class UserGroupAPITestCase(UserGroupTestCase):
user_group = UserGroup.objects.get(name="support")
# Test success
self.assertEqual(UserGroup.objects.filter(realm=hamlet.realm).count(), 10)
self.assertEqual(UserGroupMembership.objects.count(), 47)
self.assertEqual(UserGroupMembership.objects.count(), 45)
result = self.client_delete(f"/json/user_groups/{user_group.id}")
self.assert_json_success(result)
self.assertEqual(UserGroup.objects.filter(realm=hamlet.realm).count(), 9)
self.assertEqual(UserGroupMembership.objects.count(), 46)
self.assertEqual(UserGroupMembership.objects.count(), 44)
# Test when invalid user group is supplied
result = self.client_delete("/json/user_groups/1111")
self.assert_json_error(result, "Invalid user group")