コード例 #1
0
class TestUser(AsyncTestCase):
    def setUp(self):
        AsyncTestCase.setUp(self)
        config = pnconf_obj_copy()
        self.pn = PubNubTornado(config, custom_ioloop=self.io_loop)

    @pn_vcr.use_cassette(
        'tests/integrational/fixtures/tornado/user/users_get.yaml',
        filter_query_parameters=['uuid', 'seqn', 'pnsdk'])
    @tornado.testing.gen_test
    def test_get_users(self):
        envelope = yield self.pn.get_users().include('custom').future()

        assert (isinstance(envelope, TornadoEnvelope))
        assert not envelope.status.is_error()
        assert isinstance(envelope.result, PNGetUsersResult)
        assert isinstance(envelope.status, PNStatus)
        data = envelope.result.data
        assert len(data) == 100
        assert set([
            'name', 'id', 'externalId', 'profileUrl', 'email', 'custom',
            'created', 'updated', 'eTag'
        ]) == set(data[0])
        assert set([
            'name', 'id', 'externalId', 'profileUrl', 'email', 'custom',
            'created', 'updated', 'eTag'
        ]) == set(data[1])
        self.pn.stop()

    @pn_vcr.use_cassette(
        'tests/integrational/fixtures/tornado/user/create_user.yaml',
        filter_query_parameters=['uuid', 'seqn', 'pnsdk'])
    @tornado.testing.gen_test
    def test_create_user(self):
        data = {'id': 'mg', 'name': 'MAGNUM', 'custom': {'XXX': 'YYYY'}}
        envelope = yield self.pn.create_user().data(data).include(
            'custom').future()

        assert (isinstance(envelope, TornadoEnvelope))
        assert not envelope.status.is_error()
        assert isinstance(envelope.result, PNCreateUserResult)
        assert isinstance(envelope.status, PNStatus)
        data = envelope.result.data
        assert data['id'] == 'mg'
        assert data['name'] == 'MAGNUM'
        assert data['externalId'] is None
        assert data['profileUrl'] is None
        assert data['email'] is None
        assert data['custom'] == {'XXX': 'YYYY'}
        self.pn.stop()

    @pn_vcr.use_cassette(
        'tests/integrational/fixtures/tornado/user/fetch_user.yaml',
        filter_query_parameters=['uuid', 'seqn', 'pnsdk'])
    @tornado.testing.gen_test
    def test_get_user(self):
        envelope = yield self.pn.get_user().user_id('mg').include(
            'custom').future()

        assert (isinstance(envelope, TornadoEnvelope))
        assert not envelope.status.is_error()
        assert isinstance(envelope.result, PNGetUserResult)
        assert isinstance(envelope.status, PNStatus)
        data = envelope.result.data
        assert set([
            'name', 'id', 'externalId', 'profileUrl', 'email', 'created',
            'updated', 'eTag', 'custom'
        ]) == set(data)
        assert data['id'] == 'mg'
        assert data['name'] == 'MAGNUM'
        assert data['externalId'] is None
        assert data['profileUrl'] is None
        assert data['email'] is None
        assert data['custom'] == {'XXX': 'YYYY'}
        self.pn.stop()

    @pn_vcr.use_cassette(
        'tests/integrational/fixtures/tornado/user/update_user.yaml',
        filter_query_parameters=['uuid', 'seqn', 'pnsdk'])
    @tornado.testing.gen_test
    def test_update_user(self):
        envelope = yield self.pn.update_user().user_id('mg').data({
            'name':
            'number 3'
        }).include('custom').future()

        assert (isinstance(envelope, TornadoEnvelope))
        assert not envelope.status.is_error()
        assert isinstance(envelope.result, PNUpdateUserResult)
        assert isinstance(envelope.status, PNStatus)
        data = envelope.result.data
        assert set([
            'name', 'id', 'externalId', 'profileUrl', 'email', 'created',
            'updated', 'eTag', 'custom'
        ]) == set(data)
        assert data['id'] == 'mg'
        assert data['name'] == 'number 3'
        assert data['externalId'] is None
        assert data['profileUrl'] is None
        assert data['email'] is None
        assert data['custom'] == {'XXX': 'YYYY'}
        self.pn.stop()

    @pn_vcr.use_cassette(
        'tests/integrational/fixtures/tornado/user/delete_user.yaml',
        filter_query_parameters=['uuid', 'seqn', 'pnsdk'])
    @tornado.testing.gen_test
    def test_delete_user(self):
        envelope = yield self.pn.delete_user().user_id('mg').future()

        assert (isinstance(envelope, TornadoEnvelope))
        assert not envelope.status.is_error()
        assert isinstance(envelope.result, PNDeleteUserResult)
        assert isinstance(envelope.status, PNStatus)
        self.pn.stop()