def test_ValidLogin(self): """ A CRAM-MD5-based SASL login attempt succeeds if it uses a username and a hashed password known to the server's credentials checker. """ p = pop3.POP3() p.factory = TestServerFactory() p.factory.challengers = { b"CRAM-MD5": cred.credentials.CramMD5Credentials } p.portal = cred.portal.Portal(TestRealm()) ch = cred.checkers.InMemoryUsernamePasswordDatabaseDontUse() ch.addUser(b"testuser", b"testpassword") p.portal.registerChecker(ch) s = BytesIO() p.transport = internet.protocol.FileWrapper(s) p.connectionMade() p.lineReceived(b"CAPA") self.assertTrue(s.getvalue().find(b"SASL CRAM-MD5") >= 0) p.lineReceived(b"AUTH CRAM-MD5") chal = s.getvalue().splitlines()[-1][2:] chal = base64.b64decode(chal) response = (hmac.HMAC(b"testpassword", chal, digestmod=md5).hexdigest().encode("ascii")) p.lineReceived(base64.b64encode(b"testuser " + response)) self.assertTrue(p.mbox) self.assertTrue(s.getvalue().splitlines()[-1].find(b"+OK") >= 0) p.connectionLost(failure.Failure(Exception("Test harness disconnect")))
def testValidLogin(self): p = pop3.POP3() p.factory = TestServerFactory() p.factory.challengers = { 'CRAM-MD5': cred.credentials.CramMD5Credentials } p.portal = cred.portal.Portal(TestRealm()) ch = cred.checkers.InMemoryUsernamePasswordDatabaseDontUse() ch.addUser('testuser', 'testpassword') p.portal.registerChecker(ch) s = StringIO.StringIO() p.transport = internet.protocol.FileWrapper(s) p.connectionMade() p.lineReceived("CAPA") self.failUnless(s.getvalue().find("SASL CRAM-MD5") >= 0) p.lineReceived("AUTH CRAM-MD5") chal = s.getvalue().splitlines()[-1][2:] chal = base64.decodestring(chal) response = hmac.HMAC('testpassword', chal).hexdigest() p.lineReceived( base64.encodestring('testuser ' + response).rstrip('\n')) self.failUnless(p.mbox) self.failUnless(s.getvalue().splitlines()[-1].find("+OK") >= 0) p.connectionLost(failure.Failure(Exception("Test harness disconnect")))
def setUp(self): """ Make a POP3 server protocol instance hooked up to a simple mailbox and a transport that buffers output to a StringIO. """ p = pop3.POP3() p.mbox = self.mailboxType(self.exceptionType) p.schedule = list self.pop3Server = p s = StringIO.StringIO() p.transport = internet.protocol.FileWrapper(s) p.connectionMade() s.truncate(0) self.pop3Transport = s
def setUp(self): s = StringIO.StringIO() p = pop3.POP3() p.factory = TestServerFactory() p.transport = internet.protocol.FileWrapper(s) p.connectionMade() p.do_CAPA() self.caps = p.listCapabilities() self.pcaps = s.getvalue().splitlines() s = StringIO.StringIO() p.mbox = TestMailbox() p.transport = internet.protocol.FileWrapper(s) p.do_CAPA() self.lpcaps = s.getvalue().splitlines() p.connectionLost(failure.Failure(Exception("Test harness disconnect")))
def setUp(self): """ Create a POP3 server with some capabilities. """ s = BytesIO() p = pop3.POP3() p.factory = TestServerFactory() p.factory.pue = p.factory.puld = False p.transport = internet.protocol.FileWrapper(s) p.connectionMade() p.do_CAPA() self.caps = p.listCapabilities() self.pcaps = s.getvalue().splitlines() s = BytesIO() p.mbox = TestMailbox() p.transport = internet.protocol.FileWrapper(s) p.do_CAPA() self.lpcaps = s.getvalue().splitlines() p.connectionLost(failure.Failure(Exception("Test harness disconnect")))
def setUp(self): self.client = TestPOP3Grabber() self.client.setCredentials('test_user', 'test_pass') self.server = pop3.POP3() self.server.schedule = list self.server.timeOut = None