コード例 #1
0
ファイル: test_app.py プロジェクト: Gipzo/aiorest-ws
 def test_middleware_getter_2(self):
     self.app = Application(middlewares=(FakeTokenMiddleware, ))
     self.assertEqual(len(self.app.middlewares), 1)
     self.assertIsInstance(self.app.middlewares[0], FakeTokenMiddleware)
コード例 #2
0
ファイル: test_app.py プロジェクト: Gipzo/aiorest-ws
class ApplicationTestCase(unittest.TestCase):

    def setUp(self):
        super(ApplicationTestCase, self).setUp()
        self.app = Application()

    def test_factory_getter(self):
        self.assertEqual(self.app.factory, self.app._factory)

    def test_factory_setter_1(self):
        self.app.factory = RequestHandlerFactory
        self.assertEqual(type(self.app.factory), type(self.app._factory))

    def test_factory_setter_2(self):
        with self.assertRaises(TypeError):
            self.app.factory = u'NotFactory'

    def test_middleware_getter_1(self):
        self.assertEqual(self.app.middlewares, [])

    def test_middleware_getter_2(self):
        self.app = Application(middlewares=(FakeTokenMiddleware, ))
        self.assertEqual(len(self.app.middlewares), 1)
        self.assertIsInstance(self.app.middlewares[0], FakeTokenMiddleware)

    def test_protocol_getter(self):
        self.assertEqual(self.app.protocol, self.app._protocol)

    def test_protocol_setter_1(self):
        self.app.protocol = RequestHandlerProtocol
        self.assertEqual(type(self.app.protocol), type(self.app._protocol))

    def test_protocol_setter_2(self):
        with self.assertRaises(TypeError):
            self.app.protocol = u'NotProtocol'

    def test_certificate_getter(self):
        self.assertEqual(self.app.certificate, self.app._certificate)

    def test_certificate_setter(self):
        certificate_path = u'web/keys/server.crt'
        self.app.certificate = certificate_path
        self.assertEqual(self.app.certificate, certificate_path)

    def test_key_getter(self):
        self.assertEqual(self.app.key, self.app._key)

    def test_key_setter(self):
        key_path = u'web/keys/server.key'
        self.app.key = key_path
        self.assertEqual(self.app.key, key_path)

    def test_url(self):
        self.app.certificate = self.app.key = None
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.url, u'wss://{0}:{1}')

    def test_isSecure(self):
        self.app.certificate = self.app.key = None
        self.assertFalse(self.app.isSecure)

    def test_isSecure_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        self.assertFalse(self.app.isSecure)

    def test_isSecure_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        self.assertFalse(self.app.isSecure)

    def test_isSecure_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.isSecure)

    def test_get_ssl_context(self):
        self.app.certificate = self.app.key = None
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_4(self):
        self.app.certificate = u'./tests/keys/server.crt'
        self.app.key = u'./tests/keys/server.key'
        ssl_context = self.app._get_ssl_context()
        self.assertIsInstance(ssl_context, ssl.SSLContext)

    def test_init_factory(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app._init_factory(url)
        self.assertFalse(factory.debug)
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_init_factory_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'debug': False}
        factory = self.app._init_factory(url, **options)
        self.assertFalse(factory.debug)
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_init_factory_3(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'debug': True}
        factory = self.app._init_factory(url, **options)
        self.assertTrue(factory.debug)
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_enable_compressing(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertIsNone(factory.perMessageCompressionAccept('not_used_arg'))

    def test_enable_compressing_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'compress': False}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertIsNone(factory.perMessageCompressionAccept('not_used_arg'))

    def test_enable_compressing_3(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'compress': True}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertEqual(factory.perMessageCompressionAccept, accept)

    def test_set_factory_router(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {}
        factory = self.app._init_factory(url)
        self.app._set_factory_router(factory, **options)
        self.assertIsInstance(factory.router, SimpleRouter)

    def test_set_factory_router_2(self):
        class CustomRouter(SimpleRouter):
            pass

        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'router': CustomRouter()}
        factory = self.app._init_factory(url)
        self.app._set_factory_router(factory, **options)
        self.assertIsInstance(factory.router, CustomRouter)

    def test_allow_hixie76(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app._init_factory(url)
        self.assertFalse(factory.allowHixie76)
        self.app._allow_hixie76(factory)
        self.assertTrue(factory.allowHixie76)

    def test_generate_factory(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app.generate_factory(url, debug=True)
        self.assertTrue(factory.debug)
        self.assertIsInstance(factory.router, SimpleRouter)
        self.assertTrue(factory.allowHixie76)

    def test_generate_factory_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app.generate_factory(url, router=SimpleRouter())
        self.assertFalse(factory.debug)
        self.assertIsInstance(factory.router, SimpleRouter)
        self.assertTrue(factory.allowHixie76)

    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.assertFalse(factory.debug)
        self.assertIsInstance(factory.router, SimpleRouter)
        self.assertEqual(factory.perMessageCompressionAccept, accept)
        self.assertTrue(factory.allowHixie76)

    def test_generate_url(self):
        host, ip = u'127.0.0.1', 8080
        self.assertEqual(
            self.app.generate_url(host, ip),
            u'ws://{0}:{1}/'.format(host, ip)
        )

    def test_generate_url_2(self):
        host, ip, path = u'127.0.0.1', 8080, ''
        self.assertEqual(
            self.app.generate_url(host, ip, path),
            u'ws://{0}:{1}/'.format(host, ip, path)
        )

    def test_generate_url_3(self):
        host, ip, path = u'127.0.0.1', 8080, 'ssl'
        self.assertEqual(
            self.app.generate_url(host, ip, path),
            u'ws://{0}:{1}/{2}'.format(host, ip, path)
        )

    def test_generate_url_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip = u'127.0.0.1', 8080
        self.assertEqual(
            self.app.generate_url(host, ip),
            u'wss://{0}:{1}/'.format(host, ip)
        )

    def test_generate_url_5(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip, path = u'127.0.0.1', 8080, ''
        self.assertEqual(
            self.app.generate_url(host, ip, path),
            u'wss://{0}:{1}/'.format(host, ip, path)
        )

    def test_generate_url_6(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip, path = u'127.0.0.1', 8080, 'ssl'
        self.assertEqual(
            self.app.generate_url(host, ip, path),
            u'wss://{0}:{1}/{2}'.format(host, ip, path)
        )
コード例 #3
0
ファイル: test_app.py プロジェクト: Gipzo/aiorest-ws
 def setUp(self):
     super(ApplicationTestCase, self).setUp()
     self.app = Application()
コード例 #4
0
 def setUp(self):
     super(ApplicationTestCase, self).setUp()
     self.app = Application()
コード例 #5
0
 def test_middleware_getter_2(self):
     self.app = Application(middlewares=(FakeTokenMiddleware, ))
     self.assertEqual(len(self.app.middlewares), 1)
     self.assertIsInstance(self.app.middlewares[0], FakeTokenMiddleware)
コード例 #6
0
class ApplicationTestCase(unittest.TestCase):
    def setUp(self):
        super(ApplicationTestCase, self).setUp()
        self.app = Application()

    def test_factory_getter(self):
        self.assertEqual(self.app.factory, self.app._factory)

    def test_factory_setter_1(self):
        self.app.factory = RequestHandlerFactory
        self.assertEqual(type(self.app.factory), type(self.app._factory))

    def test_factory_setter_2(self):
        with self.assertRaises(TypeError):
            self.app.factory = u'NotFactory'

    def test_middleware_getter_1(self):
        self.assertEqual(self.app.middlewares, [])

    def test_middleware_getter_2(self):
        self.app = Application(middlewares=(FakeTokenMiddleware, ))
        self.assertEqual(len(self.app.middlewares), 1)
        self.assertIsInstance(self.app.middlewares[0], FakeTokenMiddleware)

    def test_protocol_getter(self):
        self.assertEqual(self.app.protocol, self.app._protocol)

    def test_protocol_setter_1(self):
        self.app.protocol = RequestHandlerProtocol
        self.assertEqual(type(self.app.protocol), type(self.app._protocol))

    def test_protocol_setter_2(self):
        with self.assertRaises(TypeError):
            self.app.protocol = u'NotProtocol'

    def test_certificate_getter(self):
        self.assertEqual(self.app.certificate, self.app._certificate)

    def test_certificate_setter(self):
        certificate_path = u'web/keys/server.crt'
        self.app.certificate = certificate_path
        self.assertEqual(self.app.certificate, certificate_path)

    def test_key_getter(self):
        self.assertEqual(self.app.key, self.app._key)

    def test_key_setter(self):
        key_path = u'web/keys/server.key'
        self.app.key = key_path
        self.assertEqual(self.app.key, key_path)

    def test_url(self):
        self.app.certificate = self.app.key = None
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.url, u'ws://{0}:{1}')

    def test_url_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.url, u'wss://{0}:{1}')

    def test_isSecure(self):
        self.app.certificate = self.app.key = None
        self.assertFalse(self.app.isSecure)

    def test_isSecure_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        self.assertFalse(self.app.isSecure)

    def test_isSecure_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        self.assertFalse(self.app.isSecure)

    def test_isSecure_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'
        self.assertTrue(self.app.isSecure)

    def test_get_ssl_context(self):
        self.app.certificate = self.app.key = None
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_2(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = None
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_3(self):
        self.app.certificate = None
        self.app.key = u'web/keys/server.key'
        ssl_context = self.app._get_ssl_context()
        self.assertIsNone(ssl_context)

    def test_get_ssl_context_4(self):
        self.app.certificate = u'./tests/keys/server.crt'
        self.app.key = u'./tests/keys/server.key'
        ssl_context = self.app._get_ssl_context()
        self.assertIsInstance(ssl_context, ssl.SSLContext)

    def test_init_factory(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app._init_factory(url)
        self.assertEqual(factory.log._log_level, 'info')
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_init_factory_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'log_level': 'info'}
        factory = self.app._init_factory(url, **options)
        self.assertEqual(factory.log._log_level, 'info')
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_init_factory_3(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'log_level': 'debug'}
        factory = self.app._init_factory(url, **options)
        self.assertEqual(factory.log._log_level, 'debug')
        self.assertEqual(factory.protocol, RequestHandlerProtocol)

    def test_enable_compressing(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertIsNone(factory.perMessageCompressionAccept('not_used_arg'))

    def test_enable_compressing_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'compress': False}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertIsNone(factory.perMessageCompressionAccept('not_used_arg'))

    def test_enable_compressing_3(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'compress': True}
        factory = self.app._init_factory(url)
        self.app._enable_compressing(factory, **options)
        self.assertTrue(callable(factory.perMessageCompressionAccept))
        self.assertEqual(factory.perMessageCompressionAccept, accept)

    def test_factory_router_not_defined(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        options = {}
        factory = self.app._init_factory(url)
        with self.assertRaises(AssertionError):
            self.app._set_factory_router(factory, **options)

    def test_set_factory_router(self):
        class CustomRouter(SimpleRouter):
            pass

        url = self.app.generate_url('127.0.0.1', 8080)
        options = {'router': CustomRouter()}
        factory = self.app._init_factory(url)
        self.app._set_factory_router(factory, **options)
        self.assertIsInstance(factory.router, CustomRouter)

    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)

    def test_generate_factory_2(self):
        url = self.app.generate_url('127.0.0.1', 8080)
        factory = self.app.generate_factory(url, router=SimpleRouter())
        self.assertEqual(factory.log._log_level, 'info')
        self.assertIsInstance(factory.router, SimpleRouter)

    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)

    def test_generate_url(self):
        host, ip = u'127.0.0.1', 8080
        self.assertEqual(self.app.generate_url(host, ip),
                         u'ws://{0}:{1}/'.format(host, ip))

    def test_generate_url_2(self):
        host, ip, path = u'127.0.0.1', 8080, ''
        self.assertEqual(self.app.generate_url(host, ip, path),
                         u'ws://{0}:{1}/'.format(host, ip, path))

    def test_generate_url_3(self):
        host, ip, path = u'127.0.0.1', 8080, 'ssl'
        self.assertEqual(self.app.generate_url(host, ip, path),
                         u'ws://{0}:{1}/{2}'.format(host, ip, path))

    def test_generate_url_4(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip = u'127.0.0.1', 8080
        self.assertEqual(self.app.generate_url(host, ip),
                         u'wss://{0}:{1}/'.format(host, ip))

    def test_generate_url_5(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip, path = u'127.0.0.1', 8080, ''
        self.assertEqual(self.app.generate_url(host, ip, path),
                         u'wss://{0}:{1}/'.format(host, ip, path))

    def test_generate_url_6(self):
        self.app.certificate = u'web/keys/server.crt'
        self.app.key = u'web/keys/server.key'

        host, ip, path = u'127.0.0.1', 8080, 'ssl'
        self.assertEqual(self.app.generate_url(host, ip, path),
                         u'wss://{0}:{1}/{2}'.format(host, ip, path))
コード例 #7
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)
コード例 #8
0
ファイル: server.py プロジェクト: Gipzo/aiorest-ws

class HelloWorldCustom(MethodBasedView):
    def get(self, request, user, id, *args, **kwargs):
        return "Hello, {0} with ID={1}".format(user, id)


class CalculateSum(MethodBasedView):
    def get(self, request, *args, **kwargs):
        try:
            digits = kwargs['params']['digits']
        except KeyError:
            digits = [0, ]
        return {"sum": sum(digits)}


router = SimpleRouter()
router.register('/hello', HelloWorld, 'GET')
router.register('/hello/{user}/{id}', HelloWorldCustom, 'GET')
router.register('/calc/sum', CalculateSum, 'GET')


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=router)
コード例 #9
0
ファイル: server.py プロジェクト: Gipzo/aiorest-ws

@endpoint(path='/sum/{digit_1}/{digit_2}', methods='GET')
def summ(request, digit_1, digit_2, *args, **kwargs):

    def convert_to_int(digit):
        try:
            digit = int(digit)
        except ValueError:
            digit = 0
        return digit

    digit_1 = convert_to_int(digit_1)
    digit_2 = convert_to_int(digit_2)
    return "{0} + {1} = {2}".format(digit_1, digit_2, digit_1 + digit_2)


router = SimpleRouter()
router.register_endpoint(hello_world)
router.register_endpoint(summ)


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(ip=args.ip, port=args.port, router=router)
コード例 #10
0
ファイル: server.py プロジェクト: webmaks/aiorest-ws
            request.data['username'], with_id=True
        )
        if user.is_authenticated:
            api_token = self.get_or_create_token(user, *args, **kwargs)
        else:
            api_token = None
        return {'token': api_token}


class LogOut(MethodBasedView):
    auth_required = True

    def post(self, request, *args, **kwargs):
        return "Successful log out."


router = SimpleRouter()
router.register('/auth/user/create', RegisterUser, 'POST')
router.register('/auth/login', LogIn, 'POST')
router.register('/auth/logout', LogOut, 'POST')


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(middlewares=(JSONWebTokenMiddleware, ))
    app.run(host=args.ip, port=args.port, router=router)