Test d’un service utilisant une base de données.

This commit is contained in:
2019-12-02 10:48:24 +01:00
parent 8c91e01a2b
commit dcaf7da3bc
7 changed files with 99 additions and 35 deletions

View File

@ -10,9 +10,8 @@ from .config import DEBUG
from .config import get_config
from .context import Context
from . import register
import asyncpg
def connect(db_conf):
return psycopg2.connect(**db_conf)
class CallDispatcher:
def valid_public_function(self,
@ -38,6 +37,7 @@ class CallDispatcher:
raise CallError(str(err))
else:
if not isinstance(returns, dict):
log.error_msg(risotto_context, kwargs, returns)
err = _(f'function {module_name}.{function_name} has to return a dict')
log.error_msg(risotto_context, kwargs, err)
raise CallError(str(err))
@ -97,10 +97,15 @@ class CallDispatcher:
risotto_context.function = obj['function']
if obj['risotto_context']:
kw['risotto_context'] = risotto_context
if obj['database']:
db_conf = get_config.get('database')
risotto_context.db_cursor = await connect(db_conf).cursor()
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
if 'database' in obj and obj['database']:
db_conf = get_config().get('database')
pool = await asyncpg.create_pool(database=db_conf.get('dbname'), user=db_conf.get('user'))
async with pool.acquire() as connection:
risotto_context.connection = connection
async with connection.transaction():
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
else:
returns = await risotto_context.function(self.injected_self[obj['module']], **kw)
except CallError as err:
raise err
except Exception as err: