 2a2ac73845
			
		
	
	2a2ac73845
	
	
	
		
			
			The error bubbles through the event processing loop, breaking it and hanging the application. Instead, there is now a .exception(e) method on XMLStream which may be overridden or reassigned that will receive all unhandled exceptions (read: not XMPPError) from event and stream handlers.
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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):
 | |
|         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)
 |