def test_blacklisted_contacts_has_low_priority(self):
        blacklist = Blacklist(prioritizer.get_redis_client(), Encoder())
        blacklisted_number = "1234"
        blacklist.poll_contacts(231, blacklisted_number)
        params = {'sender': blacklisted_number, 'message': 'JOIN'}
        german_url = self.generate_throttle_url(**params)
        ureport_url = self.generate_ureport_url(**params)

        self.assert_low_priority(german_url, ureport_url)

        blacklist.delete_poll_contacts(231, blacklisted_number)
 def setUp(self):
     self.client = mock_strict_redis_client()
     self.encoder = Mock()
     self.encoder.encode = self.reverse_string
     self.blacklist = Blacklist(self.client, self.encoder)
     self.whitelist = Whitelist(self.client, self.encoder)
     self.poll_texts_key_name = "blacklist:poll_texts:231"
     self.poll_contacts_key_name = "blacklist:poll_contacts:231"
class TestBlacklistFilter(TestCase):

    def setUp(self):
        self.client = mock_strict_redis_client()
        self.blacklist = Blacklist(self.client, Encoder())

    def test_that_priority_is_undefined_when_nothing_is_blacklisted(self):
        blacklist_filter = BlacklistFilter(self.blacklist, "any message")
        priority = blacklist_filter.prioritize()
        self.assertEqual(priority, Priority.UNKNOWN)

    def test_that_priority_is_low_for_something_that_is_blacklisted(self):
        self.blacklist.poll_text(231, "blacklisted text")

        blacklist_filter = BlacklistFilter(self.blacklist, "blacklisted text")
        priority = blacklist_filter.prioritize()
        self.assertEqual(priority, Priority.LOW)
class TestStepsCache(PriorityTestCase):

    def setUp(self):
        self.blacklist = Blacklist(prioritizer.get_redis_client(), Encoder())

    def tearDown(self):
        self.blacklist.delete_poll_text_set(231)

    def test_that_a_registration_message_is_prioritized_as_high_priority(self):
        self.assert_high_priority(
            self.get_url("http://%s/router?text=How+did+you+hear+about+U+REPORT?&to=256704000000"))

    def test_that_a_message_with_single_recipient_gets_prioritized_as_high_priority(self):
        self.assert_high_priority(self.get_url("http://%s/router?text=Hi&to=256704000000"))

    def test_that_a_none_registration_message_with_two_recipients_gets_low_priority(self):
        self.assert_low_priority(self.get_url("http://%s/router?text=Hi&to=256704000000+256704000001"))

    def test_that_a_blacklisted_message_to_one_person_gets_low_priority(self):
        self.blacklist.poll_text(231, "Blacklisted message")
        self.assert_low_priority(self.get_url("http://%s/router?text=Blacklisted+message&to=256704000000"))
 def setUp(self):
     self.blacklist = Blacklist(prioritizer.get_redis_client(), Encoder())
Example #6
0
from models.encoder import Encoder
from models.prioritylist import Blacklist
import redis


def get_redis_client():
    return redis.StrictRedis(host='localhost', port=6379, db=0)

blacklist = Blacklist(get_redis_client(), Encoder())
blacklist.poll_text(232, "the beginning of time")

