def test_files(): app = XWeb() @app.post('/files') def files(): return request.files client = webtest.TestApp(app) resp = client.post('/files') assert resp.text == '{}'
def test_response_dict(): app = XWeb() @app.route('/hello') def hello_route(): return {'name': 'xweb'} client = webtest.TestApp(app) resp = client.get('/hello') assert resp.text == json.dumps({'name': 'xweb'})
def test_query(): app = XWeb() @app.get('/query') def query(): return request.query client = webtest.TestApp(app) resp = client.get('/query/?a=1') assert resp.json.get('a') == '1'
def test_invalid_json(): app = XWeb() @app.post('/') def handler(): return request.json client = webtest.TestApp(app) resp = client.post('/', params="dasdas") assert resp.text == '{}'
def test_response_string(): app = XWeb() @app.route('/hello') def hello_route(): return "hello" client = webtest.TestApp(app) resp = client.get('/hello') assert resp.text == "hello"
def test_get(): app = XWeb() @app.get('/') def handler(): return 'Hello' client = webtest.TestApp(app) resp = client.get('/') assert resp.text == 'Hello'
def test_invalid_response(): app = XWeb() @app.route('/') def handler(): raise HTTPError(500) client = webtest.TestApp(app) resp = client.get('/', expect_errors=True) assert resp.status_int == 500 assert resp.text == "Internal Server Error"
def test_response_header(): app = XWeb() @app.route('/hello') def hello_route(): response.headers['spam'] = '1' return {'name': 'xweb'} client = webtest.TestApp(app) resp = client.get('/hello') assert resp.headers.get('spam') == '1'
def test_non_str_headers(): app = XWeb() @app.route('/') def handler(): response.headers["answer"] = 42 return 'Hello' client = webtest.TestApp(app) resp = client.get('/') assert resp.headers.get('answer') == '42'
def test_headers(): app = XWeb() @app.route('/') def handler(): response.headers["spam"] = "great" return 'Hello' client = webtest.TestApp(app) resp = client.get('/') assert resp.headers.get('spam') == 'great'
def test_blueprint(): from xweb.application import XWeb from xweb.blueprint import Blueprint user = Blueprint('/users/') @user.route('/') def user_list(): return 'user' app = XWeb() @app.route('/') def hello(): return 'app' app.register_blueprint(user) client = webtest.TestApp(app) assert client.get('/').text == 'app' assert client.get('/users/').text == 'user'
def test_response_body_not_a_string(): app = XWeb() random_num = choice(range(1000)) @app.route('/hello') def hello_route(): return random_num client = webtest.TestApp(app) resp = client.get('/hello') assert resp.text == str(random_num)
def test_post_json(): app = XWeb() @app.route('/', methods=['POST']) def handler(): return request.json payload = {'test': 'OK'} headers = {'content-type': 'application/json'} client = webtest.TestApp(app) resp = client.post_json('/', params=payload, headers=headers) assert resp.json.get('test') == 'OK'
def test_head(): app = XWeb() @app.put('/head') def handler(): return 'OK' client = webtest.TestApp(app) resp = client.put('/head') assert resp.text == 'OK' resp = client.get('/head', expect_errors=True) assert resp.status_int == 405
def test_post(): app = XWeb() @app.post('/post') def handler(): return request.forms client = webtest.TestApp(app) resp = client.post('/post', params={"name": "xweb"}) assert resp.status_int == 200 resp = client.get('/post', expect_errors=True) assert resp.status_int == 405
def test_slash(): app = XWeb() @app.get('/get') def handler(): return 'OK' client = webtest.TestApp(app) resp = client.get('/get') assert resp.text == 'OK' resp = client.get('/get/') assert resp.text == 'OK'
def test_get(): app = XWeb() @app.get('/get') def handler(): return 'OK' client = webtest.TestApp(app) resp = client.get('/get') assert resp.text == 'OK' assert resp.status_int == 200 resp = client.post('/get', expect_errors=True) assert resp.status_int == 405
def test_exception(): app = XWeb() @app.get('/exception') def post(): abort(500) return "OK" @app.exception(500) def exception(): response.body = "FAIL" client = webtest.TestApp(app) resp = client.get('/exception', expect_errors=True) assert resp.text == "FAIL"
def test_middleware_override_response(): app = XWeb() @app.middleware('response') def process_response(): return 'OK' @app.route('/hello') def hello_route(): return 'FAIL' client = webtest.TestApp(app) resp = client.get('/hello') assert resp.text == 'OK'
def test_dynamic_route(): app = XWeb() results = [] @app.route('/folder/:name/:age') def handler(name, age): results.append(name) results.append(age) return 'OK' client = webtest.TestApp(app) resp = client.get('/folder/test123/23') assert resp.text == 'OK' assert results[0] == 'test123' assert results[1] == '23'
def test_json(): app = XWeb() @app.route('/') def handler(): return {"test": True} client = webtest.TestApp(app) resp = client.get('/') try: results = json.loads(resp.text) except: raise ValueError( "Expected JSON response but got '{}'".format(response)) assert results.get('test') == True
def test_post_form_multipart_form_data(): app = XWeb() @app.route('/', methods=['POST']) def handler(): return request.forms payload = '------xweb\r\n' \ 'Content-Disposition: form-data; name="test"\r\n' \ '\r\n' \ 'OK\r\n' \ '------xweb--\r\n' headers = {'content-type': 'multipart/form-data; boundary=----xweb'} client = webtest.TestApp(app) resp = client.post('/', params=payload, headers=headers) assert resp.json.get('test') == 'OK'
def test_static_routes(): app = XWeb() @app.route('/test') def handler1(): return 'OK1' @app.route('/pizazz') def handler2(): return 'OK2' client = webtest.TestApp(app) resp = client.get('/test') assert resp.text == 'OK1' resp = client.get('/pizazz') assert resp.text == 'OK2'
def test_404_exception(): app = XWeb() @app.get('/') def request_abort(): return "OK" @app.exception(404) def exception(): response.body = "FAIL" client = webtest.TestApp(app) resp = client.get('/') assert resp.text == "OK" resp = client.get('/no', expect_errors=True) assert resp.text == "FAIL"
def test_middleware_request(): app = XWeb() results = [] @app.middleware('request') def handler(): results.append(request) @app.route('/hello') def hello_route(): return 'OK' client = webtest.TestApp(app) resp = client.get('/hello') assert resp.text == 'OK' assert results[0] is request
def test_middleware_exception(): app = XWeb() @app.middleware('request') def request_abort(): abort(405) return "OK" @app.get('/') def request_abort(): return "OK" @app.exception(405) def exception(): response.body = "FAIL" client = webtest.TestApp(app) resp = client.get('/', expect_errors=True) assert resp.text == "FAIL"
def test_route_duplicate(): app = XWeb() with pytest.raises(RouteError): @app.route('/test') def handler1(): pass @app.route('/test') def handler2(): pass with pytest.raises(RouteError): @app.route('/test/:dynamic/') def handler1(): pass @app.route('/test/:dynamic/') def handler2(): pass
def test_middleware_order(): app = XWeb() order = [] @app.middleware('request') def request1(): order.append(1) @app.middleware('request') def request2(): order.append(2) @app.middleware('request') def request3(): order.append(3) @app.middleware('response') def response1(): order.append(4) @app.middleware('response') def response2(): order.append(5) @app.middleware('response') def response3(): order.append(6) @app.route('/hello') def handler(): return 'OK' client = webtest.TestApp(app) resp = client.get('/hello') assert resp.status_int == 200 assert order == [1, 2, 3, 4, 5, 6]
from user import user from xweb.application import XWeb app = XWeb() @app.route('/') def hello(): return 'hello world!' app.register_blueprint(user) app.listen(3000)
from xweb.application import XWeb from xweb.globals import request app = XWeb() @app.middleware('request') def print_on_request1(): print("I print when a request is received by the server1") @app.middleware('request') def print_on_request2(): print("I print when a request is received by the server2") @app.middleware('response') def print_on_response1(): print("I print when a response is returned by the server1") @app.middleware('response') def print_on_response2(): print("I print when a response is returned by the server2") @app.route('/') def hello(): return 'hello world!'