def setUp(self): super(OnlineDistributeTest, self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample')
def setUp(self): super(OnlineDistributeTest,self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample')
def prepare(test_mode=False): ''' Creates a new instance of the distributor. Sets up the signal management. test_mode (optional) whether the test mode should be used or not. If so, the normal reader is replaced with a mock that always return zero messages ''' global distributor distributor = OnlineDistributor(py) if test_mode: from mock import Mock from deliver.read import Reader reader = Mock(spec=Reader) reader.new_messages.return_value = [] distributor._reader = reader signal.signal(signal.SIGTERM, terminate)
class OnlineDownloadDistributeTest(BaseTest): def setUp(self): super(OnlineDownloadDistributeTest, self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample10') def test_get_download_url(self): self.assertEqual( self.distributor._get_download_url(u'GET http://www.google.com'), u'http://www.google.com') def test_get_download_url_extra_whitespace(self): self.assertEqual( self.distributor._get_download_url( u' GET http://www.google.com '), u'http://www.google.com') def test_get_download_url_too_few_args(self): self.assertEqual( self.distributor._get_download_url(u'http://www.google.com'), None) def test_get_download_url_too_many_args(self): self.assertEqual( self.distributor._get_download_url( u'GET http://www.google.com plus'), None) @patch('urllib2.urlopen') def test_update(self, urlopen): urlopen.return_value = open_data('google.html') self.reader.new_messages.return_value = [1237] self.reader.get.return_value = self.msg self.assertTrue(self.distributor.update()) check_start_stop(self) check_interactions(self, 1237) check_archived(self, self.msg) def test_update_invalid_url(self): self.reader.new_messages.return_value = [1237] self.reader.get.return_value = self.msg self.msg.replace_header('Subject', u'GET') self.assertTrue(self.distributor.update()) check_start_stop(self) self.assertEqual(self.sender.send.call_count, 0) self.assertEqual(self.reader.delete.call_count, 1)
class OnlineDownloadDistributeTest(BaseTest): def setUp(self): super(OnlineDownloadDistributeTest,self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample10') def test_get_download_url(self): self.assertEqual(self.distributor._get_download_url(u'GET http://www.google.com'), u'http://www.google.com') def test_get_download_url_extra_whitespace(self): self.assertEqual(self.distributor._get_download_url(u' GET http://www.google.com '), u'http://www.google.com') def test_get_download_url_too_few_args(self): self.assertEqual(self.distributor._get_download_url(u'http://www.google.com'), None) def test_get_download_url_too_many_args(self): self.assertEqual(self.distributor._get_download_url(u'GET http://www.google.com plus'), None) @patch('urllib2.urlopen') def test_update(self, urlopen): urlopen.return_value = open_data('google.html') self.reader.new_messages.return_value = [1237] self.reader.get.return_value = self.msg self.assertTrue(self.distributor.update()) check_start_stop(self) check_interactions(self, 1237) check_archived(self, self.msg) def test_update_invalid_url(self): self.reader.new_messages.return_value = [1237] self.reader.get.return_value = self.msg self.msg.replace_header('Subject', u'GET') self.assertTrue(self.distributor.update()) check_start_stop(self) self.assertEqual(self.sender.send.call_count, 0) self.assertEqual(self.reader.delete.call_count, 1)
class OnlineDistributeTest(BaseTest): def setUp(self): super(OnlineDistributeTest,self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample') def _check_start_stop(self): check_start_stop(self) def _check_interactions(self, *ids): check_interactions(self, *ids) def _check_archived(self, *msgs): check_archived(self, *msgs) def test_update_nothing_new(self): self.reader.new_messages.return_value = [] self.assertFalse(self.distributor.update()) self._check_start_stop() self._check_interactions() def test_update_connect_throws_exception(self): self.reader.connect.side_effect = Exception('message') self.assertFalse(self.distributor.update()) self.reader.connect.assert_called_once_with() self.assertEqual(self.reader.disconnect.call_count, 0) def _update_with(self, msg): self.reader.new_messages.return_value = [1237] self.reader.get.return_value = msg self.assertTrue(self.distributor.update()) return msg def test_update_one_message(self): self._update_with(self.msg) self._check_start_stop() self._check_interactions(1237) self._check_archived(self.msg) def test_update_multiple_messages(self): messages = { 1237 : self.msg, 1238 : load_msg('sample3'), 1239 : load_msg('sample5') } self.reader.new_messages.return_value = messages.keys() self.reader.get.side_effect = lambda id : messages[id] self.assertTrue(self.distributor.update()) self._check_start_stop() self._check_interactions(*messages.keys()) self._check_archived(*messages.values()) def test_update_invalid_message(self): self._update_with(load_msg('sample7')) self._check_start_stop() self._check_interactions() def test_update_whitelisted_message(self): msg = self._update_with(load_msg('sample8')) self._check_start_stop() self._check_interactions(1237) self._check_archived(msg) def test_update_blacklisted_message(self): self._update_with(load_msg('sample9')) self._check_start_stop() self._check_interactions() def test_update_repeated_message(self): messages = { 1237 : self.msg, 1238 : self.msg } self.reader.new_messages.return_value = messages.keys() self.reader.get.side_effect = lambda id : messages[id] self.assertTrue(self.distributor.update()) self._check_start_stop() self._check_interactions(1237) self._check_archived(self.msg) def test_update_message_without_subject(self): msg = self._update_with(load_msg('sample13')) self._check_start_stop() self._check_interactions(1237) self._check_archived(msg) # Check internal methods to make sure things are working # smoothly def test_isvalid(self): self.assertTrue(self.distributor._isvalid(self.msg)) def test_isvalid_whitelist(self): self.assertTrue(self.distributor._isvalid(load_msg('sample8'))) def test_isvalid_blacklist(self): self.assertFalse(self.distributor._isvalid(load_msg('sample9'))) def test_isvalid_false(self): self.assertFalse(self.distributor._isvalid(load_msg('sample7'))) def test_isvalid_whitelist_skip(self): self.config['accept_whitelist_only'] = False self.assertTrue(self.distributor._isvalid(load_msg('sample7'))) def test_find_sender_email(self): self.assertEqual(self.distributor._find_sender_email(self.msg), '*****@*****.**') def test_find_actual_text(self): self.assertEqual(len(list((self.distributor._find_actual_text(self.msg)))), 2) def test_choose_intro(self): self.assertTrue(self.distributor._choose_intro() in self.config['introductions']) def test_create_footer(self): self.assertTrue(self.distributor._create_footer(self.msg)[2] in self.config['quotes']) def test_edit_msg_anonymize(self): with_emails = load_msg('sample3') self.distributor._edit_msg(with_emails) texts = [msg.get_payload(decode=True) for msg in with_emails.get_payload()] for text in texts: self.assertTrue('sender@' in text) self.assertFalse('@host.com' in text) def test_create_header_special_chars(self): simple_sender = load_msg('sample2') self.config['introductions'] = [ u'salté' ] self.assertEqual(self.distributor._create_header(simple_sender), [u'MIA salté:']) def test_create_header_non_member(self): simple_sender = load_msg('sample8') self.config['introductions'] = [ u'salté' ] self.assertEqual(self.distributor._create_header(simple_sender), [u'whitelist salté:']) def test_create_footer_special_chars(self): quote = u'salté la fuente' self.config['quotes'] = [quote] self.assertTrue(quote in self.distributor._create_footer(self.msg)) def test_edit_msg_special_chars(self): self.config['introductions'] = [ u'salté' ] quote = u'salté la fuente' self.config['quotes'] = [quote] self.distributor._edit_msg(self.msg)
class OnlineDistributeTest(BaseTest): def setUp(self): super(OnlineDistributeTest, self).setUp() self.distributor = OnlineDistributor(self.config) self.sender = Mock(spec=Sender) self.distributor._sender = self.sender self.reader = Mock(spec=Reader) self.distributor._reader = self.reader self.msg = load_msg('sample') def _check_start_stop(self): check_start_stop(self) def _check_interactions(self, *ids): check_interactions(self, *ids) def _check_archived(self, *msgs): check_archived(self, *msgs) def test_update_nothing_new(self): self.reader.new_messages.return_value = [] self.assertFalse(self.distributor.update()) self._check_start_stop() self._check_interactions() def test_update_connect_throws_exception(self): self.reader.connect.side_effect = Exception('message') self.assertFalse(self.distributor.update()) self.reader.connect.assert_called_once_with() self.assertEqual(self.reader.disconnect.call_count, 0) def _update_with(self, msg): self.reader.new_messages.return_value = [1237] self.reader.get.return_value = msg self.assertTrue(self.distributor.update()) return msg def test_update_one_message(self): self._update_with(self.msg) self._check_start_stop() self._check_interactions(1237) self._check_archived(self.msg) def test_update_multiple_messages(self): messages = { 1237: self.msg, 1238: load_msg('sample3'), 1239: load_msg('sample5') } self.reader.new_messages.return_value = messages.keys() self.reader.get.side_effect = lambda id: messages[id] self.assertTrue(self.distributor.update()) self._check_start_stop() self._check_interactions(*messages.keys()) self._check_archived(*messages.values()) def test_update_invalid_message(self): self._update_with(load_msg('sample7')) self._check_start_stop() self._check_interactions() def test_update_whitelisted_message(self): msg = self._update_with(load_msg('sample8')) self._check_start_stop() self._check_interactions(1237) self._check_archived(msg) def test_update_blacklisted_message(self): self._update_with(load_msg('sample9')) self._check_start_stop() self._check_interactions() def test_update_repeated_message(self): messages = {1237: self.msg, 1238: self.msg} self.reader.new_messages.return_value = messages.keys() self.reader.get.side_effect = lambda id: messages[id] self.assertTrue(self.distributor.update()) self._check_start_stop() self._check_interactions(1237) self._check_archived(self.msg) def test_update_message_without_subject(self): msg = self._update_with(load_msg('sample13')) self._check_start_stop() self._check_interactions(1237) self._check_archived(msg) # Check internal methods to make sure things are working # smoothly def test_isvalid(self): self.assertTrue(self.distributor._isvalid(self.msg)) def test_isvalid_whitelist(self): self.assertTrue(self.distributor._isvalid(load_msg('sample8'))) def test_isvalid_blacklist(self): self.assertFalse(self.distributor._isvalid(load_msg('sample9'))) def test_isvalid_false(self): self.assertFalse(self.distributor._isvalid(load_msg('sample7'))) def test_isvalid_whitelist_skip(self): self.config['accept_whitelist_only'] = False self.assertTrue(self.distributor._isvalid(load_msg('sample7'))) def test_find_sender_email(self): self.assertEqual(self.distributor._find_sender_email(self.msg), '*****@*****.**') def test_find_actual_text(self): self.assertEqual( len(list((self.distributor._find_actual_text(self.msg)))), 2) def test_choose_intro(self): self.assertTrue( self.distributor._choose_intro() in self.config['introductions']) def test_create_footer(self): self.assertTrue( self.distributor._create_footer(self.msg)[2] in self.config['quotes']) def test_edit_msg_anonymize(self): with_emails = load_msg('sample3') self.distributor._edit_msg(with_emails) texts = [ msg.get_payload(decode=True) for msg in with_emails.get_payload() ] for text in texts: self.assertTrue('sender@' in text) self.assertFalse('@host.com' in text) def test_create_header_special_chars(self): simple_sender = load_msg('sample2') self.config['introductions'] = [u'salté'] self.assertEqual(self.distributor._create_header(simple_sender), [u'MIA salté:']) def test_create_header_non_member(self): simple_sender = load_msg('sample8') self.config['introductions'] = [u'salté'] self.assertEqual(self.distributor._create_header(simple_sender), [u'whitelist salté:']) def test_create_footer_special_chars(self): quote = u'salté la fuente' self.config['quotes'] = [quote] self.assertTrue(quote in self.distributor._create_footer(self.msg)) def test_edit_msg_special_chars(self): self.config['introductions'] = [u'salté'] quote = u'salté la fuente' self.config['quotes'] = [quote] self.distributor._edit_msg(self.msg)