class TestBlacklist(TestCase):

    def setUp(self):
        self.client = mock_strict_redis_client()
        self.encoder = Mock()
        self.encoder.encode = self.reverse_string
        self.blacklist = Blacklist(self.client, self.encoder)
        self.whitelist = Whitelist(self.client, self.encoder)
        self.poll_texts_key_name = "blacklist:poll_texts:231"
        self.poll_contacts_key_name = "blacklist:poll_contacts:231"

    def reverse_string(self, text):
        return text[::-1]

    def test_that_poll_text_can_be_black_listed(self):
        self.blacklist.poll_text(231, "sample text")
        self.assertTrue(self.client.sismember(self.poll_texts_key_name, self.reverse_string("sample text")))

    def test_that_an_array_of_poll_texts_can_be_black_listed(self):
        self.blacklist.poll_text(231, ["sample 1", "sample 2", "sample 3"])
        self.assertTrue(self.client.sismember(self.poll_texts_key_name, self.reverse_string("sample 1")))
        self.assertTrue(self.client.sismember(self.poll_texts_key_name, self.reverse_string("sample 2")))
        self.assertTrue(self.client.sismember(self.poll_texts_key_name, self.reverse_string("sample 3")))

        self.assertFalse(self.client.sismember(self.poll_texts_key_name, self.reverse_string("sample 4")))

    def test_that_only_inserted_text_exist(self):
        self.blacklist.poll_text(231, "valid text")

        self.assertFalse(self.blacklist.has_poll_text(231, "invalid text"))
        self.assertTrue(self.blacklist.has_poll_text(231, "valid text"))

    def test_that_poll_text_can_be_deleted(self):
        text_to_delete = "text to delete"

        self.blacklist.poll_text(231, text_to_delete)
        self.blacklist.poll_text(231, "text not to delete")
        self.assertTrue(self.blacklist.has_poll_text(231, text_to_delete))

        self.blacklist.delete_poll_text(231, text_to_delete)
        self.assertFalse(self.blacklist.has_poll_text(231, text_to_delete))

        self.assertTrue(self.blacklist.has_poll_text(231, "text not to delete"))

    def test_that_poll_contacts_can_be_black_listed(self):
        ones = "1111111"
        twos = "2222222"
        threes = "33333"

        self.blacklist.poll_contacts(231, [ones, twos])

        self.assertTrue(self.client.sismember(self.poll_contacts_key_name, ones))
        self.assertTrue(self.client.sismember(self.poll_contacts_key_name, twos))
        self.assertFalse(self.client.sismember(self.poll_contacts_key_name, threes))

    def test_that_inserted_poll_contact_exists(self):
        ones = "1111111"
        self.blacklist.poll_contacts(231, ones)
        self.assertTrue(self.blacklist.has_poll_contact(231, ones))

    def test_that_poll_contacts_can_be_deleted(self):
        ones = "1111111"
        twos = "2222222"
        threes = "33333"

        self.blacklist.poll_contacts(231, [ones, twos, threes])
        self.assertTrue(self.blacklist.has_poll_contact(231, ones))
        self.assertTrue(self.blacklist.has_poll_contact(231, twos))
        self.assertTrue(self.blacklist.has_poll_contact(231, threes))

        self.blacklist.delete_poll_contacts(231, [twos,threes])

        self.assertTrue(self.blacklist.has_poll_contact(231, ones))

        self.assertFalse(self.blacklist.has_poll_contact(231, twos))
        self.assertFalse(self.blacklist.has_poll_contact(231, threes))

    def test_that_whitelist_returns_a_valid_key_name(self):
        text_key_name = self.whitelist.get_key_name(231, ContentTypes.TEXT)
        contacts_key_name = self.whitelist.get_key_name(231, ContentTypes.CONTACTS)

        self.assertEqual(text_key_name.find("whitelist:"), 0)
        self.assertEqual(contacts_key_name.find("whitelist:"), 0)

    def test_that_we_can_fetch_the_poll_keys(self):
        self.blacklist.poll_text(231, "sample 1")
        self.blacklist.poll_text(232, "sample 2")

        poll_keys = self.blacklist.get_poll_text_keys()

        self.assertTrue('blacklist:poll_texts:231' in poll_keys and 'blacklist:poll_texts:232' in poll_keys)

    def test_that_only_poll_contact_keys_are_returned(self):
        self.blacklist.poll_contacts(231, "11111111")
        self.blacklist.poll_text(232, "sample 2")

        poll_contact_keys = self.blacklist.get_poll_contact_keys()

        self.assertEqual(len(poll_contact_keys), 1)

    def test_that_poll_keys_returns_nothing_when_no_poll_text_was_added(self):
        poll_keys = self.blacklist.get_poll_text_keys()
        self.assertEqual(poll_keys, [])

    def test_that_poll_keys_are_returned_for_only_the_specific_list_type(self):
        self.blacklist.poll_text(231, "sample 1")
        self.whitelist.poll_text(232, "sample 2")

        blacklist_poll_keys = self.blacklist.get_poll_text_keys()

        self.assertEqual(len(blacklist_poll_keys), 1)

    def test_that_polls_have_text(self):
        self.blacklist.poll_text(231, "sample 1")
        self.blacklist.poll_text(232, "sample 2")

        self.assertTrue(self.blacklist.contains_text("sample 1"))
        self.assertTrue(self.blacklist.contains_text("sample 2"))

        self.assertFalse(self.blacklist.contains_text("sample 3"))

    def test_that_polls_have_contact(self):
        self.blacklist.poll_contacts(231, "sample 1")
        self.blacklist.poll_contacts(232, "sample 2")

        self.assertTrue(self.blacklist.contains_contact("sample 1"))
        self.assertTrue(self.blacklist.contains_contact("sample 2"))

        self.assertFalse(self.blacklist.contains_contact("sample 3"))

    def test_that_a_text_set_can_be_deleted(self):
        self.blacklist.poll_text(231, "sample 1")
        self.assertTrue(self.blacklist.set_key_exists(231, ContentTypes.TEXT))

        self.blacklist.delete_poll_text_set(231)
        self.assertFalse(self.blacklist.set_key_exists(231, ContentTypes.TEXT))

    def test_that_a_contacts_set_can_be_deleted(self):
        self.blacklist.poll_contacts(231, "1111111")
        self.assertTrue(self.blacklist.set_key_exists(231, ContentTypes.CONTACTS))

        self.blacklist.delete_poll_contacts_set(231)
        self.assertFalse(self.blacklist.set_key_exists(231, ContentTypes.CONTACTS))

    def test_that_add_expire_method_gets_called_with_key_name(self):
        self.blacklist.add_expire = Mock()
        self.blacklist.poll_text(231, "sample 1")

        self.blacklist.add_expire.assert_called_with("blacklist:poll_texts:231")

    def test_that_add_expire_only_adds_expire_when_no_time_to_live_exists(self):
        original_expire = self.blacklist.redis_client.expire
        self.blacklist.redis_client.expire = Mock()
        self.blacklist.poll_text(231, "sample 1")
        original_expire("blacklist:poll_texts:231", 86400)

        self.blacklist.poll_text(231, "sample 2")
        self.blacklist.redis_client.expire.assert_called_once_with("blacklist:poll_texts:231", 86400)
 def setUp(self):
     self.client = mock_strict_redis_client()
     self.blacklist = Blacklist(self.client, Encoder())