コード例 #1
0
    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)
コード例 #2
0
ファイル: test_models.py プロジェクト: TouK/vumi-go
    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)
コード例 #3
0
ファイル: test_models.py プロジェクト: TouK/vumi-go
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)
コード例 #4
0
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)