118 lines
3.5 KiB
Python
118 lines
3.5 KiB
Python
|
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)
|