Пример #1
0
    def test_to_representation_raises_improperly_configured(self):

        class FakeModel(object):

            def __init__(self, pk):
                self.pk = pk

            def __str__(self):
                return "object.pk={}".format(self.pk)

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def is_saved_in_database(self, obj):
                return True

            def get_lookup_value(self, obj):
                return ()

        router = SimpleRouter()
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)

        with self.assertRaises(ImproperlyConfigured):
            instance.to_representation(FakeModel(1))
Пример #2
0
 def test_generate_factory(self):
     url = self.app.generate_url('127.0.0.1', 8080)
     factory = self.app.generate_factory(url,
                                         log_level='debug',
                                         router=SimpleRouter())
     self.assertEqual(factory.log._log_level, 'debug')
     self.assertIsInstance(factory.router, SimpleRouter)
Пример #3
0
    def test_to_representation_returns_none(self):

        class FakeModel(object):

            def __init__(self, pk):
                self.pk = pk

            def __str__(self):
                return "object.pk={}".format(self.pk)

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def is_saved_in_database(self, obj):
                return False

            def get_lookup_value(self, obj):
                return (1, )

        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)

        self.assertIsNone(instance.to_representation(FakeModel(1)))
Пример #4
0
    def test_to_internal_value_raises_error_with_fixing_url(self):

        class FakeModel(object):

            def __init__(self, pk):
                self.pk = pk

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def get_object(self, view_name, view_args, view_kwargs):
                return FakeModel(1)

        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)

        data = {'url': 'test_view/1'}
        obj = instance.to_internal_value(data)
        self.assertIsInstance(obj, FakeModel)
        self.assertEqual(obj.pk, 1)
Пример #5
0
 def test_generate_factory_3(self):
     url = self.app.generate_url('127.0.0.1', 8080)
     factory = self.app.generate_factory(url,
                                         router=SimpleRouter(),
                                         compress=True)
     self.assertEqual(factory.log._log_level, 'info')
     self.assertIsInstance(factory.router, SimpleRouter)
     self.assertEqual(factory.perMessageCompressionAccept, accept)
Пример #6
0
    def test_to_internal_value_raises_error_for_incorrect_type(self):
        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000/',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = self.CustomHyperlinkedRelatedField(
            'test_view', read_only=True
        )

        with self.assertRaises(ValidationError):
            instance.to_internal_value('not a dict')
Пример #7
0
    def test_to_internal_value_raises_error_for_no_primary_key(self):
        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = self.CustomHyperlinkedRelatedField(
            'test_view', read_only=True
        )

        data = {'wrong_url_name': 'wss://127.0.0.1:8000/test_view/1/'}
        with self.assertRaises(ValidationError):
            instance.to_internal_value(data)
Пример #8
0
    def test_to_representation_raises_exception_for_empty_string(self):

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def is_saved_in_database(self, obj):
                return True

            def get_lookup_value(self, obj):
                return ()

        router = SimpleRouter()
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)

        with self.assertRaises(ImproperlyConfigured):
            instance.to_representation('')
Пример #9
0
    def test_to_representation_returns_relative_url(self):

        class FakeModel(object):

            def __init__(self, pk):
                self.pk = pk

            def __str__(self):
                return "object.pk={}".format(self.pk)

        class FakeModelSerializer(object):

            parent = None
            _context = {'relative': True}

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def is_saved_in_database(self, obj):
                return True

            def get_lookup_value(self, obj):
                return (1, )

        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)
        instance.bind('pk', FakeModelSerializer())

        hyperlink_object = instance.to_representation(FakeModel(1))
        self.assertEqual(hyperlink_object, '/test_view/1/')
        self.assertEqual(hyperlink_object.name, 'object.pk=1')
Пример #10
0
    def test_get_url_returns_url_to_an_object(self):

        class FakeHyperlinkField(self.CustomHyperlinkedRelatedField):

            def is_saved_in_database(self, obj):
                return True

            def get_lookup_value(self, obj):
                return (1, )

        router = SimpleRouter()
        router.register('/test_view/{pk}', FakeView, 'GET', name='test_view')
        url_configuration = {
            'path': 'wss://127.0.0.1:8000',
            'urls': router._urls,
            'routes': router._routes
        }
        set_urlconf(url_configuration)
        instance = FakeHyperlinkField('test_view', read_only=True)

        self.assertEqual(
            instance.get_url(object(), 'test_view'),
            'wss://127.0.0.1:8000/test_view/1/'
        )
Пример #11
0
# -*- coding: utf-8 -*-
from aiorest_ws.routers import SimpleRouter

from app.views import UserListView, UserView, CreateUserView, AddressView, \
    CreateAddressView

router = SimpleRouter()
router.register('/user/list', UserListView, 'GET')
router.register('/user/{id}', UserView, ['GET', 'PUT'], name='user-detail')
router.register('/user/', CreateUserView, ['POST'])
router.register('/address/{id}',
                AddressView, ['GET', 'PUT'],
                name='address-detail')
router.register('/address/', CreateAddressView, ['POST'])
Пример #12
0
 def __init__(self, *args, **kwargs):
     super(RequestHandlerFactory, self).__init__(*args, **kwargs)
     self._router = kwargs.get('router', SimpleRouter(*args, **kwargs))
Пример #13
0
# -*- coding: utf-8 -*-
from aiorest_ws.app import Application
from aiorest_ws.command_line import CommandLine
from aiorest_ws.routers import SimpleRouter

from app.urls import router

main_router = SimpleRouter()
main_router.include(router)

if __name__ == '__main__':
    cmd = CommandLine()
    cmd.define('-ip', default='127.0.0.1', help='used ip', type=str)
    cmd.define('-port', default=8080, help='listened port', type=int)
    args = cmd.parse_command_line()

    app = Application()
    app.run(host=args.ip, port=args.port, router=main_router)
Пример #14
0
 def setUp(self):
     super(RestWSRouterTestCase, self).setUp()
     self.router = SimpleRouter()
Пример #15
0
# -*- coding: utf-8 -*-
import pytest

from aiorest_ws.routers import SimpleRouter
from aiorest_ws.endpoints import PlainEndpoint, DynamicEndpoint
from aiorest_ws.utils.validators import to_str, get_object_type


@pytest.mark.parametrize("value, expected", [
    (PlainEndpoint, 'PlainEndpoint'),
    ((PlainEndpoint, ), 'PlainEndpoint'),
    ((PlainEndpoint, DynamicEndpoint), 'PlainEndpoint/DynamicEndpoint'),
])
def test_to_str(value, expected):
    assert to_str(value) == expected


@pytest.mark.parametrize("value, expected", [
    (PlainEndpoint, PlainEndpoint),
    (SimpleRouter(), SimpleRouter),
    (list, list),
])
def test_get_object_type(value, expected):
    assert get_object_type(value) is expected