2021-12-07 11:42:02 +01:00
|
|
|
|
# #!/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
|
2023-02-21 19:22:57 +01:00
|
|
|
|
|
|
|
|
|
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() == ''
|