Merge branch 'xep402-extensions' into 'master'

xep0402: add password and extension

See merge request poezio/slixmpp!242
This commit is contained in:
Link Mauve 2023-04-04 10:05:01 +00:00
commit 8bead23799
2 changed files with 61 additions and 4 deletions

View File

@ -9,18 +9,25 @@ class Conference(ElementBase):
namespace = NS namespace = NS
name = "conference" name = "conference"
plugin_attrib = "conference" plugin_attrib = "conference"
interfaces = {"name", "autojoin", "nick"} interfaces = {"name", "autojoin", "nick", "password"}
sub_interfaces = {"nick"} sub_interfaces = {"nick", "password"}
def set_autojoin(self, v: bool): def set_autojoin(self, v: bool):
self._set_attr('autojoin', "true" if v else "false") self._set_attr("autojoin", "true" if v else "false")
def get_autojoin(self): def get_autojoin(self):
v = self._get_attr('autojoin', '') v = self._get_attr("autojoin", "")
if not v: if not v:
return False return False
return v == "1" or v.lower() == "true" return v == "1" or v.lower() == "true"
class Extensions(ElementBase):
namespace = NS
name = "extensions"
plugin_attrib = "extensions"
def register_plugin(): def register_plugin():
register_stanza_plugin(Conference, Extensions)
register_stanza_plugin(Item, Conference) register_stanza_plugin(Item, Conference)

View File

@ -0,0 +1,50 @@
import unittest
from slixmpp.test import SlixTest
from slixmpp.xmlstream import ElementBase
from slixmpp.plugins.xep_0402 import stanza
class Ext1(ElementBase):
name = "ext1"
namespace = "http://ext1"
class Ext2(ElementBase):
name = "ext2"
namespace = "http://ext2"
class TestPepBookmarks(SlixTest):
def setUp(self):
stanza.register_plugin()
def test_bookmarks_extensions(self):
extension1 = Ext1()
extension2 = Ext2()
bookmark = stanza.Conference()
bookmark["password"] = "pass"
bookmark["nick"] = "nick"
bookmark["autojoin"] = False
bookmark["extensions"].append(extension1)
bookmark["extensions"].append(extension2)
self.check(
bookmark,
"""
<conference xmlns='urn:xmpp:bookmarks:1'
autojoin='false'>
<nick>nick</nick>
<password>pass</password>
<extensions>
<ext1 xmlns="http://ext1" />
<ext2 xmlns="http://ext2" />
</extensions>
</conference>
""",
use_values=False
)
suite = unittest.TestLoader().loadTestsFromTestCase(TestPepBookmarks)