コード例 #1
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_methods(method):
    app = Luya('test_methods')

    class DummyView(MethodView):
        async def get(self, request):
            print('进来了')
            assert request.stream is None

            return text('', headers={'method': 'GET'})

        def post(self, request):
            return text('', headers={'method': 'POST'})

        async def put(self, request):
            return text('', headers={'method': 'PUT'})

        def head(self, request):
            return text('', headers={'method': 'HEAD'})

        def options(self, request):
            return text('', headers={'method': 'OPTIONS'})

        async def patch(self, request):
            return text('', headers={'method': 'PATCH'})

        def delete(self, request):
            return text('', headers={'method': 'DELETE'})

    app.add_route(DummyView.to_view(), '/')
    assert app.has_stream is False

    response = getattr(app.test_client, method.lower())('/')
    assert response.headers['method'] == method
コード例 #2
0
ファイル: test_blueprint.py プロジェクト: sun3shines/LuyWeb
def test_url_prefix():
    app = Luya('test_url_prefix')
    bp = Blueprint('test_url_prefix', prefix_url='/bp')

    @bp.route('/')
    def handler(request):
        return text('Hello')

    app.register_blueprint(bp)
    rsp = app.test_client.get('/bp/')
    assert rsp.text == 'Hello'
コード例 #3
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_argument_methods():
    app = Luya('test_argument_methods')

    class DummyView(MethodView):
        def get(self, request, my_param_here):
            return text('I am get method with %s' % my_param_here)

    app.add_route(DummyView.to_view(), '/<my_param_here>')

    response = app.test_client.get('/test123')

    assert response.text == 'I am get method with test123'
コード例 #4
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_unexisting_methods():
    app = Luya('test_unexisting_methods')

    class DummyView(MethodView):
        def get(self, request):
            return text('I am get method')

    app.add_route(DummyView.to_view(), '/')
    response = app.test_client.get('/')
    assert response.text == 'I am get method'
    response = app.test_client.post('/')
    assert response.text == '<h3>/ is not allow POST<h3>'
コード例 #5
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_add_route_method_not_allowed():
    app = Luya('test_add_route_method_not_allowed')

    async def handler(request):
        return text('OK')

    app.add_route(handler, '/test', methods=['GET'])

    response = app.test_client.get('/test')
    assert response.status == 200

    response = app.test_client.post('/test')
    assert response.status == 405
コード例 #6
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_with_bp_with_url_prefix():
    app = Luya('test_with_bp_with_url_prefix')
    bp = Blueprint('test_text', prefix_url='/test1')

    class DummyView(MethodView):
        def get(self, request):
            return text('I am get method')

    bp.add_route(DummyView.to_view(), '/')

    app.register_blueprint(bp)
    response = app.test_client.get('/test1/')

    assert response.text == 'I am get method'
コード例 #7
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_dynamic_add_route():
    app = Luya('test_dynamic_add_route')

    results = []

    async def handler(request, name):
        results.append(name)
        return text('OK')

    app.add_route(handler, '/folder/<name>')
    response = app.test_client.get('/folder/test123')

    assert response.text == 'OK'
    assert results[0] == 'test123'
コード例 #8
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_route_invalid_parameter_syntax():
    with pytest.raises(ValueError):
        app = Luya('test_route_invalid_param_syntax')

        @app.route('/get/<:string>')
        def handler(request):
            return text('OK')
コード例 #9
0
ファイル: test_blueprint.py プロジェクト: sun3shines/LuyWeb
def test_basic_blueprint():
    '''
        To test basic blueprint.
    '''
    app = Luya('test_basic_blueprint')
    bp = Blueprint('test_basic_blueprint')

    @bp.route('/')
    def handler(request):
        return text('Hello')

    app.register_blueprint(bp)
    rsp = app.test_client.get('/')
    assert app.has_stream == False

    assert rsp.text == 'Hello'
コード例 #10
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_with_bp():
    app = Luya('test_with_bp')
    bp = Blueprint('test_text')

    class DummyView(MethodView):
        def get(self, request):
            assert request.stream is None
            return text('I am get method')

    bp.add_route(DummyView.to_view(), '/')

    app.register_blueprint(bp)
    response = app.test_client.get('/')

    assert app.has_stream is False
    assert response.text == 'I am get method'
コード例 #11
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_dynamic_add_route_int():
    app = Luya('test_dynamic_add_route_int')

    results = []

    async def handler(request, folder_id):
        results.append(folder_id)
        return text('OK')

    app.add_route(handler, '/folder/<folder_id:int>')

    response = app.test_client.get('/folder/12345')
    assert response.text == 'OK'
    assert type(results[0]) is int

    response = app.test_client.get('/folder/asdf')
    assert response.status == 404
コード例 #12
0
ファイル: test_response.py プロジェクト: sun3shines/LuyWeb
def json_app():
    app = Luya('json')

    @app.route("/")
    async def test(request):
        return json(JSON_DATA)

    return app
コード例 #13
0
ファイル: test_response.py プロジェクト: sun3shines/LuyWeb
def streaming_app():
    app = Luya('streaming')

    @app.route("/")
    async def test(request):
        return stream(sample_streaming_fn, content_type='text/csv')

    return app
コード例 #14
0
ファイル: test_view.py プロジェクト: sun3shines/LuyWeb
def test_with_custom_class_methods():
    app = Luya('test_with_custom_class_methods')

    class DummyView(MethodView):
        global_var = 0

        def _iternal_method(self):
            self.global_var += 10

        def get(self, request):
            self._iternal_method()
            return text('I am get method and global var is {}'.format(
                self.global_var))

    app.add_route(DummyView.to_view(), '/')
    response = app.test_client.get('/')
    assert response.text == 'I am get method and global var is 10'
