コード例 #1
0
    def test_ini_parse(self):
        ini_path = os.path.join(self.dir, "qp.ini")
        f = open(ini_path, "w")
        f.write(test_ini)
        f.close()

        # Override most everything
        cmdline = """qp --config %s""" % ini_path
        app = ConsoleApp(cmdline.split())
        self.assertEqual("qp", app.script_name)
        self.assertFalse(app._error)
        self.assertEqual("hammer/dont/hurt/em", app.queue_path)
        self.assertEqual("testhost", app.hostname)
        self.assertEqual(2525, app.port)
        self.assertEqual("Chris", app.username)
        self.assertEqual("Rossi", app.password)
        self.assertFalse(app.force_tls)
        self.assertTrue(app.no_tls)

        # Override nothing, make sure defaults come through
        f = open(ini_path, "w")
        f.write("[app:qp]\n\nqueue_path=foo\n")
        f.close()

        cmdline = """qp --config %s %s""" % (ini_path, self.dir)
        app = ConsoleApp(cmdline.split())
        self.assertEqual("qp", app.script_name)
        self.assertFalse(app._error)
        self.assertEqual(self.dir, app.queue_path)
        self.assertEqual("localhost", app.hostname)
        self.assertEqual(25, app.port)
        self.assertEqual(None, app.username)
        self.assertEqual(None, app.password)
        self.assertFalse(app.force_tls)
        self.assertFalse(app.no_tls)
コード例 #2
0
    def test_delivery(self):
        from email.message import Message
        from_addr = "*****@*****.**"
        to_addr = "*****@*****.**"
        message = Message()
        message['Subject'] = 'Pants'
        message.set_payload('Nice pants, mister!')

        import transaction
        transaction.manager.begin()
        self.delivery.send(from_addr, to_addr, message)
        self.delivery.send(from_addr, to_addr, message)
        transaction.manager.commit()

        queued_messages = [m for m in self.maildir]
        self.assertEqual(2, len(queued_messages))
        self.assertEqual(0, len(self.mailer.sent_messages))

        cmdline = "qp %s" % self.queue_dir
        app = ConsoleApp(cmdline.split())
        app.mailer = self.mailer
        app.main()

        queued_messages = [m for m in self.maildir]
        self.assertEqual(0, len(queued_messages))
        self.assertEqual(2, len(self.mailer.sent_messages))
コード例 #3
0
    def test_delivery(self):
        from email.message import Message
        from_addr = "*****@*****.**"
        to_addr = "*****@*****.**"
        message = Message()
        message['Subject'] = 'Pants'
        message.set_payload('Nice pants, mister!')

        import transaction
        transaction.manager.begin()
        self.delivery.send(from_addr, to_addr, message)
        self.delivery.send(from_addr, to_addr, message)
        transaction.manager.commit()

        queued_messages = [m for m in self.maildir]
        self.assertEqual(2, len(queued_messages))
        self.assertEqual(0, len(self.mailer.sent_messages))

        cmdline = "qp %s" % self.queue_dir
        app = ConsoleApp(cmdline.split())
        app.mailer = self.mailer
        app.main()

        queued_messages = [m for m in self.maildir]
        self.assertEqual(0, len(queued_messages))
        self.assertEqual(2, len(self.mailer.sent_messages))
コード例 #4
0
    def test_args_processing(self):
        # Simplest case that works
        cmdline = "qp %s" % self.dir
        app = ConsoleApp(cmdline.split())
        self.assertEquals("qp", app.script_name)
        self.assertFalse(app._error)
        self.assertEquals(self.dir, app.queue_path)
        self.assertFalse(app.daemon)
        self.assertEquals(3, app.interval)
        self.assertEquals("localhost", app.hostname)
        self.assertEquals(25, app.port)
        self.assertEquals(None, app.username)
        self.assertEquals(None, app.password)
        self.assertFalse(app.force_tls)
        self.assertFalse(app.no_tls)

        # Simplest case that doesn't work
        cmdline = "qp"
        app = ConsoleApp(cmdline.split())
        self.assertEquals("qp", app.script_name)
        self.assertTrue(app._error)
        self.assertEquals(None, app.queue_path)
        self.assertFalse(app.daemon)
        self.assertEquals(3, app.interval)
        self.assertEquals("localhost", app.hostname)
        self.assertEquals(25, app.port)
        self.assertEquals(None, app.username)
        self.assertEquals(None, app.password)
        self.assertFalse(app.force_tls)
        self.assertFalse(app.no_tls)

        # Use (almost) all of the options
        cmdline = """qp --daemon --interval 7 --hostname foo --port 75 
                        --username chris --password rossi --force-tls 
                        %s""" % self.dir
        app = ConsoleApp(cmdline.split())
        self.assertEquals("qp", app.script_name)
        self.assertFalse(app._error)
        self.assertEquals(self.dir, app.queue_path)
        self.assertTrue(app.daemon)
        self.assertEquals(7, app.interval)
        self.assertEquals("foo", app.hostname)
        self.assertEquals(75, app.port)
        self.assertEquals("chris", app.username)
        self.assertEquals("rossi", app.password)
        self.assertTrue(app.force_tls)
        self.assertFalse(app.no_tls)

        # Test username without password
        cmdline = "qp --username chris %s" % self.dir
        app = ConsoleApp(cmdline.split())
        self.assertTrue(app._error)

        # Test force_tls and no_tls
        comdline = "qp --force-tls --no-tls %s" % self.dir
        self.assertTrue(app._error)
コード例 #5
0
 def _captureLoggedErrors(self, cmdline):
     from repoze.sendmail import queue
     logged = []
     monkey = _Monkey(queue, _log_error=logged.append)
     # py 25 compat, can't use with statement
     exc_info = ()
     try:
         monkey.__enter__()
         app = ConsoleApp(cmdline.split())
     except:  # pragma: no cover
         exc_info = sys.exc_info()
     monkey.__exit__(*exc_info)
     return app, logged
コード例 #6
0
 def test_args_simple_ok(self):
     # Simplest case that works
     cmdline = "qp %s" % self.dir
     app = ConsoleApp(cmdline.split())
     self.assertEqual("qp", app.script_name)
     self.assertFalse(app._error)
     self.assertEqual(self.dir, app.queue_path)
     self.assertEqual("localhost", app.hostname)
     self.assertEqual(25, app.port)
     self.assertEqual(None, app.username)
     self.assertEqual(None, app.password)
     self.assertFalse(app.force_tls)
     self.assertFalse(app.no_tls)
     self.assertFalse(app.debug_smtp)
コード例 #7
0
 def test_args_full_monty(self):
     # Use (almost) all of the options
     cmdline = """qp --hostname foo --port 75
                     --username chris --password rossi --force-tls
                     --debug-smtp
                     %s""" % self.dir
     app = ConsoleApp(cmdline.split())
     self.assertEquals("qp", app.script_name)
     self.assertFalse(app._error)
     self.assertEquals(self.dir, app.queue_path)
     self.assertEquals("foo", app.hostname)
     self.assertEquals(75, app.port)
     self.assertEquals("chris", app.username)
     self.assertEquals("rossi", app.password)
     self.assertTrue(app.force_tls)
     self.assertFalse(app.no_tls)
     self.assertTrue(app.debug_smtp)