def test_quarantine_notice_w_date(self): import base64 from repoze.postoffice.message import Message class DummySend(object): def __init__(self): self.sent = [] def __call__(self, fromaddr, toaddrs, message): self.sent.append((fromaddr, toaddrs, message)) message = Message() message['To'] = 'Submissions <*****@*****.**>' message['From'] = 'Chris Rossi <*****@*****.**>' message['Date'] = 'Last Tuesday' queue = self._make_one() send = DummySend() queue.quarantine(message, (None, None, None), send, 'Oopsy Daisy <*****@*****.**>') self.assertEqual(len(send.sent), 1) fromaddr, toaddrs, notice = send.sent[0] self.assertEqual(fromaddr, 'Oopsy Daisy <*****@*****.**>') self.assertEqual(notice['From'], 'Oopsy Daisy <*****@*****.**>') self.assertEqual(toaddrs, ['Chris Rossi <*****@*****.**>']) self.assertEqual(notice['To'], 'Chris Rossi <*****@*****.**>') self.failUnless(notice['Subject'].startswith('An error has occurred')) self.assertEqual(notice['X-Postoffice'], 'Bounced') body = base64.b64decode(notice.get_payload()) self.failUnless('System administrators have been informed' in body) self.failUnless('Last Tuesday' in body)
def test_remove_from_quarantine_not_in_quarantine(self): msg = DummyMessage('Oops, my bad') queue = self._make_one() queue.quarantine(msg, (None, None, None)) self.assertEqual(queue.count_quarantined_messages(), 1) queue.remove_from_quarantine(msg) self.assertEqual(queue.count_quarantined_messages(), 0) self.assertRaises(ValueError, queue.remove_from_quarantine, msg)
def test_remove_from_quarantine_bad_id(self): msg = DummyMessage('Oops, my bad') queue = self._make_one() queue.quarantine(msg, (None, None, None)) self.assertEqual(queue.count_quarantined_messages(), 1) id = msg['X-Postoffice-Id'] queue.remove_from_quarantine(msg) msg['X-Postoffice-Id'] = id self.assertEqual(queue.count_quarantined_messages(), 0) self.assertRaises(ValueError, queue.remove_from_quarantine, msg)
def test_quarantine(self): queue = self._make_one() queue.quarantine(DummyMessage('Oh nos!'), ('OMG', 'WTH', '???')) queue.quarantine(DummyMessage('Woopsy!'), ('IRCC', 'FWIW', 'ROTFLMAO')) msgs = list(queue.get_quarantined_messages()) self.assertEqual(len(msgs), 2) msg, error = msgs.pop(0) self.assertEqual(msg, 'Oh nos!') self.assertEqual(error, ('OMG', 'WTH', '???')) msg, error = msgs.pop(0) self.assertEqual(msg, 'Woopsy!') self.assertEqual(error, ('IRCC', 'FWIW', 'ROTFLMAO')) self.assertEqual(queue.get_quarantined_message(msg['X-Postoffice-Id']), msg)
def test_quarantine(self): queue = self._make_one() queue.quarantine(DummyMessage('Oh nos!'), ('OMG', 'WTH', '???')) queue.quarantine(DummyMessage('Woopsy!'), ('IRCC', 'FWIW', 'ROTFLMAO')) msgs = list(queue.get_quarantined_messages()) self.assertEqual(len(msgs), 2) msg, error = msgs.pop(0) self.assertEqual(msg, 'Oh nos!') self.assertEqual(error, ('OMG', 'WTH', '???')) msg, error = msgs.pop(0) self.assertEqual(msg, 'Woopsy!') self.assertEqual(error, ('IRCC', 'FWIW', 'ROTFLMAO')) self.assertEqual( queue.get_quarantined_message(msg['X-Postoffice-Id']), msg )
def test_requeue_quarantined_messages(self): msg = DummyMessage('Oops, my bad.') queue = self._make_one() queue.quarantine(DummyMessage('Oh nos!'), ('OMG', 'WTH', '???')) queue.quarantine(msg, (None, None, None)) queue.quarantine(DummyMessage('Woopsy!'), ('IRCC', 'FWIW', 'ROTFLMAO')) self.assertEqual(len(queue), 0) self.assertEqual(len(list(queue.get_quarantined_messages())), 3) queue.requeue_quarantined_messages() self.assertEqual(len(queue), 3) self.assertEqual(len(list(queue.get_quarantined_messages())), 0)
def test_remove_from_quarantine(self): msg = DummyMessage('Oops, my bad.') queue = self._make_one() queue.quarantine(DummyMessage('Oh nos!'), ('OMG', 'WTH', '???')) queue.quarantine(msg, (None, None, None)) queue.quarantine(DummyMessage('Woopsy!'), ('IRCC', 'FWIW', 'ROTFLMAO')) msgs = list(queue.get_quarantined_messages()) self.assertEqual(len(msgs), 3) queue.remove_from_quarantine(msg) msgs = list(queue.get_quarantined_messages()) self.assertEqual(len(msgs), 2) msg, error = msgs.pop(0) self.assertEqual(msg, 'Oh nos!') self.assertEqual(error, ('OMG', 'WTH', '???')) msg, error = msgs.pop(0) self.assertEqual(msg, 'Woopsy!') self.assertEqual(error, ('IRCC', 'FWIW', 'ROTFLMAO'))