Esempio n. 1
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer('a', 'b')
     conn, addr = self.server.accept()
     self.channel = smtpd.SMTPChannel(self.server, conn, addr)
Esempio n. 2
0
 def test_params_rejected(self):
     server = DummyServer((socket_helper.HOST, 0), ('b', 0))
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr)
     self.write_line(channel, b'EHLO example')
     self.write_line(channel, b'MAIL from: <*****@*****.**> size=20')
     self.write_line(channel, b'RCPT to: <*****@*****.**> foo=bar')
     self.assertEqual(channel.socket.last, self.error_response)
Esempio n. 3
0
 def test_nothing_accepted(self):
     server = DummyServer((socket_helper.HOST, 0), ('b', 0))
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr)
     self.write_line(channel, b'EHLO example')
     self.write_line(channel, b'MAIL from: <*****@*****.**> size=20')
     self.write_line(channel, b'RCPT to: <*****@*****.**>')
     self.assertEqual(channel.socket.last, b'250 OK\r\n')
Esempio n. 4
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer('a', 'b')
     conn, addr = self.server.accept()
     # Set DATA size limit to 32 bytes for easy testing
     self.channel = smtpd.SMTPChannel(self.server, conn, addr, 32)
Esempio n. 5
0
 def test_with_enable_smtputf8_true(self):
     server = DummyServer((support.HOST, 0), ('b', 0), enable_SMTPUTF8=True)
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr, enable_SMTPUTF8=True)
     self.write_line(channel, b'EHLO example')
     self.write_line(
         channel,
         b'MAIL from: <*****@*****.**> size=20 body=8bitmime smtputf8')
     self.assertEqual(channel.socket.last, b'250 OK\r\n')
Esempio n. 6
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer((support.HOST, 0), ('b', 0),
                               enable_SMTPUTF8=True)
     conn, addr = self.server.accept()
     self.channel = smtpd.SMTPChannel(self.server, conn, addr,
                                      enable_SMTPUTF8=True)
Esempio n. 7
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer((support.HOST, 0), ('b', 0),
                               decode_data=True)
     conn, addr = self.server.accept()
     # Set DATA size limit to 32 bytes for easy testing
     self.channel = smtpd.SMTPChannel(self.server, conn, addr, 32,
                                      decode_data=True)
Esempio n. 8
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer((socket_helper.HOSTv6, 0), ('b', 0),
                               decode_data=True)
     conn, addr = self.server.accept()
     self.channel = smtpd.SMTPChannel(self.server,
                                      conn,
                                      addr,
                                      decode_data=True)
Esempio n. 9
0
 def setUp(self):
     smtpd.socket = asyncore.socket = mock_socket
     self.old_debugstream = smtpd.DEBUGSTREAM
     self.debug = smtpd.DEBUGSTREAM = io.StringIO()
     self.server = DummyServer((support.HOST, 0), ('b', 0),
                               decode_data=False)
     conn, addr = self.server.accept()
     # Set decode_data to False
     self.channel = smtpd.SMTPChannel(self.server,
                                      conn,
                                      addr,
                                      decode_data=False)
Esempio n. 10
0
    def test_process_message_unimplemented(self):
        server = smtpd.SMTPServer('a', 'b')
        conn, addr = server.accept()
        channel = smtpd.SMTPChannel(server, conn, addr)

        def write_line(line):
            channel.socket.queue_recv(line)
            channel.handle_read()

        write_line(b'MAIL From:eggs@example')
        write_line(b'RCPT To:spam@example')
        write_line(b'DATA')
        self.assertRaises(NotImplementedError, write_line, b'spam\r\n.\r\n')
Esempio n. 11
0
 def handle_accept(self):
     pair = self.accept()
     if not pair:
         return
     conn, addr = pair
     ui = uimod.ui.load()
     try:
         # wrap_socket() would block, but we don't care
         conn = sslutil.wrapserversocket(conn, ui, certfile=self._certfile)
     except ssl.SSLError:
         log('%s ssl error\n' % addr[0])
         conn.close()
         return
     smtpd.SMTPChannel(self, conn, addr)
Esempio n. 12
0
 def test_with_decode_data_true(self):
     server = DummyServer((support.HOST, 0), ('b', 0), decode_data=True)
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr, decode_data=True)
     self.write_line(channel, b'EHLO example')
     for line in [
             b'MAIL from: <*****@*****.**> size=20 SMTPUTF8',
             b'MAIL from: <*****@*****.**> size=20 SMTPUTF8 BODY=8BITMIME',
             b'MAIL from: <*****@*****.**> size=20 BODY=UNKNOWN',
             b'MAIL from: <*****@*****.**> size=20 body=8bitmime',
     ]:
         self.write_line(channel, line)
         self.assertEqual(channel.socket.last, self.error_response)
     self.write_line(channel, b'MAIL from: <*****@*****.**> size=20')
     self.assertEqual(channel.socket.last, b'250 OK\r\n')
