def setUp(self): self.persistence_helper = self.add_helper( PersistenceHelper(use_riak=True)) riak_manager = self.persistence_helper.get_riak_manager() self.account_store = AccountStore(riak_manager) self.user = yield self.account_store.new_user(u'testuser') # Some old contact proxies for testing migrations. per_account_manager = riak_manager.sub_manager(self.user.key) self.contacts_vnone = per_account_manager.proxy(ContactVNone) self.contacts_v1 = per_account_manager.proxy(ContactV1) self.contacts_v2 = per_account_manager.proxy(Contact)
def setUp(self): self.persistence_helper = self.add_helper( PersistenceHelper(use_riak=True)) riak_manager = self.persistence_helper.get_riak_manager() self.store = AccountStore(riak_manager) # Some old stores for testing migrations. self.store_v2 = AccountStoreV2(riak_manager) self.store_v1 = AccountStoreV1(riak_manager) self.store_vnone = AccountStoreVNone(riak_manager)
class TestUserAccount(VumiTestCase): def setUp(self): self.persistence_helper = self.add_helper( PersistenceHelper(use_riak=True)) riak_manager = self.persistence_helper.get_riak_manager() self.store = AccountStore(riak_manager) # Some old stores for testing migrations. self.store_v2 = AccountStoreV2(riak_manager) self.store_v1 = AccountStoreV1(riak_manager) self.store_vnone = AccountStoreVNone(riak_manager) def assert_user(self, user, **fields): def assert_field(value, name, default): self.assertEqual(fields.get(name, default), value, name) assert_field(user.username, 'username', u'testuser') assert_field(user.tagpools.keys(), 'tagpools', []) assert_field(user.applications.keys(), 'applications', []) assert_field(user.created_at, 'created_at', UTCNearNow()) assert_field(user.event_handler_config, 'event_handler_config', []) assert_field(user.msisdn, 'msisdn', None) assert_field(user.confirm_start_conversation, 'confirm_start_conversation', False) assert_field(user.tags, 'tags', []) assert_field(user.routing_table, 'routing_table', RoutingTable({})) def assert_user_v2(self, user, **fields): def assert_field(value, name, default): self.assertEqual(fields.get(name, default), value, name) assert_field(user.username, 'username', u'testuser') assert_field(user.tagpools.keys(), 'tagpools', []) assert_field(user.applications.keys(), 'applications', []) assert_field(user.created_at, 'created_at', UTCNearNow()) assert_field(user.event_handler_config, 'event_handler_config', []) assert_field(user.msisdn, 'msisdn', None) assert_field(user.confirm_start_conversation, 'confirm_start_conversation', False) assert_field(user.tags, 'tags', []) assert_field(user.routing_table, 'routing_table', {}) def assert_user_v1(self, user, **fields): def assert_field(value, name, default): self.assertEqual(fields.get(name, default), value, name) assert_field(user.username, 'username', u'testuser') assert_field(user.tagpools.keys(), 'tagpools', []) assert_field(user.applications.keys(), 'applications', []) assert_field(user.created_at, 'created_at', UTCNearNow()) assert_field(user.event_handler_config, 'event_handler_config', []) assert_field(user.msisdn, 'msisdn', None) assert_field(user.confirm_start_conversation, 'confirm_start_conversation', False) assert_field(user.tags, 'tags', []) def assert_user_vnone(self, user, **fields): def assert_field(value, name, default): self.assertEqual(fields.get(name, default), value, name) assert_field(user.username, 'username', u'testuser') assert_field(user.tagpools.keys(), 'tagpools', []) assert_field(user.applications.keys(), 'applications', []) assert_field(user.created_at, 'created_at', UTCNearNow()) assert_field(user.event_handler_config, 'event_handler_config', None) assert_field(user.msisdn, 'msisdn', None) assert_field(user.confirm_start_conversation, 'confirm_start_conversation', False) @inlineCallbacks def test_new_account(self): user = yield self.store.new_user(u'testuser') self.assert_user(user) @inlineCallbacks def test_migrate_new_from_v2(self): user_v2 = yield self.store_v2.new_user(u'testuser') self.assert_user_v2(user_v2) user = yield self.store.get_user(user_v2.key) self.assert_user(user) @inlineCallbacks def test_migrate_new_from_v1(self): user_v1 = yield self.store_v1.new_user(u'testuser') self.assert_user_v1(user_v1) user = yield self.store.get_user(user_v1.key) self.assert_user(user) @inlineCallbacks def test_migrate_new_from_vnone(self): user_vnone = yield self.store_vnone.new_user(u'testuser') self.assert_user_vnone(user_vnone) user = yield self.store.get_user(user_vnone.key) self.assert_user(user)
class TestContact(VumiTestCase): @inlineCallbacks def setUp(self): self.persistence_helper = self.add_helper( PersistenceHelper(use_riak=True)) riak_manager = self.persistence_helper.get_riak_manager() self.account_store = AccountStore(riak_manager) self.user = yield self.account_store.new_user(u'testuser') # Some old contact proxies for testing migrations. per_account_manager = riak_manager.sub_manager(self.user.key) self.contacts_vnone = per_account_manager.proxy(ContactVNone) self.contacts_v1 = per_account_manager.proxy(ContactV1) self.contacts_v2 = per_account_manager.proxy(Contact) def assert_with_index(self, model_obj, field, value): self.assertEqual(getattr(model_obj, field), value) index_name = '%s_bin' % (field,) index_values = [] for index in model_obj._riak_object.get_indexes(): if index.get_field() == index_name: index_values.append(index.get_value()) if value is None: self.assertEqual([], index_values) else: self.assertEqual([value], index_values) def _make_contact(self, model_proxy, **fields): contact_id = uuid4().get_hex() groups = fields.pop('groups', []) contact = model_proxy(contact_id, user_account=self.user.key, **fields) for group in groups: contact.add_to_group(group) d = contact.save() d.addCallback(lambda _: contact) return d def make_contact_vnone(self, **fields): return self._make_contact(self.contacts_vnone, **fields) def make_contact_v1(self, **fields): return self._make_contact(self.contacts_v1, **fields) def make_contact_v2(self, **fields): return self._make_contact(self.contacts_v2, **fields) @inlineCallbacks def test_contact_vnone(self): contact = yield self.make_contact_vnone(name=u'name', msisdn=u'msisdn') self.assertEqual(contact.name, 'name') self.assertEqual(contact.msisdn, 'msisdn') @inlineCallbacks def test_contact_v1(self): contact = yield self.make_contact_v1( msisdn=u'msisdn', mxit_id=u'mxit', wechat_id=u'wechat') self.assertEqual(contact.msisdn, 'msisdn') self.assertEqual(contact.mxit_id, 'mxit') self.assertEqual(contact.wechat_id, 'wechat') @inlineCallbacks def test_contact_vnone_to_v1(self): contact_vnone = yield self.make_contact_vnone( name=u'name', msisdn=u'msisdn') contact_vnone.extra["thing"] = u"extra-thing" contact_vnone.subscription["app"] = u"1" yield contact_vnone.save() self.assertEqual(contact_vnone.VERSION, None) contact_v1 = yield self.contacts_v1.load(contact_vnone.key) self.assertEqual(contact_v1.name, 'name') self.assertEqual(contact_v1.msisdn, 'msisdn') self.assertEqual(contact_v1.mxit_id, None) self.assertEqual(contact_v1.wechat_id, None) self.assertEqual(contact_v1.extra["thing"], u"extra-thing") self.assertEqual(contact_v1.subscription["app"], u"1") self.assertEqual(contact_v1.VERSION, 1) @inlineCallbacks def test_contact_v2(self): contact = yield self.make_contact_v2( name=u'name', msisdn=u'msisdn', twitter_handle=u'twitter', facebook_id=u'facebook', bbm_pin=u'bbm', gtalk_id=u'gtalk', mxit_id=u'mxit', wechat_id=u'wechat') self.assertEqual(contact.name, 'name') self.assert_with_index(contact, 'msisdn', 'msisdn') self.assert_with_index(contact, 'twitter_handle', 'twitter') self.assert_with_index(contact, 'facebook_id', 'facebook') self.assert_with_index(contact, 'bbm_pin', 'bbm') self.assert_with_index(contact, 'gtalk_id', 'gtalk') self.assert_with_index(contact, 'mxit_id', 'mxit') self.assert_with_index(contact, 'wechat_id', 'wechat') @inlineCallbacks def test_contact_v1_to_v2(self): contact_v1 = yield self.make_contact_v1( name=u'name', msisdn=u'msisdn', twitter_handle=u'twitter', facebook_id=u'facebook', bbm_pin=u'bbm', gtalk_id=u'gtalk', mxit_id=u'mxit', wechat_id=u'wechat') contact_v1.extra["thing"] = u"extra-thing" contact_v1.subscription["app"] = u"1" yield contact_v1.save() self.assertEqual(contact_v1.VERSION, 1) contact_v2 = yield self.contacts_v2.load(contact_v1.key) self.assertEqual(contact_v2.name, 'name') self.assertEqual(contact_v2.extra["thing"], u"extra-thing") self.assertEqual(contact_v2.subscription["app"], u"1") self.assertEqual(contact_v2.VERSION, 2) self.assert_with_index(contact_v2, 'msisdn', 'msisdn') self.assert_with_index(contact_v2, 'twitter_handle', 'twitter') self.assert_with_index(contact_v2, 'facebook_id', 'facebook') self.assert_with_index(contact_v2, 'bbm_pin', 'bbm') self.assert_with_index(contact_v2, 'gtalk_id', 'gtalk') self.assert_with_index(contact_v2, 'mxit_id', 'mxit') self.assert_with_index(contact_v2, 'wechat_id', 'wechat') @inlineCallbacks def test_contact_vnone_to_v2(self): contact_vnone = yield self.make_contact_vnone( name=u'name', msisdn=u'msisdn', twitter_handle=u'twitter', facebook_id=u'facebook', bbm_pin=u'bbm', gtalk_id=u'gtalk') contact_vnone.extra["thing"] = u"extra-thing" contact_vnone.subscription["app"] = u"1" yield contact_vnone.save() self.assertEqual(contact_vnone.VERSION, None) contact_v2 = yield self.contacts_v2.load(contact_vnone.key) self.assertEqual(contact_v2.name, 'name') self.assertEqual(contact_v2.extra["thing"], u"extra-thing") self.assertEqual(contact_v2.subscription["app"], u"1") self.assertEqual(contact_v2.VERSION, 2) self.assert_with_index(contact_v2, 'msisdn', 'msisdn') self.assert_with_index(contact_v2, 'twitter_handle', 'twitter') self.assert_with_index(contact_v2, 'facebook_id', 'facebook') self.assert_with_index(contact_v2, 'bbm_pin', 'bbm') self.assert_with_index(contact_v2, 'gtalk_id', 'gtalk') self.assert_with_index(contact_v2, 'mxit_id', None) self.assert_with_index(contact_v2, 'wechat_id', None)