125 lines
3.8 KiB
Python
125 lines
3.8 KiB
Python
# #!/usr/bin/env python3
|
||
# import importlib
|
||
# from halfapi.lib.domain import VERBS, gen_routes, gen_router_routes, \
|
||
# MissingAclError, domain_schema_dict, domain_schema_list
|
||
#
|
||
# from types import FunctionType
|
||
#
|
||
#
|
||
# def test_gen_router_routes():
|
||
# from .dummy_domain import routers
|
||
# for path, verb, m_router, fct, params in gen_router_routes(routers, ['dummy_domain']):
|
||
# assert isinstance(path, str)
|
||
# assert verb in VERBS
|
||
# assert len(params) > 0
|
||
# assert hasattr(fct, '__call__')
|
||
# assert len(m_router.__file__) > 0
|
||
#
|
||
#
|
||
# def test_gen_routes():
|
||
# from .dummy_domain.routers.abc.alphabet import TEST_uuid
|
||
# try:
|
||
# gen_routes(
|
||
# TEST_uuid,
|
||
# 'get',
|
||
# ['abc', 'alphabet', 'TEST_uuid', ''],
|
||
# [])
|
||
# except MissingAclError:
|
||
# assert True
|
||
#
|
||
# fct, params = gen_routes(
|
||
# TEST_uuid,
|
||
# 'get',
|
||
# ['abc', 'alphabet', 'TEST_uuid', ''],
|
||
# TEST_uuid.ACLS['GET'])
|
||
#
|
||
# assert isinstance(fct, FunctionType)
|
||
# assert isinstance(params, list)
|
||
# assert len(TEST_uuid.ACLS['GET']) == len(params)
|
||
#
|
||
# def test_domain_schema_dict():
|
||
# from .dummy_domain import routers
|
||
# d_res = domain_schema_dict(routers)
|
||
#
|
||
# assert isinstance(d_res, dict)
|
||
#
|
||
# def test_domain_schema_list():
|
||
# from .dummy_domain import routers
|
||
# res = domain_schema_list(routers)
|
||
#
|
||
# assert isinstance(res, list)
|
||
# assert len(res) > 0
|
||
|
||
from starlette.testclient import TestClient
|
||
from starlette.responses import Response
|
||
from starlette.routing import Router, Route
|
||
|
||
from halfapi.lib.domain import route_decorator
|
||
from halfapi.lib.user import Nobody
|
||
|
||
def test_route_decorator():
|
||
""" It should decorate an async function that fullfills its arguments
|
||
"""
|
||
def route(halfapi, data, out, ret_type='txt'):
|
||
for key in ['user', 'config', 'domain', 'cookies', 'base_url', 'url']:
|
||
assert key in halfapi
|
||
|
||
assert halfapi['user'] is None
|
||
assert isinstance(halfapi['config'], dict)
|
||
assert len(halfapi['config']) == 0
|
||
assert isinstance(halfapi['domain'], str)
|
||
assert halfapi['domain'] == 'unknown'
|
||
assert isinstance(halfapi['cookies'], dict)
|
||
assert len(halfapi['cookies']) == 0
|
||
assert len(str(halfapi['base_url'])) > 0
|
||
assert str(halfapi['base_url']) == 'http://testserver/'
|
||
assert len(str(halfapi['url'])) > 0
|
||
assert str(halfapi['url']) == 'http://testserver/'
|
||
assert isinstance(data, dict)
|
||
assert len(data) == 0
|
||
|
||
assert out is None
|
||
|
||
assert ret_type is 'txt'
|
||
|
||
return ''
|
||
|
||
async_route = route_decorator(route)
|
||
app = Router([Route('/', endpoint=async_route, methods=['GET'])])
|
||
client = TestClient(app)
|
||
response = client.get('/')
|
||
assert response.is_success
|
||
assert response.content.decode() == ''
|
||
|
||
def route(data, out, ret_type='txt'):
|
||
assert isinstance(data, dict)
|
||
assert len(data) == 0
|
||
|
||
assert out is None
|
||
|
||
assert ret_type is 'txt'
|
||
|
||
return ''
|
||
|
||
async_route = route_decorator(route)
|
||
app = Router([Route('/', endpoint=async_route, methods=['GET'])])
|
||
client = TestClient(app)
|
||
response = client.get('/')
|
||
assert response.is_success
|
||
assert response.content.decode() == ''
|
||
|
||
def route(data):
|
||
assert isinstance(data, dict)
|
||
assert len(data) == 2
|
||
assert data['toto'] == 'tata'
|
||
assert data['bouboul'] == True
|
||
|
||
return ''
|
||
|
||
async_route = route_decorator(route)
|
||
app = Router([Route('/', endpoint=async_route, methods=['POST'])])
|
||
client = TestClient(app)
|
||
response = client.post('/', json={'toto': 'tata', 'bouboul': True})
|
||
assert response.is_success
|
||
assert response.json() == ''
|