207 lines
9.8 KiB
Python
207 lines
9.8 KiB
Python
from frame.log import *
|
|
from frame.cases import *
|
|
from frame.sql import *
|
|
from frame.caseBase import *
|
|
from frame import *
|
|
import taos
|
|
|
|
class TDTestCase(TBase):
|
|
"""Add test case to cover the basic privilege test
|
|
"""
|
|
def init(self, conn, logSql, replicaVar=1):
|
|
self.replicaVar = int(replicaVar)
|
|
tdLog.debug("start to execute %s" % __file__)
|
|
tdSql.init(conn.cursor())
|
|
|
|
def prepare_data(self):
|
|
# database
|
|
tdSql.execute("create database db;")
|
|
tdSql.execute("use db;")
|
|
|
|
# create super table
|
|
tdSql.execute("create table stb(ts timestamp, col1 float, col2 int, col3 varchar(16)) tags(t1 int, t2 binary(20));")
|
|
|
|
# create child table
|
|
tdSql.execute("create table ct1 using stb tags(1, 'beijing');")
|
|
# insert data to child table
|
|
tdSql.execute("insert into ct1 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
|
|
# create reguler table
|
|
tdSql.execute("create table rt1(ts timestamp, col1 float, col2 int, col3 varchar(16));")
|
|
# insert data to reguler table
|
|
tdSql.execute("insert into rt1 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
|
|
def create_user(self, user_name, passwd):
|
|
tdSql.execute(f"create user {user_name} pass '{passwd}';")
|
|
|
|
def delete_user(self, user_name):
|
|
tdSql.execute(f"drop user {user_name};")
|
|
|
|
def test_common_user_privileges(self):
|
|
self.prepare_data()
|
|
# create user
|
|
self.create_user("test", "test")
|
|
# check user 'test' privileges
|
|
testconn = taos.connect(user='test', password='test')
|
|
cursor = testconn.cursor()
|
|
testSql = TDSql()
|
|
testSql.init(cursor)
|
|
# create db privilege
|
|
testSql.error("create database db1;", expectErrInfo="Insufficient privilege for operation")
|
|
# modify db、super table、child table、reguler table privilege
|
|
testSql.error("alter database db buffer 512;")
|
|
testSql.error("alter stable db.stb add column col4 float;")
|
|
testSql.error("alter stable db.stb drop column col3;")
|
|
testSql.error("alter stable db.stb modify column col3 varchar(32);")
|
|
testSql.error("alter stable db.stb add tag t3 int;")
|
|
testSql.error("alter stable db.stb drop tag t2;")
|
|
testSql.error("alter stable db.stb rename tag t2 t21;")
|
|
testSql.error("alter table ct1 add column col4 double;")
|
|
testSql.error("alter table ct1 drop column col3;")
|
|
testSql.error("alter table ct1 modify column col3 varchar(32);")
|
|
testSql.error("alter table ct1 rename column col3 col4;")
|
|
testSql.error("alter table ct1 set tag t1=11;")
|
|
testSql.error("alter table rt1 add column col4 double;")
|
|
testSql.error("alter table rt1 drop column col3;")
|
|
testSql.error("alter table rt1 modify column col3 varchar(32);")
|
|
testSql.error("alter table rt1 rename column col3 col4;")
|
|
# create super table、child table、reguler table privilege
|
|
testSql.error("create table stb2 (ts timestamp, col1 int) tags(t1 int, t2 varchar(16));")
|
|
testSql.error("create table ct2 using db.stb tags(2, 'shanghai');")
|
|
testSql.error("create table rt2 (ts timestamp, col1 int);")
|
|
# query super table、child table、reguler table privilege
|
|
testSql.error("select * from db.stb;")
|
|
testSql.error("select * from db.ct1;")
|
|
testSql.error("select * from db.rt1;")
|
|
# query system table privilege
|
|
testSql.query("select * from information_schema.ins_users;")
|
|
testSql.checkRows(2)
|
|
# drop db privilege
|
|
testSql.error("drop database db;", expectErrInfo="Insufficient privilege for operation")
|
|
# delete user
|
|
self.delete_user("test")
|
|
# drop db
|
|
tdSql.execute("drop database db;")
|
|
tdLog.info("test_common_user_privileges successfully executed")
|
|
|
|
def test_common_user_with_createdb_privileges(self):
|
|
self.prepare_data()
|
|
# create user
|
|
self.create_user("test", "test")
|
|
# check user 'test' privileges
|
|
testconn = taos.connect(user='test', password='test')
|
|
cursor = testconn.cursor()
|
|
testSql = TDSql()
|
|
testSql.init(cursor)
|
|
# grant create db privilege
|
|
tdSql.execute("alter user test createdb 1;")
|
|
# check user 'test' create db、super table、child table、reguler table、view privileges
|
|
testSql.execute("create database db1;")
|
|
testSql.execute("use db1;")
|
|
testSql.execute("create stable stb1 (ts timestamp, col1 float, col2 int, col3 varchar(16)) tags(t1 int, t2 binary(20));")
|
|
testSql.execute("create table ct1 using stb1 tags(1, 'beijing');")
|
|
testSql.execute("insert into ct1 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
testSql.query("select * from stb1;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from ct1;")
|
|
testSql.checkRows(2)
|
|
testSql.execute("create table rt1(ts timestamp, col1 float, col2 int, col3 varchar(16));")
|
|
testSql.execute("insert into rt1 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
testSql.query("select * from rt1;")
|
|
testSql.checkRows(2)
|
|
testSql.execute("create view v1 as select * from stb1;")
|
|
testSql.query("select * from v1;")
|
|
testSql.checkRows(2)
|
|
# check user 'test' alter db、super table、child table、reguler table privileges
|
|
testSql.execute("alter database db1 buffer 512;")
|
|
testSql.execute("alter stable db1.stb1 add column col4 varchar(16);")
|
|
testSql.execute("alter stable db1.stb1 drop column col3;")
|
|
testSql.execute("alter stable db1.stb1 modify column col4 varchar(32);")
|
|
testSql.execute("alter stable db1.stb1 add tag t3 binary(16);")
|
|
testSql.execute("alter stable db1.stb1 drop tag t2;")
|
|
testSql.execute("alter table ct1 set tag t1=11;")
|
|
testSql.execute("alter table rt1 add column col4 varchar(16);")
|
|
testSql.execute("alter table rt1 drop column col3;")
|
|
testSql.execute("alter table rt1 modify column col4 varchar(32);")
|
|
testSql.execute("alter table rt1 rename column col4 col5;")
|
|
# check user 'test' query privileges
|
|
testSql.query("select * from db1.stb1;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db1.ct1;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db1.rt1;")
|
|
testSql.checkRows(2)
|
|
|
|
# create another user 'test1'
|
|
self.create_user("test1", "test1")
|
|
test1conn = taos.connect(user='test1', password='test1')
|
|
cursor1 = test1conn.cursor()
|
|
test1Sql = TDSql()
|
|
test1Sql.init(cursor1)
|
|
# check user 'test' doesn't privilege to grant create db privilege to another user
|
|
testSql.error("alter user test1 createdb 1;", expectErrInfo="Insufficient privilege for operation")
|
|
testSql.error("grant all on db1.stb1 to test1;", expectErrInfo="Insufficient privilege for operation")
|
|
|
|
# grant read、write privilege to user 'test' and check user 'test' privileges
|
|
tdSql.execute("grant all on db.* to test;")
|
|
testSql.query("select * from db.stb;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db.ct1;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db.rt1;")
|
|
testSql.checkRows(2)
|
|
testSql.execute("create stable db.stb2 (ts timestamp, col1 float, col2 int, col3 varchar(16)) tags(t1 int, t2 binary(20));")
|
|
testSql.execute("create table db.ct2 using db.stb2 tags(2, 'shenzhen');")
|
|
testSql.execute("insert into db.ct2 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
testSql.query("select * from db.stb2;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db.ct2;")
|
|
testSql.checkRows(2)
|
|
# grant all privilege to user 'test1' and check user 'test1' privileges
|
|
tdSql.execute("grant all on db1.* to test1;")
|
|
test1Sql.query("select * from db1.stb1;")
|
|
test1Sql.checkRows(2)
|
|
test1Sql.query("select * from db1.ct1;")
|
|
test1Sql.checkRows(2)
|
|
test1Sql.query("select * from db1.rt1;")
|
|
test1Sql.checkRows(2)
|
|
test1Sql.execute("create stable db1.stb2 (ts timestamp, col1 float, col2 int, col3 varchar(16)) tags(t1 int, t2 binary(20));")
|
|
test1Sql.execute("create table db1.ct2 using db1.stb2 tags(3, 'guangzhou');")
|
|
test1Sql.execute("insert into db1.ct2 values(now, 9.1, 200, 'aa')(now+1s, 8.9, 198, 'bb');")
|
|
test1Sql.query("select * from db1.stb2;")
|
|
test1Sql.checkRows(2)
|
|
|
|
# revoke create db privilege from user 'test'
|
|
tdSql.execute("alter user test createdb 0;")
|
|
testSql.error("create database db2;", expectErrInfo="Insufficient privilege for operation")
|
|
# check other privileges of user 'test'
|
|
testSql.query("select * from db.stb;")
|
|
testSql.checkRows(2)
|
|
testSql.query("select * from db1.stb1;")
|
|
testSql.checkRows(2)
|
|
tdSql.execute("alter user test createdb 1;")
|
|
testSql.execute("create database db2;")
|
|
testSql.query("show databases;")
|
|
tdLog.info(testSql.res)
|
|
testSql.checkRows(5)
|
|
testSql.execute("drop view v1;")
|
|
testSql.execute("drop table db1.rt1;")
|
|
testSql.execute("drop table db1.ct1;")
|
|
testSql.execute("drop table db1.stb1;")
|
|
testSql.execute("drop database db1;")
|
|
testSql.execute("drop database db2;")
|
|
tdSql.execute("drop database db;")
|
|
self.delete_user("test")
|
|
self.delete_user("test1")
|
|
|
|
def run(self):
|
|
self.test_common_user_privileges()
|
|
self.test_common_user_with_createdb_privileges()
|
|
|
|
def stop(self):
|
|
tdSql.close()
|
|
tdLog.success("%s successfully executed" % __file__)
|
|
|
|
tdCases.addWindows(__file__, TDTestCase())
|
|
tdCases.addLinux(__file__, TDTestCase())
|