Esempio n. 13
0
    def test_process_smtputf8_message_unimplemented(self):
        server = smtpd.SMTPServer((support.HOST, 0), ('b', 0),
                                  enable_SMTPUTF8=True)
        conn, addr = server.accept()
        channel = smtpd.SMTPChannel(server, conn, addr, enable_SMTPUTF8=True)

        def write_line(line):
            channel.socket.queue_recv(line)
            channel.handle_read()

        write_line(b'EHLO example')
        write_line(b'MAIL From: <eggs@example> BODY=8BITMIME SMTPUTF8')
        write_line(b'RCPT To: <spam@example>')
        write_line(b'DATA')
        self.assertRaises(NotImplementedError, write_line, b'spam\r\n.\r\n')
Esempio n. 14
0
 def test_process_message_with_decode_data_false(self):
     server = smtpd.DebuggingServer((support.HOST, 0), ('b', 0))
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr)
     with support.captured_stdout() as s:
         self.send_data(channel, b'From: test\n\nh\xc3\xa9llo\xff\n')
     stdout = s.getvalue()
     self.assertEqual(stdout, textwrap.dedent("""\
          ---------- MESSAGE FOLLOWS ----------
          b'From: test'
          b'X-Peer: peer-address'
          b''
          b'h\\xc3\\xa9llo\\xff'
          ------------ END MESSAGE ------------
          """))
Esempio n. 15
0
    def test_process_message_with_decode_data_true(self):
        server = smtpd.DebuggingServer((support.HOST, 0), ('b', 0),
                                       decode_data=True)
        conn, addr = server.accept()
        channel = smtpd.SMTPChannel(server, conn, addr, decode_data=True)
        with support.captured_stdout() as s:
            self.send_data(channel, b'From: test\n\nhello\n')
        stdout = s.getvalue()
        self.assertEqual(stdout, textwrap.dedent("""\
             ---------- MESSAGE FOLLOWS ----------
             From: test
             X-Peer: peer-address

             hello
             ------------ END MESSAGE ------------
             """))
Esempio n. 16
0
 def test_process_SMTPUTF8_message_with_enable_SMTPUTF8_true(self):
     server = smtpd.DebuggingServer((support.HOST, 0), ('b', 0),
                                    enable_SMTPUTF8=True)
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr, enable_SMTPUTF8=True)
     with support.captured_stdout() as s:
         self.send_data(channel, b'From: test\n\nh\xc3\xa9llo\xff\n',
                        enable_SMTPUTF8=True)
     stdout = s.getvalue()
     self.assertEqual(stdout, textwrap.dedent("""\
          ---------- MESSAGE FOLLOWS ----------
          mail options: ['BODY=8BITMIME', 'SMTPUTF8']
          b'From: test'
          b'X-Peer: peer-address'
          b''
          b'h\\xc3\\xa9llo\\xff'
          ------------ END MESSAGE ------------
          """))
Esempio n. 17
0
 def test_with_decode_data_false(self):
     server = DummyServer((socket_helper.HOST, 0), ('b', 0))
     conn, addr = server.accept()
     channel = smtpd.SMTPChannel(server, conn, addr)
     self.write_line(channel, b'EHLO example')
     for line in [
             b'MAIL from: <*****@*****.**> size=20 SMTPUTF8',
             b'MAIL from: <*****@*****.**> size=20 SMTPUTF8 BODY=8BITMIME',
     ]:
         self.write_line(channel, line)
         self.assertEqual(channel.socket.last, self.error_response)
     self.write_line(
         channel,
         b'MAIL from: <*****@*****.**> size=20 SMTPUTF8 BODY=UNKNOWN')
     self.assertEqual(
         channel.socket.last,
         b'501 Error: BODY can only be one of 7BIT, 8BITMIME\r\n')
     self.write_line(channel,
                     b'MAIL from: <*****@*****.**> size=20 body=8bitmime')
     self.assertEqual(channel.socket.last, b'250 OK\r\n')
Esempio n. 18
0
 def test_decode_data_default_warning(self):
     with self.assertWarns(DeprecationWarning):
         server = DummyServer((support.HOST, 0), ('b', 0))
     conn, addr = self.server.accept()
     with self.assertWarns(DeprecationWarning):
         smtpd.SMTPChannel(server, conn, addr)