/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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. */ package org.apache.hadoop.hive.ql.parse.authorization; import java.util.HashMap; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.ql.QueryState; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.Partition; import org.apache.hadoop.hive.ql.metadata.Table; import org.apache.hadoop.hive.ql.security.authorization.PrivilegeType; import org.apache.hadoop.hive.ql.session.SessionState; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; public class TestPrivilegesV1 extends PrivilegesTestBase{ private QueryState queryState; private Hive db; private Table table; private Partition partition; @Before public void setup() throws Exception { queryState = new QueryState.Builder().build(); db = Mockito.mock(Hive.class); table = new Table(DB, TABLE); partition = new Partition(table); HiveConf hiveConf = queryState.getConf(); hiveConf .setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER, "org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory"); SessionState.start(hiveConf); Mockito.when(db.getTable(DB, TABLE, false)).thenReturn(table); Mockito.when(db.getTable(TABLE_QNAME, false)).thenReturn(table); Mockito.when(db.getPartition(table, new HashMap<String, String>(), false)) .thenReturn(partition); } /** * Check acceptable privileges in grant statement * @return * @throws Exception */ @Test public void testPrivInGrant() throws Exception{ grantUserTable("all", PrivilegeType.ALL); grantUserTable("update", PrivilegeType.ALTER_DATA); grantUserTable("alter", PrivilegeType.ALTER_METADATA); grantUserTable("create", PrivilegeType.CREATE); grantUserTable("drop", PrivilegeType.DROP); grantUserTable("index", PrivilegeType.INDEX); grantUserTable("lock", PrivilegeType.LOCK); grantUserTable("select", PrivilegeType.SELECT); grantUserTable("show_database", PrivilegeType.SHOW_DATABASE); } /** * Check acceptable privileges in grant statement * @return * @throws Exception */ @Test public void testPrivInGrantNotAccepted() throws Exception{ grantUserTable("insert", PrivilegeType.INSERT); grantUserTable("delete", PrivilegeType.DELETE); } private void grantUserTable(String privName, PrivilegeType privType) throws Exception { grantUserTable(privName, privType, queryState, db); } }