diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/TestClientSideAuthorizationProvider.java b/ql/src/test/org/apache/hadoop/hive/ql/security/TestClientSideAuthorizationProvider.java index e175f4b..48e8b23 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/TestClientSideAuthorizationProvider.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/TestClientSideAuthorizationProvider.java @@ -95,18 +95,26 @@ protected void tearDown() throws Exception { } private void validateCreateDb(Database expectedDb, String dbName) { - assertEquals(expectedDb.getName(), dbName); + assertEquals(expectedDb.getName().toLowerCase(), dbName.toLowerCase()); } private void validateCreateTable(Table expectedTable, String tblName, String dbName) { assertNotNull(expectedTable); - assertEquals(expectedTable.getTableName(),tblName); - assertEquals(expectedTable.getDbName(),dbName); + assertEquals(expectedTable.getTableName().toLowerCase(),tblName.toLowerCase()); + assertEquals(expectedTable.getDbName().toLowerCase(),dbName.toLowerCase()); + } + + protected String getTestDbName(){ + return "smp_cl_db"; + } + + protected String getTestTableName(){ + return "smp_cl_tbl"; } public void testSimplePrivileges() throws Exception { - String dbName = "smpdb"; - String tblName = "smptbl"; + String dbName = getTestDbName(); + String tblName = getTestTableName(); String userName = ugi.getUserName(); @@ -159,6 +167,10 @@ public void testSimplePrivileges() throws Exception { ret = driver.run("alter table "+tblName+" add partition (b='2011')"); assertEquals(0,ret.getResponseCode()); + allowDropOnTable(tblName, userName, tbl.getSd().getLocation()); + allowDropOnDb(dbName,userName,db.getLocationUri()); + driver.run("drop database if exists "+getTestDbName()+" cascade"); + } protected void allowCreateInTbl(String tableName, String userName, String location) @@ -182,6 +194,16 @@ protected void disallowCreateInDb(String dbName, String userName, String locatio // nothing needed here by default } + protected void allowDropOnTable(String tblName, String userName, String location) + throws Exception { + driver.run("grant drop on table "+tblName+" to user "+userName); + } + + protected void allowDropOnDb(String dbName, String userName, String location) + throws Exception { + driver.run("grant drop on database "+dbName+" to user "+userName); + } + protected void assertNoPrivileges(CommandProcessorResponse ret){ assertNotNull(ret); assertFalse(0 == ret.getResponseCode()); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java b/ql/src/test/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java index 1656404..f19e3df 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/TestMetastoreAuthorizationProvider.java @@ -115,19 +115,26 @@ protected void tearDown() throws Exception { } private void validateCreateDb(Database expectedDb, String dbName) { - assertEquals(expectedDb.getName(), dbName); + assertEquals(expectedDb.getName().toLowerCase(), dbName.toLowerCase()); } private void validateCreateTable(Table expectedTable, String tblName, String dbName) { assertNotNull(expectedTable); - assertEquals(expectedTable.getTableName(),tblName); - assertEquals(expectedTable.getDbName(),dbName); + assertEquals(expectedTable.getTableName().toLowerCase(),tblName.toLowerCase()); + assertEquals(expectedTable.getDbName().toLowerCase(),dbName.toLowerCase()); } - public void testSimplePrivileges() throws Exception { - String dbName = "smpdb"; - String tblName = "smptbl"; + protected String getTestDbName(){ + return "smp_ms_db"; + } + + protected String getTestTableName(){ + return "smp_ms_tbl"; + } + public void testSimplePrivileges() throws Exception { + String dbName = getTestDbName(); + String tblName = getTestTableName(); String userName = ugi.getUserName(); CommandProcessorResponse ret = driver.run("create database " + dbName); @@ -235,6 +242,10 @@ public void testSimplePrivileges() throws Exception { ret = driver.run("alter table "+tblName+" add partition (b='2011')"); assertEquals(0,ret.getResponseCode()); + allowDropOnTable(tblName, userName, tbl.getSd().getLocation()); + allowDropOnDb(dbName,userName,db.getLocationUri()); + driver.run("drop database if exists "+getTestDbName()+" cascade"); + } protected void allowCreateInTbl(String tableName, String userName, String location) @@ -258,6 +269,16 @@ protected void disallowCreateInDb(String dbName, String userName, String locatio driver.run("revoke create on database "+dbName+" from user "+userName); } + protected void allowDropOnTable(String tblName, String userName, String location) + throws Exception { + driver.run("grant drop on table "+tblName+" to user "+userName); + } + + protected void allowDropOnDb(String dbName, String userName, String location) + throws Exception { + driver.run("grant drop on database "+dbName+" to user "+userName); + } + protected void assertNoPrivileges(MetaException me){ assertNotNull(me); assertTrue(me.getMessage().indexOf("No privilege") != -1); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedClientSideAuthorizationProvider.java b/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedClientSideAuthorizationProvider.java index 5f60928..61dc211 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedClientSideAuthorizationProvider.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedClientSideAuthorizationProvider.java @@ -64,6 +64,18 @@ protected void disallowCreateInTbl(String tableName, String userName, String loc setPermissions(location,"-r--r--r--"); } + @Override + protected void allowDropOnTable(String tblName, String userName, String location) + throws Exception { + setPermissions(location,"-rwxr--r--"); + } + + @Override + protected void allowDropOnDb(String dbName, String userName, String location) + throws Exception { + setPermissions(location,"-rwxr--r--"); + } + private void setPermissions(String locn, String permissions) throws Exception { FileSystem fs = FileSystem.get(new URI(locn), clientHiveConf); fs.setPermission(new Path(locn), FsPermission.valueOf(permissions)); @@ -76,4 +88,15 @@ protected void assertNoPrivileges(CommandProcessorResponse ret){ assertTrue(ret.getErrorMessage().indexOf("not permitted") != -1); } + + @Override + protected String getTestDbName(){ + return super.getTestDbName() + "_SBAP"; + } + + @Override + protected String getTestTableName(){ + return super.getTestTableName() + "_SBAP"; + } + } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java b/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java index 4e56903..223f155 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/security/TestStorageBasedMetastoreAuthorizationProvider.java @@ -69,6 +69,18 @@ protected void disallowCreateInTbl(String tableName, String userName, String loc setPermissions(location,"-r--r--r--"); } + @Override + protected void allowDropOnTable(String tblName, String userName, String location) + throws Exception { + setPermissions(location,"-rwxr--r--"); + } + + @Override + protected void allowDropOnDb(String dbName, String userName, String location) + throws Exception { + setPermissions(location,"-rwxr--r--"); + } + private void setPermissions(String locn, String permissions) throws Exception { FileSystem fs = FileSystem.get(new URI(locn), clientHiveConf); fs.setPermission(new Path(locn), FsPermission.valueOf(permissions)); @@ -80,4 +92,14 @@ protected void assertNoPrivileges(MetaException me){ assertTrue(me.getMessage().indexOf("not permitted") != -1); } + @Override + protected String getTestDbName(){ + return super.getTestDbName() + "_SBAP"; + } + + @Override + protected String getTestTableName(){ + return super.getTestTableName() + "_SBAP"; + } + }