Repository: sentry Updated Branches: refs/heads/master 312ed27fe -> 528f34a89
SENTRY-320: show role grant group groupname should not throw an exception if group doesnt exist in db (Ke Jia via Dapeng Sun) Project: http://git-wip-us.apache.org/repos/asf/sentry/repo Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/528f34a8 Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/528f34a8 Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/528f34a8 Branch: refs/heads/master Commit: 528f34a899482a7726df0e3eacc35d98741b7a9e Parents: 312ed27 Author: Sun Dapeng <[email protected]> Authored: Mon Jul 4 10:05:32 2016 +0800 Committer: Sun Dapeng <[email protected]> Committed: Mon Jul 4 10:05:39 2016 +0800 ---------------------------------------------------------------------- .../SentryPolicyServiceClientDefaultImpl.java | 6 +++++ .../e2e/dbprovider/TestDatabaseProvider.java | 13 +++++++++-- .../e2e/dbprovider/TestGrantUserToRole.java | 24 ++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/sentry/blob/528f34a8/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl.java index 9a28eae..d2d3f9e 100644 --- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl.java +++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl.java @@ -21,6 +21,7 @@ package org.apache.sentry.provider.db.service.thrift; import java.io.IOException; import java.net.InetSocketAddress; import java.security.PrivilegedExceptionAction; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -237,8 +238,13 @@ public class SentryPolicyServiceClientDefaultImpl implements SentryPolicyService request.setRequestorUserName(requestorUserName); request.setGroupName(groupName); TListSentryRolesResponse response; + Set<TSentryRole> roles = new HashSet<TSentryRole>(); try { response = client.list_sentry_roles_by_group(request); + Status status = Status.fromCode(response.getStatus().getValue()); + if (status == Status.NO_SUCH_OBJECT) { + return roles; + } Status.throwIfNotOk(response.getStatus()); return response.getRoles(); } catch (TException e) { http://git-wip-us.apache.org/repos/asf/sentry/blob/528f34a8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java ---------------------------------------------------------------------- diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java index ff4eeaf..82c706e 100644 --- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java +++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestDatabaseProvider.java @@ -2019,8 +2019,17 @@ public class TestDatabaseProvider extends AbstractTestWithStaticConfiguration { expected.add(testRole1); assertTestRoles(resultSet, expected, false); - context.assertSentryException(statement, "SHOW ROLE GRANT GROUP Admin", - SentryNoSuchObjectException.class.getSimpleName()); + ResultSet res = statement.executeQuery("SHOW ROLE GRANT GROUP Admin"); + + List<String> expectedResult = new ArrayList<String>(); + List<String> returnedResult = new ArrayList<String>(); + + while (res.next()) { + returnedResult.add(res.getString(1).trim()); + } + validateReturnedResult(expectedResult, returnedResult); + returnedResult.clear(); + expectedResult.clear(); statement.close(); connection.close(); http://git-wip-us.apache.org/repos/asf/sentry/blob/528f34a8/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestGrantUserToRole.java ---------------------------------------------------------------------- diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestGrantUserToRole.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestGrantUserToRole.java index 4ce30c1..5364937 100644 --- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestGrantUserToRole.java +++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/dbprovider/TestGrantUserToRole.java @@ -24,6 +24,8 @@ import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import org.apache.sentry.tests.e2e.hive.AbstractTestWithStaticConfiguration; @@ -144,6 +146,28 @@ public class TestGrantUserToRole extends AbstractTestWithStaticConfiguration { } @Test + public void testShowGrantNotExistGroup() throws Exception { + Connection connection = context.createConnection(ADMIN1); + Statement statement = context.createStatement(connection); + //group1 does not exist in db; + ResultSet res = statement.executeQuery("SHOW ROLE GRANT GROUP group1"); + + List<String> expectedResult = new ArrayList<String>(); + List<String> returnedResult = new ArrayList<String>(); + + while (res.next()) { + returnedResult.add(res.getString(1).trim()); + } + validateReturnedResult(expectedResult, returnedResult); + returnedResult.clear(); + expectedResult.clear(); + + statement.close(); + connection.close(); + + } + + @Test public void testAuthorizationForUsersWithRoles() throws Exception { Connection connection = context.createConnection(ADMIN1); Statement statement = context.createStatement(connection);
