Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(322)

Unified Diff: third_party/twisted_8_1/twisted/mail/test/test_pop3client.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/mail/test/test_pop3client.py
diff --git a/third_party/twisted_8_1/twisted/mail/test/test_pop3client.py b/third_party/twisted_8_1/twisted/mail/test/test_pop3client.py
deleted file mode 100644
index e2c3b8d733421bcddbcbce99f80332bdeebbf874..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/mail/test/test_pop3client.py
+++ /dev/null
@@ -1,573 +0,0 @@
-# -*- test-case-name: twisted.mail.test.test_pop3client -*-
-# Copyright (c) 2001-2004 Divmod Inc.
-# See LICENSE for details.
-
-from zope.interface import directlyProvides
-
-from twisted.mail.pop3 import AdvancedPOP3Client as POP3Client
-from twisted.mail.pop3 import InsecureAuthenticationDisallowed
-from twisted.mail.pop3 import ServerErrorResponse
-from twisted.protocols import loopback
-from twisted.internet import reactor, defer, error, protocol, interfaces
-from twisted.python import log
-
-from twisted.trial import unittest
-from twisted.test.proto_helpers import StringTransport
-from twisted.protocols import basic
-
-from twisted.mail.test import pop3testserver
-
-try:
- from twisted.test.ssl_helpers import ClientTLSContext, ServerTLSContext
-except ImportError:
- ClientTLSContext = ServerTLSContext = None
-
-
-class StringTransportWithConnectionLosing(StringTransport):
- def loseConnection(self):
- self.protocol.connectionLost(error.ConnectionDone())
-
-
-capCache = {"TOP": None, "LOGIN-DELAY": "180", "UIDL": None, \
- "STLS": None, "USER": None, "SASL": "LOGIN"}
-def setUp(greet=True):
- p = POP3Client()
-
- # Skip the CAPA login will issue if it doesn't already have a
- # capability cache
- p._capCache = capCache
-
- t = StringTransportWithConnectionLosing()
- t.protocol = p
- p.makeConnection(t)
-
- if greet:
- p.dataReceived('+OK Hello!\r\n')
-
- return p, t
-
-def strip(f):
- return lambda result, f=f: f()
-
-class POP3ClientLoginTestCase(unittest.TestCase):
- def testNegativeGreeting(self):
- p, t = setUp(greet=False)
- p.allowInsecureLogin = True
- d = p.login("username", "password")
- p.dataReceived('-ERR Offline for maintenance\r\n')
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "Offline for maintenance"))
-
-
- def testOkUser(self):
- p, t = setUp()
- d = p.user("username")
- self.assertEquals(t.value(), "USER username\r\n")
- p.dataReceived("+OK send password\r\n")
- return d.addCallback(self.assertEqual, "send password")
-
- def testBadUser(self):
- p, t = setUp()
- d = p.user("username")
- self.assertEquals(t.value(), "USER username\r\n")
- p.dataReceived("-ERR account suspended\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "account suspended"))
-
- def testOkPass(self):
- p, t = setUp()
- d = p.password("password")
- self.assertEquals(t.value(), "PASS password\r\n")
- p.dataReceived("+OK you're in!\r\n")
- return d.addCallback(self.assertEqual, "you're in!")
-
- def testBadPass(self):
- p, t = setUp()
- d = p.password("password")
- self.assertEquals(t.value(), "PASS password\r\n")
- p.dataReceived("-ERR go away\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "go away"))
-
- def testOkLogin(self):
- p, t = setUp()
- p.allowInsecureLogin = True
- d = p.login("username", "password")
- self.assertEquals(t.value(), "USER username\r\n")
- p.dataReceived("+OK go ahead\r\n")
- self.assertEquals(t.value(), "USER username\r\nPASS password\r\n")
- p.dataReceived("+OK password accepted\r\n")
- return d.addCallback(self.assertEqual, "password accepted")
-
- def testBadPasswordLogin(self):
- p, t = setUp()
- p.allowInsecureLogin = True
- d = p.login("username", "password")
- self.assertEquals(t.value(), "USER username\r\n")
- p.dataReceived("+OK waiting on you\r\n")
- self.assertEquals(t.value(), "USER username\r\nPASS password\r\n")
- p.dataReceived("-ERR bogus login\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "bogus login"))
-
- def testBadUsernameLogin(self):
- p, t = setUp()
- p.allowInsecureLogin = True
- d = p.login("username", "password")
- self.assertEquals(t.value(), "USER username\r\n")
- p.dataReceived("-ERR bogus login\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "bogus login"))
-
- def testServerGreeting(self):
- p, t = setUp(greet=False)
- p.dataReceived("+OK lalala this has no challenge\r\n")
- self.assertEquals(p.serverChallenge, None)
-
- def testServerGreetingWithChallenge(self):
- p, t = setUp(greet=False)
- p.dataReceived("+OK <here is the challenge>\r\n")
- self.assertEquals(p.serverChallenge, "<here is the challenge>")
-
- def testAPOP(self):
- p, t = setUp(greet=False)
- p.dataReceived("+OK <challenge string goes here>\r\n")
- d = p.login("username", "password")
- self.assertEquals(t.value(), "APOP username f34f1e464d0d7927607753129cabe39a\r\n")
- p.dataReceived("+OK Welcome!\r\n")
- return d.addCallback(self.assertEqual, "Welcome!")
-
- def testInsecureLoginRaisesException(self):
- p, t = setUp(greet=False)
- p.dataReceived("+OK Howdy\r\n")
- d = p.login("username", "password")
- self.failIf(t.value())
- return self.assertFailure(
- d, InsecureAuthenticationDisallowed)
-
-
- def testSSLTransportConsideredSecure(self):
- """
- If a server doesn't offer APOP but the transport is secured using
- SSL or TLS, a plaintext login should be allowed, not rejected with
- an InsecureAuthenticationDisallowed exception.
- """
- p, t = setUp(greet=False)
- directlyProvides(t, interfaces.ISSLTransport)
- p.dataReceived("+OK Howdy\r\n")
- d = p.login("username", "password")
- self.assertEquals(t.value(), "USER username\r\n")
- t.clear()
- p.dataReceived("+OK\r\n")
- self.assertEquals(t.value(), "PASS password\r\n")
- p.dataReceived("+OK\r\n")
- return d
-
-
-
-class ListConsumer:
- def __init__(self):
- self.data = {}
-
- def consume(self, (item, value)):
- self.data.setdefault(item, []).append(value)
-
-class MessageConsumer:
- def __init__(self):
- self.data = []
-
- def consume(self, line):
- self.data.append(line)
-
-class POP3ClientListTestCase(unittest.TestCase):
- def testListSize(self):
- p, t = setUp()
- d = p.listSize()
- self.assertEquals(t.value(), "LIST\r\n")
- p.dataReceived("+OK Here it comes\r\n")
- p.dataReceived("1 3\r\n2 2\r\n3 1\r\n.\r\n")
- return d.addCallback(self.assertEqual, [3, 2, 1])
-
- def testListSizeWithConsumer(self):
- p, t = setUp()
- c = ListConsumer()
- f = c.consume
- d = p.listSize(f)
- self.assertEquals(t.value(), "LIST\r\n")
- p.dataReceived("+OK Here it comes\r\n")
- p.dataReceived("1 3\r\n2 2\r\n3 1\r\n")
- self.assertEquals(c.data, {0: [3], 1: [2], 2: [1]})
- p.dataReceived("5 3\r\n6 2\r\n7 1\r\n")
- self.assertEquals(c.data, {0: [3], 1: [2], 2: [1], 4: [3], 5: [2], 6: [1]})
- p.dataReceived(".\r\n")
- return d.addCallback(self.assertIdentical, f)
-
- def testFailedListSize(self):
- p, t = setUp()
- d = p.listSize()
- self.assertEquals(t.value(), "LIST\r\n")
- p.dataReceived("-ERR Fatal doom server exploded\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "Fatal doom server exploded"))
-
- def testListUID(self):
- p, t = setUp()
- d = p.listUID()
- self.assertEquals(t.value(), "UIDL\r\n")
- p.dataReceived("+OK Here it comes\r\n")
- p.dataReceived("1 abc\r\n2 def\r\n3 ghi\r\n.\r\n")
- return d.addCallback(self.assertEqual, ["abc", "def", "ghi"])
-
- def testListUIDWithConsumer(self):
- p, t = setUp()
- c = ListConsumer()
- f = c.consume
- d = p.listUID(f)
- self.assertEquals(t.value(), "UIDL\r\n")
- p.dataReceived("+OK Here it comes\r\n")
- p.dataReceived("1 xyz\r\n2 abc\r\n5 mno\r\n")
- self.assertEquals(c.data, {0: ["xyz"], 1: ["abc"], 4: ["mno"]})
- p.dataReceived(".\r\n")
- return d.addCallback(self.assertIdentical, f)
-
- def testFailedListUID(self):
- p, t = setUp()
- d = p.listUID()
- self.assertEquals(t.value(), "UIDL\r\n")
- p.dataReceived("-ERR Fatal doom server exploded\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "Fatal doom server exploded"))
-
-class POP3ClientMessageTestCase(unittest.TestCase):
- def testRetrieve(self):
- p, t = setUp()
- d = p.retrieve(7)
- self.assertEquals(t.value(), "RETR 8\r\n")
- p.dataReceived("+OK Message incoming\r\n")
- p.dataReceived("La la la here is message text\r\n")
- p.dataReceived("..Further message text tra la la\r\n")
- p.dataReceived(".\r\n")
- return d.addCallback(
- self.assertEqual,
- ["La la la here is message text",
- ".Further message text tra la la"])
-
- def testRetrieveWithConsumer(self):
- p, t = setUp()
- c = MessageConsumer()
- f = c.consume
- d = p.retrieve(7, f)
- self.assertEquals(t.value(), "RETR 8\r\n")
- p.dataReceived("+OK Message incoming\r\n")
- p.dataReceived("La la la here is message text\r\n")
- p.dataReceived("..Further message text\r\n.\r\n")
- return d.addCallback(self._cbTestRetrieveWithConsumer, f, c)
-
- def _cbTestRetrieveWithConsumer(self, result, f, c):
- self.assertIdentical(result, f)
- self.assertEquals(c.data, ["La la la here is message text",
- ".Further message text"])
-
- def testPartialRetrieve(self):
- p, t = setUp()
- d = p.retrieve(7, lines=2)
- self.assertEquals(t.value(), "TOP 8 2\r\n")
- p.dataReceived("+OK 2 lines on the way\r\n")
- p.dataReceived("Line the first! Woop\r\n")
- p.dataReceived("Line the last! Bye\r\n")
- p.dataReceived(".\r\n")
- return d.addCallback(
- self.assertEqual,
- ["Line the first! Woop",
- "Line the last! Bye"])
-
- def testPartialRetrieveWithConsumer(self):
- p, t = setUp()
- c = MessageConsumer()
- f = c.consume
- d = p.retrieve(7, f, lines=2)
- self.assertEquals(t.value(), "TOP 8 2\r\n")
- p.dataReceived("+OK 2 lines on the way\r\n")
- p.dataReceived("Line the first! Woop\r\n")
- p.dataReceived("Line the last! Bye\r\n")
- p.dataReceived(".\r\n")
- return d.addCallback(self._cbTestPartialRetrieveWithConsumer, f, c)
-
- def _cbTestPartialRetrieveWithConsumer(self, result, f, c):
- self.assertIdentical(result, f)
- self.assertEquals(c.data, ["Line the first! Woop",
- "Line the last! Bye"])
-
- def testFailedRetrieve(self):
- p, t = setUp()
- d = p.retrieve(0)
- self.assertEquals(t.value(), "RETR 1\r\n")
- p.dataReceived("-ERR Fatal doom server exploded\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "Fatal doom server exploded"))
-
-
- def test_concurrentRetrieves(self):
- """
- Issue three retrieve calls immediately without waiting for any to
- succeed and make sure they all do succeed eventually.
- """
- p, t = setUp()
- messages = [
- p.retrieve(i).addCallback(
- self.assertEquals,
- ["First line of %d." % (i + 1,),
- "Second line of %d." % (i + 1,)])
- for i
- in range(3)]
-
- for i in range(1, 4):
- self.assertEquals(t.value(), "RETR %d\r\n" % (i,))
- t.clear()
- p.dataReceived("+OK 2 lines on the way\r\n")
- p.dataReceived("First line of %d.\r\n" % (i,))
- p.dataReceived("Second line of %d.\r\n" % (i,))
- self.assertEquals(t.value(), "")
- p.dataReceived(".\r\n")
-
- return defer.DeferredList(messages, fireOnOneErrback=True)
-
-
-
-class POP3ClientMiscTestCase(unittest.TestCase):
- def testCapability(self):
- p, t = setUp()
- d = p.capabilities(useCache=0)
- self.assertEquals(t.value(), "CAPA\r\n")
- p.dataReceived("+OK Capabilities on the way\r\n")
- p.dataReceived("X\r\nY\r\nZ\r\nA 1 2 3\r\nB 1 2\r\nC 1\r\n.\r\n")
- return d.addCallback(
- self.assertEqual,
- {"X": None, "Y": None, "Z": None,
- "A": ["1", "2", "3"],
- "B": ["1", "2"],
- "C": ["1"]})
-
- def testCapabilityError(self):
- p, t = setUp()
- d = p.capabilities(useCache=0)
- self.assertEquals(t.value(), "CAPA\r\n")
- p.dataReceived("-ERR This server is lame!\r\n")
- return d.addCallback(self.assertEquals, {})
-
- def testStat(self):
- p, t = setUp()
- d = p.stat()
- self.assertEquals(t.value(), "STAT\r\n")
- p.dataReceived("+OK 1 1212\r\n")
- return d.addCallback(self.assertEqual, (1, 1212))
-
- def testStatError(self):
- p, t = setUp()
- d = p.stat()
- self.assertEquals(t.value(), "STAT\r\n")
- p.dataReceived("-ERR This server is lame!\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "This server is lame!"))
-
- def testNoop(self):
- p, t = setUp()
- d = p.noop()
- self.assertEquals(t.value(), "NOOP\r\n")
- p.dataReceived("+OK No-op to you too!\r\n")
- return d.addCallback(self.assertEqual, "No-op to you too!")
-
- def testNoopError(self):
- p, t = setUp()
- d = p.noop()
- self.assertEquals(t.value(), "NOOP\r\n")
- p.dataReceived("-ERR This server is lame!\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "This server is lame!"))
-
- def testRset(self):
- p, t = setUp()
- d = p.reset()
- self.assertEquals(t.value(), "RSET\r\n")
- p.dataReceived("+OK Reset state\r\n")
- return d.addCallback(self.assertEqual, "Reset state")
-
- def testRsetError(self):
- p, t = setUp()
- d = p.reset()
- self.assertEquals(t.value(), "RSET\r\n")
- p.dataReceived("-ERR This server is lame!\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "This server is lame!"))
-
- def testDelete(self):
- p, t = setUp()
- d = p.delete(3)
- self.assertEquals(t.value(), "DELE 4\r\n")
- p.dataReceived("+OK Hasta la vista\r\n")
- return d.addCallback(self.assertEqual, "Hasta la vista")
-
- def testDeleteError(self):
- p, t = setUp()
- d = p.delete(3)
- self.assertEquals(t.value(), "DELE 4\r\n")
- p.dataReceived("-ERR Winner is not you.\r\n")
- return self.assertFailure(
- d, ServerErrorResponse).addCallback(
- lambda exc: self.assertEquals(exc.args[0], "Winner is not you."))
-
-
-class SimpleClient(POP3Client):
- def __init__(self, deferred, contextFactory = None):
- self.deferred = deferred
- self.allowInsecureLogin = True
-
- def serverGreeting(self, challenge):
- self.deferred.callback(None)
-
-class POP3HelperMixin:
- serverCTX = None
- clientCTX = None
-
- def setUp(self):
- d = defer.Deferred()
- self.server = pop3testserver.POP3TestServer(contextFactory=self.serverCTX)
- self.client = SimpleClient(d, contextFactory=self.clientCTX)
- self.client.timeout = 30
- self.connected = d
-
- def tearDown(self):
- del self.server
- del self.client
- del self.connected
-
- def _cbStopClient(self, ignore):
- self.client.transport.loseConnection()
-
- def _ebGeneral(self, failure):
- self.client.transport.loseConnection()
- self.server.transport.loseConnection()
- return failure
-
- def loopback(self):
- return loopback.loopbackTCP(self.server, self.client, noisy=False)
-
-
-class TLSServerFactory(protocol.ServerFactory):
- class protocol(basic.LineReceiver):
- context = None
- output = []
- def connectionMade(self):
- self.factory.input = []
- self.output = self.output[:]
- map(self.sendLine, self.output.pop(0))
- def lineReceived(self, line):
- self.factory.input.append(line)
- map(self.sendLine, self.output.pop(0))
- if line == 'STLS':
- self.transport.startTLS(self.context)
-
-
-class POP3TLSTestCase(unittest.TestCase):
- def testStartTLS(self):
- sf = TLSServerFactory()
- sf.protocol.output = [
- ['+OK'], # Server greeting
- ['+OK', 'STLS', '.'], # CAPA response
- ['+OK'], # STLS response
- ['+OK', '.'], # Second CAPA response
- ['+OK'] # QUIT response
- ]
- sf.protocol.context = ServerTLSContext()
- port = reactor.listenTCP(0, sf, interface='127.0.0.1')
- H = port.getHost().host
- P = port.getHost().port
-
- cp = SimpleClient(defer.Deferred(), ClientTLSContext())
- cf = protocol.ClientFactory()
- cf.protocol = lambda: cp
-
- conn = reactor.connectTCP(H, P, cf)
-
- def cbConnected(ignored):
- log.msg("Connected to server; starting TLS")
- return cp.startTLS()
-
- def cbStartedTLS(ignored):
- log.msg("Started TLS; disconnecting")
- return cp.quit()
-
- def cbDisconnected(ign):
- log.msg("Disconnected; asserting correct input received")
- self.assertEquals(
- sf.input,
- ['CAPA', 'STLS', 'CAPA', 'QUIT'])
-
- def cleanup(result):
- log.msg("Asserted correct input; disconnecting client and shutting down server")
- conn.disconnect()
-
- def cbShutdown(ignored):
- log.msg("Shut down server")
- return result
-
- return defer.maybeDeferred(port.stopListening).addCallback(cbShutdown)
-
- cp.deferred.addCallback(cbConnected)
- cp.deferred.addCallback(cbStartedTLS)
- cp.deferred.addCallback(cbDisconnected)
- cp.deferred.addBoth(cleanup)
-
- return cp.deferred
-
-
-class POP3TimeoutTestCase(POP3HelperMixin, unittest.TestCase):
- def testTimeout(self):
- def login():
- d = self.client.login('test', 'twisted')
- d.addCallback(loggedIn)
- d.addErrback(timedOut)
- return d
-
- def loggedIn(result):
- self.fail("Successfully logged in!? Impossible!")
-
-
- def timedOut(failure):
- failure.trap(error.TimeoutError)
- self._cbStopClient(None)
-
- def quit():
- return self.client.quit()
-
- self.client.timeout = 0.01
-
- # Tell the server to not return a response to client. This
- # will trigger a timeout.
- pop3testserver.TIMEOUT_RESPONSE = True
-
- methods = [login, quit]
- map(self.connected.addCallback, map(strip, methods))
- self.connected.addCallback(self._cbStopClient)
- self.connected.addErrback(self._ebGeneral)
- return self.loopback()
-
-
-if ClientTLSContext is None:
- for case in (POP3TLSTestCase,):
- case.skip = "OpenSSL not present"
-elif interfaces.IReactorSSL(reactor, None) is None:
- for case in (POP3TLSTestCase,):
- case.skip = "Reactor doesn't support SSL"
-
« no previous file with comments | « third_party/twisted_8_1/twisted/mail/test/test_pop3.py ('k') | third_party/twisted_8_1/twisted/mail/test/test_smtp.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698