Beispiel #1
0
 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')
Beispiel #2
0
 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')
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)