import unittest from slixmpp import Iq, Message, JID from slixmpp.test import SlixTest from slixmpp.plugins.xep_0369 import stanza from slixmpp.plugins.xep_0060 import stanza as pstanza from slixmpp.plugins.xep_0369.mix_core import BASE_NODES class TestMIXStanza(SlixTest): def setUp(self): stanza.register_plugins() def testMIXJoin(self): """Test that data is converted to base64""" iq = Iq() iq['type'] = 'set' for node in BASE_NODES: sub = stanza.Subscribe() sub['node'] = node iq['mix_join'].append(sub) iq['mix_join']['nick'] = 'Toto' self.check(iq, """ <iq type="set"> <join xmlns='urn:xmpp:mix:core:1'> <subscribe node='urn:xmpp:mix:nodes:messages'/> <subscribe node='urn:xmpp:mix:nodes:participants'/> <subscribe node='urn:xmpp:mix:nodes:info'/> <nick>Toto</nick> </join> </iq> """) def testMIXUpdateSub(self): iq = Iq() iq['type'] = 'set' iq.enable('mix_updatesub') sub = stanza.Subscribe() sub['node'] = 'urn:xmpp:mix:nodes:someothernode' iq['mix_updatesub'].append(sub) self.check(iq, """ <iq type="set"> <update-subscription xmlns='urn:xmpp:mix:core:1'> <subscribe node='urn:xmpp:mix:nodes:someothernode'/> </update-subscription> </iq> """) def testMIXLeave(self): iq = Iq() iq['type'] = 'set' iq.enable('mix_leave') self.check(iq, """ <iq type="set"> <leave xmlns='urn:xmpp:mix:core:1'/> </iq> """) def testMIXSetNick(self): iq = Iq() iq['type'] = 'set' iq['mix_setnick']['nick'] = 'A nick' self.check(iq, """ <iq type="set"> <setnick xmlns='urn:xmpp:mix:core:1'> <nick>A nick</nick> </setnick> </iq> """) def testMIXMessage(self): msg = Message() msg['type'] = 'groupchat' msg['body'] = 'This is a message body' msg['mix']['nick'] = 'A nick' msg['mix']['jid'] = JID('toto@example.com') self.check(msg, """ <message type="groupchat"> <body>This is a message body</body> <mix xmlns="urn:xmpp:mix:core:1"> <nick>A nick</nick> <jid>toto@example.com</jid> </mix> </message> """) def testMIXNewParticipant(self): msg = Message() msg['pubsub_event']['items']['node'] = 'urn:xmpp:mix:nodes:participants' item = pstanza.EventItem() item['id'] = '123456' item['mix_participant']['jid'] = JID('titi@example.com') item['mix_participant']['nick'] = 'Titi' msg['pubsub_event']['items'].append(item) self.check(msg, """ <message> <event xmlns='http://jabber.org/protocol/pubsub#event'> <items node='urn:xmpp:mix:nodes:participants'> <item id='123456'> <participant xmlns='urn:xmpp:mix:core:1'> <jid>titi@example.com</jid> <nick>Titi</nick> </participant> </item> </items> </event> </message> """, use_values=False) suite = unittest.TestLoader().loadTestsFromTestCase(TestMIXStanza)