summaryrefslogtreecommitdiff
path: root/tests/test_stream_xep_0077.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_stream_xep_0077.py')
-rw-r--r--tests/test_stream_xep_0077.py112
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/test_stream_xep_0077.py b/tests/test_stream_xep_0077.py
new file mode 100644
index 00000000..c47c4de5
--- /dev/null
+++ b/tests/test_stream_xep_0077.py
@@ -0,0 +1,112 @@
+"""
+This only covers the component registration side of the XEP-0077 plugin
+"""
+
+import unittest
+
+from slixmpp import ComponentXMPP, Iq
+from slixmpp.xmlstream import register_stanza_plugin
+from slixmpp.test import SlixTest
+from slixmpp.plugins.xep_0077 import Register
+
+
+class TestRegistration(SlixTest):
+ def setUp(self):
+ self.stream_start(
+ mode="component", plugins=["xep_0077"], jid="shakespeare.lit", server="lit"
+ )
+
+ def testRegistrationForm(self):
+ self.stream_start(
+ mode="component", plugins=["xep_0077"], jid="shakespeare.lit", server="lit"
+ )
+ self.recv(
+ """
+ <iq type='get' id='reg1' to='shakespeare.lit' from='bill@server/resource'>
+ <query xmlns='jabber:iq:register'/>
+ </iq>
+ """,
+ )
+ self.send(
+ f"""
+ <iq type='result' id='reg1' from='shakespeare.lit' to='bill@server/resource'>
+ <query xmlns='jabber:iq:register'>
+ <instructions>{self.xmpp["xep_0077"].form_instructions}</instructions>
+ <username/>
+ <password/>
+ </query>
+ </iq>
+ """,
+ use_values=False # Fails inconsistently without this
+ )
+
+ def testRegistrationSuccessAndModif(self):
+ self.recv(
+ """
+ <iq type='set' id='reg2' to='shakespeare.lit' from="bill@server/resource">
+ <query xmlns='jabber:iq:register'>
+ <username>bill</username>
+ <password>Calliope</password>
+ </query>
+ </iq>
+ """
+ )
+ self.send("<iq type='result' id='reg2' from='shakespeare.lit' to='bill@server/resource'/>")
+ user_store = self.xmpp["xep_0077"]._user_store
+ self.assertEqual(user_store["bill@server"]["username"], "bill")
+ self.assertEqual(user_store["bill@server"]["password"], "Calliope")
+
+ self.recv(
+ """
+ <iq type='get' id='reg1' to='shakespeare.lit' from="bill@server/resource">
+ <query xmlns='jabber:iq:register'/>
+ </iq>
+ """,
+ )
+ self.send(
+ f"""
+ <iq type='result' id='reg1' to="bill@server/resource" from='shakespeare.lit'>
+ <query xmlns='jabber:iq:register'>
+ <instructions>{self.xmpp["xep_0077"].form_instructions}</instructions>
+ <username>bill</username>
+ <password>Calliope</password>
+ <registered />
+ </query>
+ </iq>
+ """,
+ use_values=False # Fails inconsistently without this
+ )
+
+ def testRegistrationAndRemove(self):
+ self.recv(
+ """
+ <iq type='set' id='reg2' to='shakespeare.lit' from="bill@shakespeare.lit/globe">
+ <query xmlns='jabber:iq:register'>
+ <username>bill</username>
+ <password>Calliope</password>
+ </query>
+ </iq>
+ """
+ )
+ self.send("<iq type='result' id='reg2' from='shakespeare.lit' to='bill@shakespeare.lit/globe'/>")
+ pseudo_iq = self.xmpp.Iq()
+ pseudo_iq["from"] = "bill@shakespeare.lit/globe"
+ user = self.xmpp["xep_0077"].api["user_get"](None, None, None, pseudo_iq)
+ self.assertEqual(user["username"], "bill")
+ self.assertEqual(user["password"], "Calliope")
+ self.recv(
+ """
+ <iq type='set' from='bill@shakespeare.lit/globe' id='unreg1'>
+ <query xmlns='jabber:iq:register'>
+ <remove/>
+ </query>
+ </iq>
+ """
+ )
+ self.send("<iq type='result' to='bill@shakespeare.lit/globe' id='unreg1'/>")
+ user_store = self.xmpp["xep_0077"]._user_store
+ self.assertIs(user_store.get("bill@shakespeare.lit"), None)
+
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestRegistration)