diff --git a/slixmpp/plugins/xep_0402/stanza.py b/slixmpp/plugins/xep_0402/stanza.py index 896ff863..32691202 100644 --- a/slixmpp/plugins/xep_0402/stanza.py +++ b/slixmpp/plugins/xep_0402/stanza.py @@ -9,18 +9,25 @@ class Conference(ElementBase): namespace = NS name = "conference" plugin_attrib = "conference" - interfaces = {"name", "autojoin", "nick"} - sub_interfaces = {"nick"} + interfaces = {"name", "autojoin", "nick", "password"} + sub_interfaces = {"nick", "password"} 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): - v = self._get_attr('autojoin', '') + v = self._get_attr("autojoin", "") if not v: return False return v == "1" or v.lower() == "true" +class Extensions(ElementBase): + namespace = NS + name = "extensions" + plugin_attrib = "extensions" + + def register_plugin(): + register_stanza_plugin(Conference, Extensions) register_stanza_plugin(Item, Conference) diff --git a/tests/test_stanza_xep_0402.py b/tests/test_stanza_xep_0402.py new file mode 100644 index 00000000..68b59c1e --- /dev/null +++ b/tests/test_stanza_xep_0402.py @@ -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, + """ + + nick + pass + + + + + + """, + use_values=False + ) + + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestPepBookmarks)