Forráskód Böngészése

HUE-5917 [metadata] Properly mock metadata API and activate the tests

Romain Rigaux 8 éve
szülő
commit
1e1ae0e

+ 1 - 1
desktop/libs/libsentry/src/libsentry/privilege_checker.py

@@ -59,7 +59,7 @@ class PrivilegeChecker(object):
     self.user = user
     self.api_v1 = api_v1 if api_v1 else get_api_v1(self.user)
     self.api_v2 = api_v2 if api_v2 else get_api_v2(self.user, component='solr')
-    
+
     privileges_v1 = self._get_privileges_for_user(self.api_v1)
     self.privilege_hierarchy_v1 = self._to_privilege_hierarchy_v1(privileges_v1)
 

+ 24 - 12
desktop/libs/metadata/src/metadata/navigator_client_tests.py

@@ -17,7 +17,6 @@
 
 import logging
 
-from nose.plugins.skip import SkipTest
 from nose.tools import assert_equal
 
 from django.core.cache import cache
@@ -26,13 +25,11 @@ from django.contrib.auth.models import User
 from desktop.auth.backend import rewrite_user
 from desktop.lib.django_test_util import make_logged_in_client
 from desktop.lib.test_utils import add_to_group, grant_access
-from hadoop.pseudo_hdfs4 import is_live_cluster
+from libsentry.privilege_checker import SENTRY_PRIVILEGE_CACHE_KEY, PrivilegeChecker
+from libsentry.test_privilege_checker import MockSentryApiV2
 
-from metadata.conf import has_navigator, NAVIGATOR
+from metadata.conf import NAVIGATOR
 from metadata.navigator_client import NavigatorApi
-from libsentry.privilege_checker import SENTRY_PRIVILEGE_CACHE_KEY,\
-  PrivilegeChecker
-from libsentry.test_privilege_checker import MockSentryApiV2
 
 
 LOG = logging.getLogger(__name__)
@@ -53,9 +50,6 @@ class NavigatorClientTest:
     add_to_group('test')
     grant_access("test", "test", "metadata")
 
-    if not has_navigator(cls.user):
-      raise SkipTest
-
     cls.api = NavigatorApi(cls.user)
     cls.api._root = MockedRoot()
 
@@ -89,10 +83,11 @@ class TestNavigatorClientSecure(NavigatorClientTest):
     cache_key = SENTRY_PRIVILEGE_CACHE_KEY % {'username': self.user.username}
 
     try:
+      # All single privileges
       api_v1 = MockSentryApiHive(privileges=[
         {'column': '', 'grantOption': False, 'timestamp': 1478810513849, 'database': 'etl', 'action': 'SELECT', 'scope': 'DATABASE', 'table': '', 'URI': '', 'server': 'server1'},
         {'column': '', 'grantOption': False, 'timestamp': 1478810422058, 'database': 'etl', 'action': 'SELECT', 'scope': 'TABLE', 'table': 'finance', 'URI': '', 'server': 'server1'},
-        {'column': 'col3', 'grantOption': False, 'timestamp': 1478810590335, 'database': 'etl', 'action': 'SELECT', 'scope': 'TABLE', 'table': 'finance', 'URI': '', 'server': 'server1'},
+        {'column': 'col3', 'grantOption': False, 'timestamp': 1478810590335, 'database': 'etl', 'action': 'SELECT', 'scope': 'COLUMN', 'table': 'finance', 'URI': '', 'server': 'server1'},
       ])
       api_v2 = MockSentryApiV2()
       checker = PrivilegeChecker(user=self.user, api_v1=api_v1, api_v2=api_v2)
@@ -121,9 +116,8 @@ class TestNavigatorClientSecure(NavigatorClientTest):
       results = list(self.api._secure_results(records, checker=checker))
       assert_equal(0, len(results), results)
 
-      # All privileges
+      # Only table privilege
       api_v1 = MockSentryApiHive(privileges=[
-        # Table SELECT
         {'column': '', 'grantOption': False, 'timestamp': 1478810422058, 'database': 'etl', 'action': 'SELECT', 'scope': 'TABLE', 'table': 'finance', 'URI': '', 'server': 'server1'},
       ])
       checker = PrivilegeChecker(user=self.user, api_v1=api_v1, api_v2=api_v2)
@@ -137,6 +131,24 @@ class TestNavigatorClientSecure(NavigatorClientTest):
 
       results = list(self.api._secure_results(records, checker=checker))
       assert_equal(2, len(results), results) # Table + its Column
