slixmpp/tests/test_stanza_xep_0369.py

118 lines
3.5 KiB
Python
Raw Normal View History

2020-11-23 20:16:02 +00:00
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)