diff options
author | Lance Stout <lancestout@gmail.com> | 2010-10-24 12:53:14 -0400 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2010-10-24 12:53:14 -0400 |
commit | d5288847234110cc9116aaf91a26c5a1fc395202 (patch) | |
tree | 273811c5a30bb7dcfc5a4ff3aa467289a36ac4b5 | |
parent | d9aff3d36f154867d45c812b6741730884d46c50 (diff) | |
download | slixmpp-d5288847234110cc9116aaf91a26c5a1fc395202.tar.gz slixmpp-d5288847234110cc9116aaf91a26c5a1fc395202.tar.bz2 slixmpp-d5288847234110cc9116aaf91a26c5a1fc395202.tar.xz slixmpp-d5288847234110cc9116aaf91a26c5a1fc395202.zip |
Added stream tests for rosters.
-rw-r--r-- | tests/test_stream_roster.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/test_stream_roster.py b/tests/test_stream_roster.py new file mode 100644 index 00000000..6eda7e3e --- /dev/null +++ b/tests/test_stream_roster.py @@ -0,0 +1,86 @@ +from sleekxmpp.test import * +import time +import threading + + +class TestStreamRoster(SleekTest): + """ + Test handling roster updates. + """ + + def tearDown(self): + self.stream_close() + + def testGetRoster(self): + """Test handling roster requests.""" + self.stream_start(mode='client') + self.failUnless(self.xmpp.roster == {}, "Initial roster not empty.") + + # Since get_roster blocks, we need to run it in a thread. + t = threading.Thread(name='get_roster', target=self.xmpp.get_roster) + t.start() + + self.stream_send_iq(""" + <iq type="get" id="1"> + <query xmlns="jabber:iq:roster" /> + </iq> + """) + self.stream_recv(""" + <iq type="result" id="1"> + <query xmlns="jabber:iq:roster"> + <item jid="user@localhost" + name="User" + subscription="both"> + <group>Friends</group> + <group>Examples</group> + </item> + </query> + </iq> + """) + + # Wait for get_roster to return. + t.join() + + roster = {'user@localhost': {'name': 'User', + 'subscription': 'both', + 'groups': ['Friends', 'Examples'], + 'presence': {}, + 'in_roster': True}} + self.failUnless(self.xmpp.roster == roster, + "Unexpected roster values: %s" % self.xmpp.roster) + + def testRosterSet(self): + """Test handling pushed roster updates.""" + self.stream_start(mode='client') + self.failUnless(self.xmpp.roster == {}, "Initial roster not empty.") + + self.stream_recv(""" + <iq type="set" id="1"> + <query xmlns="jabber:iq:roster"> + <item jid="user@localhost" + name="User" + subscription="both"> + <group>Friends</group> + <group>Examples</group> + </item> + </query> + </iq> + """) + self.stream_send_iq(""" + <iq type="result" id="1"> + <query xmlns="jabber:iq:roster" /> + </iq> + """) + + roster = {'user@localhost': {'name': 'User', + 'subscription': 'both', + 'groups': ['Friends', 'Examples'], + 'presence': {}, + 'in_roster': True}} + self.failUnless(self.xmpp.roster == roster, + "Unexpected roster values: %s" % self.xmpp.roster) + + + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamRoster) |