Esempio n. 1
0
 def setUp(self):
     self.vumi_helper = yield self.add_helper(VumiApiHelper())
     self.user_helper = yield self.vumi_helper.get_or_create_user()
     riak_manager = self.vumi_helper.get_riak_manager()
     self.contact_store = ContactStore(
         riak_manager, self.user_helper.account_key)
     # Old contact proxy for making unindexed contacts.
     per_account_manager = riak_manager.sub_manager(
         self.user_helper.account_key)
     self.contacts_v1 = per_account_manager.proxy(ContactV1)
Esempio n. 2
0
class TestContactStore(VumiTestCase):
    @inlineCallbacks
    def setUp(self):
        self.vumi_helper = yield self.add_helper(VumiApiHelper())
        self.user_helper = yield self.vumi_helper.get_or_create_user()
        riak_manager = self.vumi_helper.get_riak_manager()
        self.contact_store = ContactStore(
            riak_manager, self.user_helper.account_key)
        # Old contact proxy for making unindexed contacts.
        per_account_manager = riak_manager.sub_manager(
            self.user_helper.account_key)
        self.contacts_v1 = per_account_manager.proxy(ContactV1)

    def make_unindexed_contact(self, **fields):
        contact_id = uuid4().get_hex()
        groups = fields.pop('groups', [])
        contact = self.contacts_v1(
            contact_id, user_account=self.user_helper.account_key, **fields)
        for group in groups:
            contact.add_to_group(group)
        d = contact.save()
        d.addCallback(lambda _: contact)
        return d

    @inlineCallbacks
    def test_contact_for_addr_not_found(self):
        yield self.contact_store.new_contact(
            name=u'name', msisdn=u'+27831234567')
        self.contact_store.FIND_BY_INDEX_SEARCH_FALLBACK = False
        contact_d = self.contact_store.contact_for_addr(
            'sms', u'nothing', create=False)
        yield self.assertFailure(contact_d, ContactNotFoundError)

    @inlineCallbacks
    def test_contact_for_addr_msisdn(self):
        contact = yield self.contact_store.new_contact(
            name=u'name', msisdn=u'+27831234567')
        found_contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_gtalk(self):
        contact = yield self.contact_store.new_contact(
            name=u'name', msisdn=u'+27831234567', gtalk_id=u'*****@*****.**')
        found_contact = yield self.contact_store.contact_for_addr(
            'gtalk', u'*****@*****.**', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_unindexed(self):
        contact = yield self.make_unindexed_contact(
            name=u'name', msisdn=u'+27831234567')
        found_contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_unindexed_index_disabled(self):
        contact = yield self.make_unindexed_contact(
            name=u'name', msisdn=u'+27831234567')
        self.contact_store.FIND_BY_INDEX = False
        found_contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_unindexed_index_and_fallback_disabled(self):
        contact = yield self.make_unindexed_contact(
            name=u'name', msisdn=u'+27831234567')
        self.contact_store.FIND_BY_INDEX = False
        found_contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_unindexed_fallback_disabled(self):
        yield self.make_unindexed_contact(name=u'name', msisdn=u'+27831234567')
        self.contact_store.FIND_BY_INDEX_SEARCH_FALLBACK = False
        contact_d = self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        yield self.assertFailure(contact_d, ContactNotFoundError)

    @inlineCallbacks
    def test_contact_for_addr_indexed_fallback_disabled(self):
        contact = yield self.contact_store.new_contact(
            name=u'name', msisdn=u'+27831234567')
        self.contact_store.FIND_BY_INDEX_SEARCH_FALLBACK = False
        found_contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=False)
        self.assertEqual(contact.key, found_contact.key)

    @inlineCallbacks
    def test_contact_for_addr_new(self):
        contact = yield self.contact_store.contact_for_addr(
            'sms', u'+27831234567', create=True)
        self.assertEqual(contact.msisdn, u'+27831234567')

    @inlineCallbacks
    def test_new_contact_for_addr(self):
        contact = yield self.contact_store.new_contact_for_addr(
            'sms', u'+27831234567')
        self.assertEqual(contact.msisdn, u'+27831234567')

    @inlineCallbacks
    def test_new_contact_for_addr_gtalk(self):
        contact = yield self.contact_store.new_contact_for_addr(
            'gtalk', u'*****@*****.**')
        self.assertEqual(contact.gtalk_id, u'*****@*****.**')
        self.assertEqual(contact.msisdn, u'unknown')