# Settings
TIMEOUT = 30.0 # Connection timeout in seconds
-LOGGING = True
+LOGGING = False
USER1 = "messengertest1@hotmail.com"
PASS1 = "hellohello"
USER2 = "messengertest2@hotmail.com"
def __init__(self, username, password, ident, testCase):
msnw.MSNConnection.__init__(self, username, password, ident)
self.testCase = testCase
+ self.message = None
+ self.contactAdded = None
def listSynchronized(self):
# Now we're fully connected
self.message = (userHandle, text)
def contactAddedMe(self, userHandle):
- print "CONTACT ADDED ME"
self.contactAdded = userHandle
-class BasicConnection(unittest.TestCase):
- def failed(self, why):
- self.done = True
-
- def testConnect(self):
- self.done = False
- self.timeout = reactor.callLater(TIMEOUT, self.failed)
- self.user = MSNConnection(USER1, PASS1, "user", self)
- while not self.done:
- reactor.iterate(0.1)
- self.failUnless((self.done == "SYNCED"), "Failed to connect to MSN servers.")
- self.user.logOut()
- reactor.iterate(0.1)
- try:
- self.timeout.cancel()
- except (error.AlreadyCancelled, error.AlreadyCalled):
- pass
-
-class BasicTests(unittest.TestCase):
+class TestsUtil:
def setUp(self):
self.failure = None
self.timeout = None
self.done = False
-
- # Login both accounts
+ self.user1 = None
+ self.user2 = None
+
+ def tearDown(self):
+ if self.user1:
+ self.user1.logOut()
+ reactor.iterate(0.1)
+ if self.user2:
+ self.user2.logOut()
+ reactor.iterate(0.1)
+
+ def doLogins(self, both=True):
+ # Connect two accounts
self.user1 = MSNConnection(USER1, PASS1, "user1", self)
- self.loop("Logging in.", cond="SYNCED")
- self.user2 = MSNConnection(USER2, PASS2, "user2", self)
- self.loop("Logging in.", cond="SYNCED")
+ self.loop("Logging in user1.", cond="SYNCED")
+ if both:
+ self.user2 = MSNConnection(USER2, PASS2, "user2", self)
+ self.loop("Logging in user2.", cond="SYNCED")
+ def doPurgeContacts(self):
# Purge both contact lists
clearAccount(self.user1).addCallback(self.cb)
self.loop("Purging user1 contact list.")
clearAccount(self.user2).addCallback(self.cb)
self.loop("Purging user2 contact list.")
+ def doAddContacts(self):
# Adding users to each other's lists
self.user1.addContact(msnw.FORWARD_LIST, USER2).addCallback(self.cb)
self.loop("Adding user2 to user1's forward list.")
self.loop("Adding user1 to user2's allow list.")
# Check the contacts have seen each other
- self.loop("Waiting...")
+ reactor.iterate(0.1) # One last chance to notice each other
self.failUnless((self.user1.contactAdded == USER2 and self.user2.contactAdded == USER1), "Contacts can't see each other.")
-
- def tearDown(self):
- self.user1.logOut()
- self.user2.logOut()
- reactor.iterate(0.1)
-
def cb(self, ignored=None):
self.done = True
self.failure = why
self.done = True
- # The tests!
+# The tests!
+
+class BasicTests(unittest.TestCase, TestsUtil):
+ def setUp(self):
+ TestsUtil.setUp(self)
+
+ def tearDown(self):
+ TestsUtil.tearDown(self)
+
+ def testConnect(self):
+ self.doLogins(both=False)
+
+ def testPurgeContacts(self):
+ self.doLogins()
+ self.doPurgeContacts()
+
+ def testAddContacts(self):
+ self.doLogins()
+ self.doPurgeContacts()
+ self.doAddContacts()
+
def testMessageExchange(self):
+ self.doLogins()
+ self.doPurgeContacts()
+ self.doAddContacts()
self.user1.sendMessage(USER2, "Hi user2")
- self.loop("Timeout exchanging message 1.", cond="GOTMESSAGE")
- self.failUnless((self.user1.message == (USER2, "Hi user1")), "Failed to transfer message 1.")
+ self.loop("Timeout exchanging message.", cond="GOTMESSAGE")
+ self.failUnless((self.user2.message == (USER1, "Hi user2")), "Failed to transfer message.")