+
+      # Only table 2 privilege
+      api_v1 = MockSentryApiHive(privileges=[
+        {'column': '', 'grantOption': False, 'timestamp': 1478810513849, 'database': 'etl2', 'action': 'SELECT', 'scope': 'DATABASE', 'table': '', 'URI': '', 'server': 'server1'},
+      ])
+      checker = PrivilegeChecker(user=self.user, api_v1=api_v1, api_v2=api_v2)
+
+      records = [
+        {u'type': u'DATABASE', u'originalName': u'etl', u'description': None, u'params': None, u'internalType': u'hv_database', u'sourceType': u'HIVE', u'tags': None, u'originalDescription': None, u'metaClassName': u'hv_database', u'properties': None, u'identity': u'51002517', u'firstClassParentId': None, u'name': None, u'extractorRunId': u'845beb21b95783c4f55276a4ae38a332##3', u'sourceId': u'56850544', u'packageName': u'nav', u'parentPath': None},
+        {u'type': u'TABLE', u'parentPath': u'/etl', u'originalName': u'finance', u'clusteredByColNames': None, u'customProperties': None, u'owner': u'elt', u'serdeName': None, u'sourceType': u'HIVE', u'serdeLibName': u'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe', u'internalType': u'hv_table', u'description': None, u'tags': None, u'originalDescription': None, u'compressed': False, u'metaClassName': u'hv_table', u'properties': None, u'identity': u'51340470', u'outputFormat': u'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat', u'firstClassParentId': None, u'name': None, u'extractorRunId': u'845beb21b95783c4f55276a4ae38a332##1185', u'created': u'2015-08-14T00:04:01.000Z', u'sourceId': u'56850544', u'lastModified': None, u'packageName': u'nav', u'lastAccessed': u'1970-01-01T00:00:00.000Z'},
+        {u'type': u'FIELD', u'parentPath': u'/etl/finance', u'originalName': u'col1', u'customProperties': None, u'deleteTime': None, u'description': None, u'dataType': u'string', u'internalType': u'hv_column', u'sourceType': u'HIVE', u'tags': None, u'technicalProperties': None, u'userEntity': False, u'originalDescription': None, u'metaClassName': u'hv_column', u'properties': None, u'identity': u'51001004', u'firstClassParentId': u'59444965', u'name': None, u'extractorRunId': u'845beb21b95783c4f55276a4ae38a332##1582', u'sourceId': u'56850544', u'packageName': u'nav'},
+        {u'type': u'VIEW', u'parentPath': u'/etl', u'originalName': u'finance_view', u'customProperties': None, u'deleteTime': None, u'description': None, u'lastModifiedBy': None, u'internalType': u'hv_view', u'sourceType': u'HIVE', u'tags': None, u'deleted': False, u'technicalProperties': None, u'userEntity': False, u'originalDescription': None, u'metaClassName': u'hv_view', u'properties': None, u'identity': u'51012354', u'firstClassParentId': None, u'name': None, u'extractorRunId': u'845beb21b95783c4f55276a4ae38a332##394', u'created': u'2015-09-02T08:01:14.000Z', u'sourceId': u'56850544', u'lastModified': None, u'packageName': u'nav', u'queryText': u"SELECT * FROM etl.finance LIMIT 10", u'lastAccessed': u'1970-01-01T00:00:00.000Z'},
+
+        {u'type': u'TABLE', u'parentPath': u'/etl2', u'originalName': u'finance2', u'clusteredByColNames': None, u'customProperties': None, u'owner': u'elt', u'serdeName': None, u'sourceType': u'HIVE', u'serdeLibName': u'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe', u'internalType': u'hv_table', u'description': None, u'tags': None, u'originalDescription': None, u'compressed': False, u'metaClassName': u'hv_table', u'properties': None, u'identity': u'51340470', u'outputFormat': u'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat', u'firstClassParentId': None, u'name': None, u'extractorRunId': u'845beb21b95783c4f55276a4ae38a332##1185', u'created': u'2015-08-14T00:04:01.000Z', u'sourceId': u'56850544', u'lastModified': None, u'packageName': u'nav', u'lastAccessed': u'1970-01-01T00:00:00.000Z'},
+      ]
+
+      results = list(self.api._secure_results(records, checker=checker))
+      assert_equal(1, len(results), results) # Table2 only
     finally:
       cache.delete(cache_key)
 

+ 1 - 1
desktop/libs/metadata/src/metadata/navigator_tests.py

@@ -33,7 +33,7 @@ from hadoop.pseudo_hdfs4 import is_live_cluster
 from metadata.conf import has_navigator, NAVIGATOR, get_navigator_auth_password,\
   get_navigator_auth_username
 from metadata.navigator_api import _augment_highlighting
-from metadata.navigator_client import NavigatorApi, NavigatorApiException
+from metadata.navigator_client import NavigatorApi
 
 
 LOG = logging.getLogger(__name__)