homework-jianmu/tests/army/authorith/authBasic.py

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())