summaryrefslogtreecommitdiff
path: root/tests/test_stream_xep_0128.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_stream_xep_0128.py')
-rw-r--r--tests/test_stream_xep_0128.py106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/test_stream_xep_0128.py b/tests/test_stream_xep_0128.py
new file mode 100644
index 00000000..6fee6556
--- /dev/null
+++ b/tests/test_stream_xep_0128.py
@@ -0,0 +1,106 @@
+import sys
+import time
+import threading
+
+from sleekxmpp.test import *
+from sleekxmpp.xmlstream import ElementBase
+
+
+class TestStreamExtendedDisco(SleekTest):
+
+ """
+ Test using the XEP-0128 plugin.
+ """
+
+ def tearDown(self):
+ sys.excepthook = sys.__excepthook__
+ self.stream_close()
+
+ def testUsingExtendedInfo(self):
+ self.stream_start(mode='client',
+ jid='tester@localhost',
+ plugins=['xep_0030',
+ 'xep_0004',
+ 'xep_0128'])
+
+ form = self.xmpp['xep_0004'].makeForm(ftype='result')
+ form.addField(var='FORM_TYPE', ftype='hidden', value='testing')
+
+ info_ns = 'http://jabber.org/protocol/disco#info'
+ self.xmpp['xep_0030'].add_identity(node='test',
+ category='client',
+ itype='bot')
+ self.xmpp['xep_0030'].add_feature(node='test', feature=info_ns)
+ self.xmpp['xep_0128'].set_extended_info(node='test', data=form)
+
+ self.recv("""
+ <iq type="get" id="test" to="tester@localhost">
+ <query xmlns="http://jabber.org/protocol/disco#info"
+ node="test" />
+ </iq>
+ """)
+
+ self.send("""
+ <iq type="result" id="test">
+ <query xmlns="http://jabber.org/protocol/disco#info"
+ node="test">
+ <identity category="client" type="bot" />
+ <feature var="http://jabber.org/protocol/disco#info" />
+ <x xmlns="jabber:x:data" type="result">
+ <field var="FORM_TYPE" type="hidden">
+ <value>testing</value>
+ </field>
+ </x>
+ </query>
+ </iq>
+ """)
+
+ def testUsingMultipleExtendedInfo(self):
+ self.stream_start(mode='client',
+ jid='tester@localhost',
+ plugins=['xep_0030',
+ 'xep_0004',
+ 'xep_0128'])
+
+ form1 = self.xmpp['xep_0004'].makeForm(ftype='result')
+ form1.addField(var='FORM_TYPE', ftype='hidden', value='testing')
+
+ form2 = self.xmpp['xep_0004'].makeForm(ftype='result')
+ form2.addField(var='FORM_TYPE', ftype='hidden', value='testing_2')
+
+ info_ns = 'http://jabber.org/protocol/disco#info'
+ self.xmpp['xep_0030'].add_identity(node='test',
+ category='client',
+ itype='bot')
+ self.xmpp['xep_0030'].add_feature(node='test', feature=info_ns)
+ self.xmpp['xep_0128'].set_extended_info(node='test', data=[form1, form2])
+
+ self.recv("""
+ <iq type="get" id="test" to="tester@localhost">
+ <query xmlns="http://jabber.org/protocol/disco#info"
+ node="test" />
+ </iq>
+ """)
+
+ self.send("""
+ <iq type="result" id="test">
+ <query xmlns="http://jabber.org/protocol/disco#info"
+ node="test">
+ <identity category="client" type="bot" />
+ <feature var="http://jabber.org/protocol/disco#info" />
+ <x xmlns="jabber:x:data" type="result">
+ <field var="FORM_TYPE" type="hidden">
+ <value>testing</value>
+ </field>
+ </x>
+ <x xmlns="jabber:x:data" type="result">
+ <field var="FORM_TYPE" type="hidden">
+ <value>testing_2</value>
+ </field>
+ </x>
+ </query>
+ </iq>
+ """)
+
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamExtendedDisco)