import unittest
from slixmpp import Message, Presence, Iq, JID
from slixmpp.test import SlixTest
from slixmpp.plugins.xep_0045.stanza import (
MUCPresence,
MUCJoin,
MUCMessage,
MUCAdminQuery,
MUCAdminItem,
MUCHistory,
MUCOwnerQuery,
MUCOwnerDestroy,
MUCStatus,
MUCInvite,
MUCDecline,
MUCUserItem,
MUCActor,
)
from slixmpp.xmlstream import register_stanza_plugin, ET
class TestMUC(SlixTest):
def setUp(self):
register_stanza_plugin(MUCPresence, MUCUserItem)
register_stanza_plugin(MUCMessage, MUCUserItem)
register_stanza_plugin(MUCUserItem, MUCActor)
register_stanza_plugin(MUCMessage, MUCInvite)
register_stanza_plugin(MUCMessage, MUCDecline)
register_stanza_plugin(MUCMessage, MUCStatus)
register_stanza_plugin(MUCPresence, MUCStatus)
register_stanza_plugin(Presence, MUCPresence)
register_stanza_plugin(Presence, MUCJoin)
register_stanza_plugin(MUCJoin, MUCHistory)
register_stanza_plugin(Message, MUCMessage)
register_stanza_plugin(Iq, MUCAdminQuery)
register_stanza_plugin(Iq, MUCOwnerQuery)
register_stanza_plugin(MUCOwnerQuery, MUCOwnerDestroy)
register_stanza_plugin(MUCAdminQuery, MUCAdminItem, iterable=True)
def testPresence(self):
presence = Presence()
presence['from'] = JID('muc@service/nick')
presence['muc']['item']['affiliation'] = 'member'
presence['muc']['item']['role'] = 'participant'
presence['muc']['status_codes'] = (100, 110, 210)
self.check(presence, """
""", use_values=False)
def testPresenceReason(self):
presence = Presence()
presence['from'] = JID('muc@service/nick')
presence['muc']['item']['affiliation'] = 'member'
presence['muc']['item']['role'] = 'participant'
presence['muc']['item']['reason'] = 'coucou'
presence['muc']['item']['actor']['nick'] = 'JPR'
self.check(presence, """
-
coucou
""", use_values=False)
def testPresenceLegacy(self):
presence = Presence()
presence['from'] = JID('muc@service/nick')
presence['muc']['affiliation'] = 'member'
presence['muc']['role'] = 'participant'
presence['muc']['status_codes'] = (100, 110, 210)
self.check(presence, """
""", use_values=False)
def testInvite(self):
message = Message()
message['from'] = 'user@server'
message['to'] = 'muc@service'
message['muc']['invite']['to'] = JID('user2@server2')
message['muc']['invite']['reason'] = 'Hey'
self.check(message, """
Hey
""", use_values=False)
def testAdmin(self):
iq = Iq()
iq['id'] = '0'
iq['type'] = 'set'
iq.enable('mucadmin_query')
items = [
('none', 'test@example/a'),
('owner', 'owner@example/a'),
]
for aff, jid in items:
item_el = MUCAdminItem()
item_el['affiliation'] = aff
item_el['jid'] = jid
iq['mucadmin_query'].append(item_el)
self.check(iq, """
""", use_values=False)
def testSetAffiliation(self):
iq = Iq()
iq['type'] = 'set'
iq['id'] = '1'
iq['mucadmin_query']['item']['jid'] = JID('test@example.com')
iq['mucadmin_query']['item']['affiliation'] = 'owner'
self.check(iq, """
""", use_values=False)
suite = unittest.TestLoader().loadTestsFromTestCase(TestMUC)