improve: discard venv support for official product
[releng.git] / utils / test / testapi / opnfv_testapi / common / check.py
index 4d9902c..009d3d4 100644 (file)
@@ -8,11 +8,47 @@
 ##############################################################################
 import functools
 
+import cas
 from tornado import gen
 from tornado import web
 
+from opnfv_testapi.common import constants
 from opnfv_testapi.common import message
 from opnfv_testapi.common import raises
+from opnfv_testapi.common.config import CONF
+from opnfv_testapi.db import api as dbapi
+
+
+def login(method):
+    @web.asynchronous
+    @gen.coroutine
+    @functools.wraps(method)
+    def wrapper(self, *args, **kwargs):
+        ticket = self.get_query_argument('ticket', default=None)
+        if ticket:
+            client = cas.CASClient(version='2',
+                                   server_url=CONF.lfid_cas_url,
+                                   service_url=CONF.ui_url)
+            (user, attrs, _) = client.verify_ticket(ticket=ticket)
+            print 'login user: {}'.format(user)
+            login_user = {
+                'user': user,
+                'email': attrs.get('mail'),
+                'fullname': attrs.get('field_lf_full_name'),
+                'groups': constants.TESTAPI_USERS + attrs.get('group', [])
+            }
+            q_user = {'user': user}
+            db_user = yield dbapi.db_find_one(constants.USER_TABLE, q_user)
+            if not db_user:
+                dbapi.db_save(constants.USER_TABLE, login_user)
+            else:
+                dbapi.db_update(constants.USER_TABLE, q_user, login_user)
+
+            self.clear_cookie(constants.TESTAPI_ID)
+            self.set_secure_cookie(constants.TESTAPI_ID, user)
+        ret = yield gen.coroutine(method)(self, *args, **kwargs)
+        raise gen.Return(ret)
+    return wrapper
 
 
 def authenticate(method):
@@ -26,7 +62,7 @@ def authenticate(method):
             except KeyError:
                 raises.Unauthorized(message.unauthorized())
             query = {'access_token': token}
-            check = yield self._eval_db_find_one(query, 'tokens')
+            check = yield dbapi.db_find_one('tokens', query)
             if not check:
                 raises.Forbidden(message.invalid_token())
         ret = yield gen.coroutine(method)(self, *args, **kwargs)
@@ -38,7 +74,7 @@ def not_exist(xstep):
     @functools.wraps(xstep)
     def wrap(self, *args, **kwargs):
         query = kwargs.get('query')
-        data = yield self._eval_db_find_one(query)
+        data = yield dbapi.db_find_one(self.table, query)
         if not data:
             raises.NotFound(message.not_found(self.table, query))
         ret = yield gen.coroutine(xstep)(self, data, *args, **kwargs)
@@ -61,7 +97,7 @@ def no_body(xstep):
 def miss_fields(xstep):
     @functools.wraps(xstep)
     def wrap(self, *args, **kwargs):
-        fields = kwargs.get('miss_fields')
+        fields = kwargs.pop('miss_fields', [])
         if fields:
             for miss in fields:
                 miss_data = self.json_args.get(miss)
@@ -75,10 +111,10 @@ def miss_fields(xstep):
 def carriers_exist(xstep):
     @functools.wraps(xstep)
     def wrap(self, *args, **kwargs):
-        carriers = kwargs.get('carriers')
+        carriers = kwargs.pop('carriers', {})
         if carriers:
             for table, query in carriers:
-                exist = yield self._eval_db_find_one(query(), table)
+                exist = yield dbapi.db_find_one(table, query())
                 if not exist:
                     raises.Forbidden(message.not_found(table, query()))
         ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
@@ -91,7 +127,7 @@ def new_not_exists(xstep):
     def wrap(self, *args, **kwargs):
         query = kwargs.get('query')
         if query:
-            to_data = yield self._eval_db_find_one(query())
+            to_data = yield dbapi.db_find_one(self.table, query())
             if to_data:
                 raises.Forbidden(message.exist(self.table, query()))
         ret = yield gen.coroutine(xstep)(self, *args, **kwargs)
@@ -102,10 +138,10 @@ def new_not_exists(xstep):
 def updated_one_not_exist(xstep):
     @functools.wraps(xstep)
     def wrap(self, data, *args, **kwargs):
-        db_keys = kwargs.get('db_keys')
+        db_keys = kwargs.pop('db_keys', [])
         query = self._update_query(db_keys, data)
         if query:
-            to_data = yield self._eval_db_find_one(query)
+            to_data = yield dbapi.db_find_one(self.table, query)
             if to_data:
                 raises.Forbidden(message.exist(self.table, query))
         ret = yield gen.coroutine(xstep)(self, data, *args, **kwargs)