diff --git a/tests/test_stream_xep_0405.py b/tests/test_stream_xep_0405.py new file mode 100644 index 00000000..9bc01601 --- /dev/null +++ b/tests/test_stream_xep_0405.py @@ -0,0 +1,181 @@ +import unittest +from slixmpp.test import SlixTest +from slixmpp import JID + + +class TestMIXPAM(SlixTest): + + def setUp(self): + self.stream_start(plugins=['xep_0405']) + + def tearDown(self): + self.stream_close() + + def testGetRosterEmpty(self): + """Test requesting an empty annotated roster""" + + fut = self.xmpp.wrap(self.xmpp['xep_0405'].get_mix_roster()) + + self.wait_() + self.send(""" + + + + + + """) + + self.recv(""" + + """) + + result = self.run_coro(fut) + + def testGetRoster(self): + """Test requesting an annotated roster""" + + fut = self.xmpp.wrap(self.xmpp['xep_0405'].get_mix_roster()) + + self.wait_() + self.send(""" + + + + + + """) + + self.recv(""" + + + + + + + + + + """) + + self.wait_() + contacts, channels = fut.result() + self.assertEqual(len(contacts), 2) + self.assertEqual(contacts[0]['jid'], 'romeo@example.net') + self.assertEqual(contacts[1]['jid'], 'juliet@example.net') + self.assertEqual(len(channels), 1) + self.assertEqual(channels[0]['jid'], 'balcony@example.net') + self.assertEqual( + channels[0]['channel']['participant-id'], + '123456' + ) + + def testClientJoin(self): + """Test a client join""" + + fut = self.xmpp.wrap(self.xmpp['xep_0405'].join_channel( + JID('coven@mix.shakespeare.example'), + 'toto', + )) + self.send(""" + + + + toto + + + + + + + """) + self.recv(""" + + + + + + + + + + """) + self.wait_() + self.assertEqual(fut.result(), set()) + + def testClientJoinNotAllNodes(self): + """Test a client join where one of the nodes is rejected""" + + fut = self.xmpp.wrap(self.xmpp['xep_0405'].join_channel( + JID('coven@mix.shakespeare.example'), + 'toto', + )) + self.send(""" + + + + toto + + + + + + + """) + self.recv(""" + + + + + + + + + """) + self.wait_() + self.assertEqual(fut.result(), {'urn:xmpp:mix:nodes:info'}) + + def testClientLeave(self): + """Test a client leave""" + + fut = self.xmpp.wrap(self.xmpp['xep_0405'].leave_channel( + JID('coven@mix.shakespeare.example'), + )) + self.send(""" + + + + + + """) + self.recv(""" + + + + + + """) + + self.assertEqual(fut.done(), True) + self.assertEqual(fut.exception(), None) + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestMIXPAM)