예제 #1
0
 def test_deliver(self):
     result = self.mox.CreateMock(AsyncResult)
     env = Envelope('*****@*****.**', ['*****@*****.**'])
     env.parse(b'From: [email protected]\r\n\r\ntest test \x81\r\n')
     self.sock.sendall(b'LHLO there\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250-Hello\r\n250 8BITMIME\r\n')
     self.sock.sendall(b'MAIL FROM:<*****@*****.**>\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n')
     self.sock.sendall(b'RCPT TO:<*****@*****.**>\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n')
     self.sock.sendall(b'DATA\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'354 Go ahead\r\n')
     self.sock.sendall(b'From: [email protected]\r\n\r\ntest test \x81\r\n.\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n')
     result.set({'*****@*****.**': None})
     self.mox.ReplayAll()
     client = LmtpRelayClient('addr', self.queue, socket_creator=self._socket_creator, ehlo_as='there')
     client._connect()
     client._ehlo()
     client._deliver(result, env)
예제 #2
0
 def test_deliver_multircpt(self):
     result = self.mox.CreateMock(AsyncResult)
     env = Envelope('*****@*****.**', ['*****@*****.**', '*****@*****.**', '*****@*****.**'])
     env.parse(b'From: [email protected]\r\n\r\ntest test\r\n')
     self.sock.sendall(b'LHLO there\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250-Hello\r\n250 PIPELINING\r\n')
     self.sock.sendall(b'MAIL FROM:<*****@*****.**>\r\nRCPT TO:<*****@*****.**>\r\nRCPT TO:<*****@*****.**>\r\nRCPT TO:<*****@*****.**>\r\nDATA\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n250 Ok\r\n550 Nope\r\n250 Ok\r\n354 Go ahead\r\n')
     self.sock.sendall(b'From: [email protected]\r\n\r\ntest test\r\n.\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n450 Yikes\r\n')
     result.set({'*****@*****.**': Reply('250', 'Ok'),
                 '*****@*****.**': IsA(PermanentRelayError),
                 '*****@*****.**': IsA(TransientRelayError)})
     self.sock.sendall(b'RSET\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n')
     self.mox.ReplayAll()
     client = LmtpRelayClient('addr', self.queue, socket_creator=self._socket_creator, ehlo_as='there')
     client._connect()
     client._ehlo()
     client._deliver(result, env)
예제 #3
0
 def test_deliver_badpipeline(self):
     result = self.mox.CreateMock(AsyncResult)
     env = Envelope('*****@*****.**', ['*****@*****.**'])
     env.parse(b'From: [email protected]\r\n\r\ntest test\r\n')
     self.sock.sendall(b'LHLO test\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250-Hello\r\n250 PIPELINING\r\n')
     self.sock.sendall(
         b'MAIL FROM:<*****@*****.**>\r\nRCPT TO:<*****@*****.**>\r\nDATA\r\n'
     )
     self.sock.recv(
         IsA(int)).AndReturn(b'550 Not ok\r\n250 Ok\r\n354 Go ahead\r\n')
     result.set_exception(IsA(PermanentRelayError))
     self.sock.sendall(b'.\r\nRSET\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'550 Yikes\r\n250 Ok\r\n')
     self.mox.ReplayAll()
     client = LmtpRelayClient('addr',
                              self.queue,
                              socket_creator=self._socket_creator,
                              ehlo_as='test')
     client._connect()
     client._ehlo()
     client._deliver(result, env)
예제 #4
0
 def test_deliver_rset_exception(self):
     result = self.mox.CreateMock(AsyncResult)
     env = Envelope('*****@*****.**', ['*****@*****.**'])
     env.parse(b'From: [email protected]\r\n\r\ntest test\r\n')
     self.sock.sendall(b'LHLO test\r\n')
     self.sock.recv(IsA(int)).AndReturn(b'250-Hello\r\n250 PIPELINING\r\n')
     self.sock.sendall(
         b'MAIL FROM:<*****@*****.**>\r\nRCPT TO:<*****@*****.**>\r\nDATA\r\n'
     )
     self.sock.recv(IsA(int)).AndReturn(b'250 Ok\r\n250 Ok\r\n450 No!\r\n')
     result.set_exception(IsA(TransientRelayError))
     self.sock.sendall(b'RSET\r\n')
     self.sock.recv(IsA(int)).AndRaise(ConnectionLost)
     self.mox.ReplayAll()
     client = LmtpRelayClient('addr',
                              self.queue,
                              socket_creator=self._socket_creator,
                              ehlo_as='test')
     client._connect()
     client._ehlo()
     with self.assertRaises(ConnectionLost):
         client._deliver(result, env)