slixmpp/tests/test_stanza_xep_0356.py

67 lines
2.1 KiB
Python
Raw Normal View History

2021-02-18 11:03:22 -08:00
import unittest
from slixmpp.test import SlixTest
from slixmpp.plugins.xep_0356 import stanza, permissions
2021-02-18 11:03:22 -08:00
class TestPermissions(SlixTest):
def setUp(self):
stanza.register()
def testAdvertisePermission(self):
xmlstring = """
<message from='capulet.lit' to='pubsub.capulet.lit'>
2022-06-09 07:45:36 -07:00
<privilege xmlns='urn:xmpp:privilege:2'>
2021-02-18 11:03:22 -08:00
<perm access='roster' type='both'/>
<perm access='message' type='outgoing'/>
<perm access='presence' type='managed_entity'/>
<perm access='iq' type='both'/>
2021-02-18 11:03:22 -08:00
</privilege>
</message>
"""
msg = self.Message()
msg["from"] = "capulet.lit"
msg["to"] = "pubsub.capulet.lit"
2021-02-18 11:03:22 -08:00
for access, type_ in [
("roster", permissions.RosterAccess.BOTH),
("message", permissions.MessagePermission.OUTGOING),
("presence", permissions.PresencePermission.MANAGED_ENTITY),
("iq", permissions.IqPermission.BOTH),
2021-02-18 11:03:22 -08:00
]:
msg["privilege"].add_perm(access, type_)
self.check(msg, xmlstring)
def testIqPermission(self):
x = stanza.Privilege()
x["access"] = "iq"
ns = stanza.NameSpace()
ns["ns"] = "some_ns"
ns["type"] = "get"
x["perm"]["access"] = "iq"
x["perm"].append(ns)
ns = stanza.NameSpace()
ns["ns"] = "some_other_ns"
ns["type"] = "both"
x["perm"].append(ns)
self.check(
x,
"""
<privilege xmlns='urn:xmpp:privilege:2'>
<perm access='iq'>
<namespace ns='some_ns' type='get' />
<namespace ns='some_other_ns' type='both' />
</perm>
</privilege>
"""
)
nss = set()
for perm in x["perms"]:
for ns in perm["namespaces"]:
nss.add((ns["ns"], ns["type"]))
assert nss == {("some_ns", "get"), ("some_other_ns", "both")}
2021-02-18 11:03:22 -08:00
suite = unittest.TestLoader().loadTestsFromTestCase(TestPermissions)