浏览代码

support simple global exception for NotFound and Operational Sqlalchemy error

Guénaël Muller 7 年前
父节点
当前提交
641b48b7d3
共有 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.40',
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
49
     # Add SqlAlchemy DB
51
     # Add SqlAlchemy DB
50
     configurator.include('.models')
52
     configurator.include('.models')
51
     # set Hapic
53
     # set Hapic
52
-    hapic.set_context(
53
-        PyramidContext(
54
-            configurator=configurator,
55
-            default_error_builder=ErrorSchema()
56
-        )
54
+    context = PyramidContext(
55
+        configurator=configurator,
56
+        default_error_builder=ErrorSchema()
57
     )
57
     )
58
+    hapic.set_context(context)
59
+    context.handle_exception(NotFound, 404)
60
+    context.handle_exception(OperationalError, 500)
58
     # Add controllers
61
     # Add controllers
59
     session_api = SessionController()
62
     session_api = SessionController()
60
     configurator.include(session_api.bind, route_prefix=BASE_API_V2)
63
     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',