Add tests for filters.
This commit is contained in:
parent
dcb0d8b00e
commit
45ed68006f
1 changed files with 88 additions and 0 deletions
88
tests/test_stream_filters.py
Normal file
88
tests/test_stream_filters.py
Normal file
|
@ -0,0 +1,88 @@
|
|||
import time
|
||||
|
||||
from sleekxmpp import Message
|
||||
from sleekxmpp.test import *
|
||||
from sleekxmpp.xmlstream.handler import *
|
||||
from sleekxmpp.xmlstream.matcher import *
|
||||
|
||||
|
||||
class TestFilters(SleekTest):
|
||||
|
||||
"""
|
||||
Test using incoming and outgoing filters.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.stream_start()
|
||||
|
||||
def tearDown(self):
|
||||
self.stream_close()
|
||||
|
||||
def testIncoming(self):
|
||||
|
||||
data = []
|
||||
|
||||
def in_filter(stanza):
|
||||
if isinstance(stanza, Message):
|
||||
if stanza['body'] == 'testing':
|
||||
stanza['subject'] = stanza['body'] + ' filter'
|
||||
print('>>> %s' % stanza['subject'])
|
||||
return stanza
|
||||
|
||||
def on_message(msg):
|
||||
print('<<< %s' % msg['subject'])
|
||||
data.append(msg['subject'])
|
||||
|
||||
self.xmpp.add_filter('in', in_filter)
|
||||
self.xmpp.add_event_handler('message', on_message)
|
||||
|
||||
self.recv("""
|
||||
<message>
|
||||
<body>no filter</body>
|
||||
</message>
|
||||
""")
|
||||
|
||||
self.recv("""
|
||||
<message>
|
||||
<body>testing</body>
|
||||
</message>
|
||||
""")
|
||||
|
||||
time.sleep(0.5)
|
||||
|
||||
self.assertEqual(data, ['', 'testing filter'],
|
||||
'Incoming filter did not apply %s' % data)
|
||||
|
||||
def testOutgoing(self):
|
||||
|
||||
def out_filter(stanza):
|
||||
if isinstance(stanza, Message):
|
||||
if stanza['body'] == 'testing':
|
||||
stanza['body'] = 'changed!'
|
||||
return stanza
|
||||
|
||||
self.xmpp.add_filter('out', out_filter)
|
||||
|
||||
m1 = self.Message()
|
||||
m1['body'] = 'testing'
|
||||
m1.send()
|
||||
|
||||
m2 = self.Message()
|
||||
m2['body'] = 'blah'
|
||||
m2.send()
|
||||
|
||||
self.send("""
|
||||
<message>
|
||||
<body>changed!</body>
|
||||
</message>
|
||||
""")
|
||||
|
||||
self.send("""
|
||||
<message>
|
||||
<body>blah</body>
|
||||
</message>
|
||||
""")
|
||||
|
||||
|
||||
|
||||
suite = unittest.TestLoader().loadTestsFromTestCase(TestFilters)
|
Loading…
Reference in a new issue