From 1d6945f7085242d9d61f4e967a4489f2cd083c4b Mon Sep 17 00:00:00 2001 From: jamesbunton Date: Sun, 14 May 2006 10:08:01 +0000 Subject: [PATCH] Fixed tests to work with rev152+ fix. git-svn-id: http://delx.cjb.net/svn/pymsnt/trunk@155 55fbd22a-6204-0410-b2f0-b6c764c7e90a committer: jamesbunton --- src/tlib/msn/msn.py | 16 ++++++++-------- src/tlib/msn/msnw.py | 12 +++++++++++- src/tlib/msn/test_msn.py | 12 ++++++++---- src/xmlconfig.py | 2 +- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/tlib/msn/msn.py b/src/tlib/msn/msn.py index 14f1a01..3486e00 100644 --- a/src/tlib/msn/msn.py +++ b/src/tlib/msn/msn.py @@ -2179,15 +2179,15 @@ class SwitchboardClient(MSNEventBase): """ cTypes = [s.lstrip() for s in message.getHeader('Content-Type').split(';')] if self._checkTyping(message, cTypes): return 0 - if 'text/x-msmsgsinvite' in cTypes: +# if 'text/x-msmsgsinvite' in cTypes: # header like info is sent as part of the message body. - info = {} - for line in message.message.split('\r\n'): - try: - key, val = line.split(':') - info[key] = val.lstrip() - except ValueError: continue - if self._checkFileInvitation(message, info): return 0 +# info = {} +# for line in message.message.split('\r\n'): +# try: +# key, val = line.split(':') +# info[key] = val.lstrip() +# except ValueError: continue +# if self._checkFileInvitation(message, info): return 0 elif 'application/x-msnmsgrp2p' in cTypes: self._handleP2PMessage(message) return 0 diff --git a/src/tlib/msn/msnw.py b/src/tlib/msn/msnw.py index 2241c22..7355d32 100644 --- a/src/tlib/msn/msnw.py +++ b/src/tlib/msn/msnw.py @@ -360,6 +360,10 @@ class DispatchClient(msn.DispatchClient): class NotificationClient(msn.NotificationClient): + def doDisconnect(self): + if hasattr(self, "transport") and self.transport: + self.transport.loseConnection() + def loginFailure(self, message): self.factory.msncon.loginFailed(message) @@ -373,9 +377,13 @@ class NotificationClient(msn.NotificationClient): def logOut(self): msn.NotificationClient.logOut(self) + # If we explicitly log out, then all of these events + # are now redundant + self.loginFailure = self.doDisconnect + self.loggedIn = self.doDisconnect + self.connectionLost = self.doDisconnect def connectionLost(self, reason): - if not self.factory.msncon: return # If we called logOut def wait(): LogEvent(INFO, self.factory.msncon.ident) msn.NotificationClient.connectionLost(self, reason) @@ -461,11 +469,13 @@ class SwitchboardSessionBase(msn.SwitchboardClient): self.ready = False def __del__(self): + self.ready = False LogEvent(INFO, self.ident) del self.msncon self.transport.disconnect() def connectionLost(self, reason): + self.ready = False self.msncon = None self.msnobj = None self.ident = (self.ident[0], self.ident[1] + " Disconnected!") diff --git a/src/tlib/msn/test_msn.py b/src/tlib/msn/test_msn.py index 9f54c8b..bec12e6 100644 --- a/src/tlib/msn/test_msn.py +++ b/src/tlib/msn/test_msn.py @@ -43,8 +43,11 @@ class LoopbackCon: self.con2 = con2 self.con1ToCon2 = loopback.LoopbackRelay(con1) self.con2ToCon1 = loopback.LoopbackRelay(con2) - con2.makeConnection(self.con1ToCon2) - con1.makeConnection(self.con2ToCon1) + self.reconnect() + + def reconnect(self): + self.con2.makeConnection(self.con1ToCon2) + self.con1.makeConnection(self.con2ToCon1) self.connected = True def doSteps(self, steps=1): @@ -225,6 +228,7 @@ class NotificationTests(unittest.TestCase): def setUp(self): self.client = DummyNotificationClient() self.client.factory = msn.NotificationFactory() + msn.MSNEventBase.connectionMade(self.client) self.client.state = 'START' def tearDown(self): @@ -707,6 +711,7 @@ class NotificationChallengeTests(unittest.TestCase): ('93662730714769834295', 'd619dfbb1414004d34d0628766636568'), ('31154116582196216093', '95e96c4f8cfdba6f065c8869b5e984e9')] for challenge, response in challenges: + self.loop.reconnect() self.server.doChallenge(challenge, response) self.failUnless(self.loop.doSteps(10), 'Failed to disconnect') self.failUnless((self.server.state == 'PASS'), 'Incorrect challenge response.') @@ -723,6 +728,7 @@ class DummyPingNotificationServer(LineReceiver): class DummyPingNotificationClient(msn.NotificationClient): def connectionMade(self): + msn.MSNEventBase.connectionMade(self) self.pingCheckerStart() def sendLine(self, line): @@ -903,13 +909,11 @@ class SwitchboardBasicTests(unittest.TestCase): self.failUnless((self.client.state == 'GOTMESSAGE'), 'Failed to detect message') def testInviteUser(self): - self.client.connectionMade = lambda: None self.client.doSendInvite() self.failUnless(self.loop.doSteps(10), 'Failed to disconnect') self.failUnless((self.client.state == 'INVITESUCCESS'), 'Failed to invite user') def testSendMessage(self): - self.client.connectionMade = lambda: None self.client.doSendMessage() self.failUnless(self.loop.doSteps(10), 'Failed to disconnect') self.failUnless((self.client.state == 'MESSAGESUCCESS'), 'Failed to send message') diff --git a/src/xmlconfig.py b/src/xmlconfig.py index ea30655..11eab8f 100644 --- a/src/xmlconfig.py +++ b/src/xmlconfig.py @@ -59,7 +59,7 @@ def importFile(configFile): def importOptions(options): for o in options: if hasattr(config, o): - setattr(config, o, options[0]) + setattr(config, o, options[o]) else: print "Option %s is not a defined option. Ignoring!" % (o) -- 2.39.2