smtp_test.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import os.path
  2. from sentry.models import Activity
  3. from sentry.services.smtp import STATUS, SentrySMTPServer
  4. from sentry.testutils import TestCase
  5. from sentry.utils.email import email_to_group_id, group_id_to_email
  6. with open(os.path.join(os.path.dirname(__file__), "email.txt")) as f:
  7. fixture = f.read()
  8. class SentrySMTPTest(TestCase):
  9. def setUp(self):
  10. self.address = ("0.0.0.0", 0)
  11. self.server = SentrySMTPServer(*self.address)
  12. self.mailto = group_id_to_email(self.group.pk)
  13. self.event # side effect of generating an event
  14. def test_decode_email_address(self):
  15. self.assertEqual(email_to_group_id(self.mailto), self.group.pk)
  16. def test_process_message(self):
  17. with self.tasks():
  18. self.assertEqual(
  19. self.server.process_message("", self.user.email, [self.mailto], fixture),
  20. STATUS[200],
  21. )
  22. self.assertEqual(Activity.objects.filter(type=Activity.NOTE)[0].data, {"text": "sup"})
  23. def test_process_message_no_recipients(self):
  24. with self.tasks():
  25. self.assertEqual(
  26. self.server.process_message("", self.user.email, [], fixture), STATUS[550]
  27. )
  28. def test_process_message_too_long(self):
  29. with self.tasks():
  30. self.assertEqual(
  31. self.server.process_message("", self.user.email, [self.mailto], fixture * 100),
  32. STATUS[552],
  33. )
  34. self.assertEqual(Activity.objects.count(), 0)
  35. def test_process_message_invalid_email(self):
  36. with self.tasks():
  37. self.assertEqual(
  38. self.server.process_message("", self.user.email, ["lol@localhost"], fixture),
  39. STATUS[550],
  40. )