1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # -*- coding: utf-8 -*-
- import unittest
- import json
- from media.monitor.airtime import AirtimeNotifier, AirtimeMessageReceiver
- from mock import patch, Mock
- from media.monitor.config import MMConfig
- from media.monitor.manager import Manager
- def filter_ev(d): return { i : j for i,j in d.iteritems() if i != 'event_type' }
- class TestReceiver(unittest.TestCase):
- def setUp(self):
- # TODO : properly mock this later
- cfg = {}
- self.amr = AirtimeMessageReceiver(cfg, Manager())
- def test_supported(self):
- # Every supported message should fire something
- for event_type in self.amr.dispatch_table.keys():
- msg = { 'event_type' : event_type, 'extra_param' : 123 }
- filtered = filter_ev(msg)
- # There should be a better way to test the following without
- # patching private methods
- with patch.object(self.amr, '_execute_message') as mock_method:
- mock_method.side_effect = None
- ret = self.amr.message(msg)
- self.assertTrue(ret)
- mock_method.assert_called_with(event_type, filtered)
- def test_no_mod_message(self):
- ev = { 'event_type' : 'new_watch', 'directory' : 'something here' }
- filtered = filter_ev(ev)
- with patch.object(self.amr, '_execute_message') as mock_method:
- mock_method.return_value = "tested"
- ret = self.amr.message(ev)
- self.assertTrue( ret ) # message passing worked
- mock_method.assert_called_with(ev['event_type'], filtered)
- # test that our copy of the message does not get modified
- self.assertTrue( 'event_type' in ev )
- class TestAirtimeNotifier(unittest.TestCase):
- def test_handle_message(self):
- #from configobj import ConfigObj
- test_cfg = MMConfig('./test_config.cfg')
- ran = [False]
- class MockReceiver(object):
- def message(me,m):
- self.assertTrue( 'event_type' in m )
- self.assertEqual( m['path'], '/bs/path' )
- ran[0] = True
- airtime = AirtimeNotifier(cfg=test_cfg, message_receiver=MockReceiver())
- m1 = Mock()
- m1.ack = "ack'd message"
- m2 = Mock()
- m2.body = json.dumps({ 'event_type' : 'file_delete', 'path' : '/bs/path' })
- airtime.handle_message(body=m1,message=m2)
- self.assertTrue( ran[0] )
- if __name__ == '__main__': unittest.main()
|