Ejemplo n.º 1
0
 def test_send_failure(self):
     handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                             template='x')
     logger = self.getLogger()
     logger.addHandler(handler)
     with OutputCapture() as output:
         logger.critical(u"message")
     assert 'TypeError: not all arguments converted' in output.captured
Ejemplo n.º 2
0
 def test_non_string_error_messages_dont_break_logging(self):
     self.handler = MailingLogger(
         '*****@*****.**',
         ('*****@*****.**', ),
     )
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical(object())
     self.assertEqual(len(DummySMTP.sent), 1)
Ejemplo n.º 3
0
 def test_specified_content_type(self):
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  content_type='foo/bar')
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical(u"message")
     m = DummySMTP.sent[0].msg
     # NB: we drop the 'foo'
     self.assertTrue('Content-Type: text/bar' in m, m)
Ejemplo n.º 4
0
 def test_template(self):
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  template="<before>%s<after>")
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical('message')
     m = DummySMTP.sent[0].msg
     self.assertTrue('Subject: message' in m, m)
     self.assertTrue('<before>message<after>' in m, m)
Ejemplo n.º 5
0
 def test_subject_contains_date(self):
     # set up logger
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  subject="%(asctime)s")
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical('message')
     self.assertEqual(len(DummySMTP.sent), 1)
     m = DummySMTP.sent[0].msg
     self.assertTrue('Subject: 2007-01-01 10:00:00,000' in m, m)
Ejemplo n.º 6
0
 def test_default_flood_limit(self):
     # set up logger
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ))
     logger = self.getLogger()
     logger.addHandler(self.handler)
     # log 11 entries
     for i in range(12):
         logger.critical('message')
     # only 1st 10 should get sent
     # +1 for the final warning
     self.assertEqual(len(DummySMTP.sent), 11)
Ejemplo n.º 7
0
 def test_default_charset(self):
     self.handler = MailingLogger(
         '*****@*****.**',
         ('*****@*****.**', ),
     )
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical(u"accentu\u00E9")
     m = DummySMTP.sent[0].msg
     # lovely, utf-8 encoded goodness
     self.assertTrue('Subject: =?utf-8?b?YWNjZW50dcOp?=' in m, m)
     self.assertTrue('Content-Type: text/plain; charset="utf-8"' in m, m)
     self.assertTrue('\nYWNjZW50dcOp' in m, m)
Ejemplo n.º 8
0
 def test_specified_charset(self):
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  charset='iso-8859-1')
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical(u"accentu\u00E9")
     m = DummySMTP.sent[0].msg
     # lovely, latin-1 encoded goodness
     self.assertTrue('\naccentu=E9' in m, m)
     self.assertTrue('Content-Type: text/plain; charset="iso-8859-1"' in m,
                     m)
     # no idea why MIMEText doesn't use iso-8859-1 here, best not to
     # argue...
     self.assertTrue('Subject: =?utf-8?b?YWNjZW50dcOp?=' in m, m)
Ejemplo n.º 9
0
 def test_headers_supplied_get_added_to_those_generated(self):
     # set up logger
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  headers={
                                      'From': 'someidiot',
                                      'to': 'someidiot'
                                  })
     logger = self.getLogger()
     logger.addHandler(self.handler)
     logger.critical('message')
     self.assertEqual(len(DummySMTP.sent), 1)
     m = DummySMTP.sent[0].msg
     # the headers specified in the `headers` parameter get added
     # to those generated by mailinglogger - be careful!
     self.assertTrue('From: [email protected]' in m)
     self.assertTrue('From: someidiot' in m)
     # however, if you try hard you *can* break things :-S
     self.assertTrue('To: [email protected]' in m)
     self.assertTrue('to: someidiot' in m)
Ejemplo n.º 10
0
 def test_flood_protection_bug(self):
     # set up logger
     self.handler = MailingLogger('*****@*****.**', ('*****@*****.**', ),
                                  flood_level=1)
     logger = self.getLogger()
     logger.addHandler(self.handler)
     # make it 11pm
     self.datetime.set(2007, 3, 15, 23)
     # paranoid check
     self.assertEqual(len(DummySMTP.sent), 0)
     # log until flood protection kicked in
     logger.critical('message1')
     logger.critical('message2')
     # check - 1 logged, 1 final warning
     self.assertEqual(len(DummySMTP.sent), 2)
     # check nothing emitted
     logger.critical('message3')
     self.assertEqual(len(DummySMTP.sent), 2)
     # advance time past midnight
     self.datetime.set(2007, 3, 15)
     # log again
     logger.critical('message4')
     # check we are emitted now!
     self.assertEqual(len(DummySMTP.sent), 3)