Browse Source

[libsentry] Add a live test to the Sentry API

Romain Rigaux 10 years ago
parent
commit
e8477baf68

+ 1 - 2
desktop/libs/libsentry/src/libsentry/api.py

@@ -24,12 +24,11 @@ import time
 from django.utils.translation import ugettext as _
 
 from desktop.lib.exceptions_renderable import PopupException
-from libzookeeper.conf import PRINCIPAL_NAME
 from libzookeeper.models import get_children_data
 
 from libsentry.client import SentryClient
 from libsentry.conf import HOSTNAME, PORT
-from libsentry.sentry_site import get_sentry_server_ha_enabled, get_sentry_server_ha_has_security, get_sentry_server_ha_zookeeper_quorum, get_sentry_server_ha_zookeeper_namespace
+from libsentry.sentry_site import get_sentry_server_ha_enabled, get_sentry_server_ha_zookeeper_quorum, get_sentry_server_ha_zookeeper_namespace
 
 
 LOG = logging.getLogger(__name__)

+ 57 - 0
desktop/libs/libsentry/src/libsentry/tests.py

@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# Licensed to Cloudera, Inc. under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  Cloudera, Inc. licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from nose.plugins.skip import SkipTest
+from nose.tools import assert_equal, assert_true, assert_false, assert_not_equal
+
+from django.contrib.auth.models import 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.conf import HOSTNAME, PORT
+from libsentry.client import SentryClient
+
+
+class TestWithSentry:
+
+  @classmethod
+  def setup_class(cls):
+
+    if not is_live_cluster():
+      raise SkipTest()
+
+    cls.client = make_logged_in_client(username='test', is_superuser=False)
+    cls.user = User.objects.get(username='test')
+    add_to_group('test')
+    grant_access("test", "test", "libsentry")
+
+    cls.db = SentryClient(HOSTNAME.get(), PORT.get(), 'test')
+
+  @classmethod
+  def teardown_class(cls):
+    pass
+
+
+  def test_get_collections(self):
+    resp = self.db.list_sentry_roles_by_group() # Non Sentry Admin can do that
+    assert_not_equal(0, resp.status.value, resp)
+    assert_true('denied' in resp.status.message, resp)
+
+    resp = self.db.list_sentry_roles_by_group(groupName='*')
+    assert_equal(0, resp.status.value, resp)