浏览代码

Merge branch 'fix/59_global_exception_handling' of github.com:tracim/tracim_backend into fix/few_more_tests

Guénaël Muller 6 年前
父节点
当前提交
ce7da7613a
共有 3 个文件被更改,包括 9 次插入8 次删除
  1. 1 1
      setup.py
  2. 8 5
      tracim/__init__.py
  3. 0 2
      tracim/tests/functional/test_session.py

+ 1 - 1
setup.py 查看文件

24
     'zope.sqlalchemy',
24
     'zope.sqlalchemy',
25
     'alembic',
25
     'alembic',
26
     # API
26
     # API
27
-    'hapic',
27
+    'hapic>=0.41',
28
     'marshmallow <3.0.0a1,>2.0.0',
28
     'marshmallow <3.0.0a1,>2.0.0',
29
     # CLI
29
     # CLI
30
     'cliff',
30
     'cliff',

+ 8 - 5
tracim/__init__.py 查看文件

5
 from pyramid.config import Configurator
5
 from pyramid.config import Configurator
6
 from pyramid.authentication import BasicAuthAuthenticationPolicy
6
 from pyramid.authentication import BasicAuthAuthenticationPolicy
7
 from hapic.ext.pyramid import PyramidContext
7
 from hapic.ext.pyramid import PyramidContext
8
+from pyramid.exceptions import NotFound
9
+from sqlalchemy.exc import OperationalError
8
 
10
 
9
 from tracim.extensions import hapic
11
 from tracim.extensions import hapic
10
 from tracim.config import CFG
12
 from tracim.config import CFG
52
     # Add SqlAlchemy DB
54
     # Add SqlAlchemy DB
53
     configurator.include('.models')
55
     configurator.include('.models')
54
     # set Hapic
56
     # set Hapic
55
-    hapic.set_context(
56
-        PyramidContext(
57
-            configurator=configurator,
58
-            default_error_builder=ErrorSchema()
59
-        )
57
+    context = PyramidContext(
58
+        configurator=configurator,
59
+        default_error_builder=ErrorSchema()
60
     )
60
     )
61
+    hapic.set_context(context)
62
+    context.handle_exception(NotFound, 404)
63
+    context.handle_exception(OperationalError, 500)
61
     # Add controllers
64
     # Add controllers
62
     session_api = SessionController()
65
     session_api = SessionController()
63
     configurator.include(session_api.bind, route_prefix=BASE_API_V2)
66
     configurator.include(session_api.bind, route_prefix=BASE_API_V2)

+ 0 - 2
tracim/tests/functional/test_session.py 查看文件

17
 
17
 
18
 class TestLoginEndpointUnititedDB(FunctionalTestNoDB):
18
 class TestLoginEndpointUnititedDB(FunctionalTestNoDB):
19
 
19
 
20
-    @pytest.mark.xfail(raises=OperationalError,
21
-                       reason='Not supported yet by hapic')
22
     def test_api__try_login_enpoint__err_500__no_inited_db(self):
20
     def test_api__try_login_enpoint__err_500__no_inited_db(self):
23
         params = {
21
         params = {
24
             'email': 'admin@admin.admin',
22
             'email': 'admin@admin.admin',