Rename to slixmpp
[slixmpp.git] / tests / test_stream_filters.py
blobdda68bc969aaa094ed948badfe818a9793b9528d
1 import time
3 from slixmpp import Message
4 import unittest
5 from slixmpp.test import SlixTest
8 class TestFilters(SlixTest):
10 """
11 Test using incoming and outgoing filters.
12 """
14 def setUp(self):
15 self.stream_start()
17 def tearDown(self):
18 self.stream_close()
20 def testIncoming(self):
22 data = []
24 def in_filter(stanza):
25 if isinstance(stanza, Message):
26 if stanza['body'] == 'testing':
27 stanza['subject'] = stanza['body'] + ' filter'
28 print('>>> %s' % stanza['subject'])
29 return stanza
31 def on_message(msg):
32 print('<<< %s' % msg['subject'])
33 data.append(msg['subject'])
35 self.xmpp.add_filter('in', in_filter)
36 self.xmpp.add_event_handler('message', on_message)
38 self.recv("""
39 <message>
40 <body>no filter</body>
41 </message>
42 """)
44 self.recv("""
45 <message>
46 <body>testing</body>
47 </message>
48 """)
50 time.sleep(0.5)
52 self.assertEqual(data, ['', 'testing filter'],
53 'Incoming filter did not apply %s' % data)
55 def testOutgoing(self):
57 def out_filter(stanza):
58 if isinstance(stanza, Message):
59 if stanza['body'] == 'testing':
60 stanza['body'] = 'changed!'
61 return stanza
63 self.xmpp.add_filter('out', out_filter)
65 m1 = self.Message()
66 m1['body'] = 'testing'
67 m1.send()
69 m2 = self.Message()
70 m2['body'] = 'blah'
71 m2.send()
73 self.send("""
74 <message>
75 <body>changed!</body>
76 </message>
77 """)
79 self.send("""
80 <message>
81 <body>blah</body>
82 </message>
83 """)
87 suite = unittest.TestLoader().loadTestsFromTestCase(TestFilters)