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)
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')