コード例 #15
0
def test_text():
    app = Luya('test_text')

    @app.route('/')
    async def handler(request):
        return text('Hello')

    response = app.test_client.get('/')

    assert response.text == 'Hello'
コード例 #16
0
def test_remote_address():
    app = Luya('test_text')

    @app.route('/')
    def handler(request):
        # print(request.ip)
        return text("{}".format(request.ip))

    response = app.test_client.get('/')

    assert response.text == '127.0.0.1'
コード例 #17
0
def test_match_info():
    app = Luya('test_match_info')
    arg = [None]

    @app.route('/api/v1/user/<user_id>/')
    async def handler(request, user_id):
        arg[0] = user_id
        return text('OK')

    response = app.test_client.get('/api/v1/user/sanic_user/')
    assert arg[0] == 'sanic_user'
コード例 #18
0
def test_headers():
    app = Luya('test_text')

    @app.route('/')
    async def handler(request):
        headers = {"spam": "great"}
        return text('Hello', headers=headers)

    response = app.test_client.get('/')

    assert response.headers.get('spam') == 'great'
コード例 #19
0
def test_invalid_json():
    app = Luya('test_json')

    @app.route('/', methods=['POST'])
    async def handler(request):
        return json(request.json)

    data = "I am not json"
    response = app.test_client.post('/', data=data)

    assert response.status == 400
コード例 #20
0
def test_empty_json():
    app = Luya('test_json')

    @app.route('/')
    async def handler(request):
        assert request.json == None
        return json(request.json)

    response = app.test_client.get('/')
    assert response.status == 200
    assert response.text == 'null'
コード例 #21
0
ファイル: test_response.py プロジェクト: sun3shines/LuyWeb
def test_response_body_not_a_string():
    """Test when a response body sent from the application is not a string"""
    app = Luya('response_body_not_a_string')
    random_num = choice(range(1000))

    @app.route('/hello')
    async def hello_route(request):
        return HTTPResponse(body=random_num)

    response = app.test_client.get('/hello')
    assert response.text == str(random_num)
コード例 #22
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_dynamic_add_route_number():
    app = Luya('test_dynamic_add_route_number')

    results = []

    async def handler(request, weight):
        results.append(weight)
        return text('OK')

    app.add_route(handler, '/weight/<weight:number>')

    response = app.test_client.get('/weight/12345')
    assert response.text == 'OK'
    assert type(results[0]) is float

    response = app.test_client.get('/weight/1234.56')
    assert response.status == 200

    response = app.test_client.get('/weight/1234-56')
    assert response.status == 404
コード例 #23
0
def test_non_str_headers():
    app = Luya('test_text')

    @app.route('/')
    async def handler(request):
        headers = {"answer": 42}
        return text('Hello', headers=headers)

    response = app.test_client.get('/')

    assert response.headers.get('answer') == '42'
コード例 #24
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_route_post():
    app = Luya('test_route_get')

    @app.route('/post', methods=['POST'])
    def handler(request):
        return text('OK')

    response = app.test_client.get('/post')
    assert response.status == 405

    response2 = app.test_client.post('/post')
    assert response2.text == 'OK'
コード例 #25
0
ファイル: test_router.py プロジェクト: sun3shines/LuyWeb
def test_route_get():
    app = Luya('test_route_get')

    @app.route('/get')
    def handler(request):
        return text('OK')

    response = app.test_client.get('/get')
    assert response.text == 'OK'

    response2 = app.test_client.post('/get')
    assert response2.status == 405
コード例 #26
0
def test_json():
    app = Luya('test_json')

    @app.route('/')
    async def handler(request):
        return json({"test": True})

    response = app.test_client.get('/')

    results = json_loads(response.text)

    assert results.get('test') == True
コード例 #27
0
ファイル: MethodView_test.py プロジェクト: YoungZiyi/LuyWeb
    def test_one_Blueprint(self):

        app = Luya()

        class Mv(MethodView):
            def __init__(self):
                pass

            def get(self, request):
                return response.html('<h1>class view test</h1>')

            def post(self, request):
                return response.html('<h1>post</h1>')

        app.add_route(Mv.to_view(), '/MethodView')

        request = request_class(url='/MethodView', method='GET')
        handler, kw = app.router.get_mapped_handle(request)
        self.assertEqual(kw, {})
        self.assertEqual(handler(request).status, 200)

        request = request_class(url='/MethodView', method='POST')
コード例 #28
0
def test_invalid_response():
    app = Luya('test_invalid_response')

    @app.exception(ServerError)
    def handler_exception(request, exception):
        return text('Internal Server Error.', 500)

    @app.route('/')
    async def handler(request):
        return 'This should fail'

    response = app.test_client.get('/')
    assert response.status == 500
    assert response.text == "Internal Server Error."
コード例 #29
0
def test_query_string():
    app = Luya('test_query_string')
    args = [None]

    @app.route('/')
    async def handler(request):
        args[0] = request.args
        return text('OK')

    response = app.test_client.get('/?test1=1&test2=2&test3=false')
    arg = args[0]
    assert arg['test1'][0] == '1'
    assert arg['test2'][0] == '2'
    assert arg['test3'][0] == 'false'
コード例 #30
0
def test_middleware_override_response():
    app = Luya('test_middleware_override_response')

    @app.middleware('response')
    async def process_response(request, response):
        return text('OK')

    @app.route('/')
    async def handler(request):
        return text('FAIL')

    response = app.test_client.get('/')

    assert response.status == 200
    assert response.text == 'OK'