Changeset: a5ea61888e68 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a5ea61888e68
Added Files:
        sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.test
        sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.test
        sql/test/BugTracker-2021/Tests/remote-table-large.Bug-7178.test.in
        sql/test/SQLancer/Tests/sqlancer19.test.in
        sql/test/SQLancer/Tests/sqlancer20.test.in
        sql/test/SQLancer/Tests/sqlancer21.test.in
Removed Files:
        sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py
        sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.py
        sql/test/BugTracker-2021/Tests/remote-table-large.Bug-7178.SQL.py
        sql/test/SQLancer/Tests/sqlancer19.SQL.py
        sql/test/SQLancer/Tests/sqlancer20.SQL.py
        sql/test/SQLancer/Tests/sqlancer21.SQL.py
Modified Files:
        testing/Mtest.py.in
Branch: Sep2022
Log Message:

Converted some tests to .test format.


diffs (truncated from 2476 to 300 lines):

diff --git a/sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py 
b/sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.test
rename from sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py
rename to sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.test
--- a/sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py
+++ b/sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.test
@@ -1,52 +1,134 @@
-###
-# Check that when a user is granted (select) access to some columns in a table,
-#   the user can indeed access those columns.
-# In addition, check that after the access to some of the granted columns has
-#   been revoked, the user can access the remaining columns.
-###
+statement ok
+CREATE schema myschema
+
+statement ok
+CREATE USER myuser WITH UNENCRYPTED PASSWORD 'Test123' NAME 'Hulk' SCHEMA 
myschema
+
+statement ok
+SET SCHEMA myschema
 
+statement ok
+CREATE TABLE test (id integer, name varchar(20), address varchar(20))
+
+statement ok
+INSERT INTO test (id, name,address) VALUES (1,'Tom', 'planet'),(2,'Karen', 
'earth')
+
+# 'myuser' cannot SELECT before GRANT and after REVOKE, can SELECT after GRANT
+@connection(id=tc, username=myuser, password=Test123)
+statement error 42000!SELECT: access denied for myuser to table 'myschema.test'
+select * from test
+
+statement ok
+GRANT SELECT ON test TO myuser
 
-from MonetDBtesting.sqltest import SQLTestCase
+@connection(id=tc)
+query ITT rowsort
+select * from test
+----
+1
+Tom
+planet
+2
+Karen
+earth
+
+statement ok
+REVOKE SELECT ON test FROM myuser
+
+@connection(id=tc)
+statement error 42000!SELECT: access denied for myuser to table 'myschema.test'
+select * from test
+
+# 'myuser' can SELECT test(id)
+statement ok
+GRANT SELECT (id) ON test TO myuser
 
-with SQLTestCase() as mdb:
-    mdb.connect(username="monetdb", password="monetdb")
-    mdb.execute("CREATE schema myschema;").assertSucceeded()
-    mdb.execute("CREATE USER myuser WITH UNENCRYPTED PASSWORD 'Test123' NAME 
'Hulk' SCHEMA myschema;").assertSucceeded()
-    mdb.execute("SET SCHEMA myschema;").assertSucceeded()
-    mdb.execute("CREATE TABLE test (id integer, name varchar(20), address 
varchar(20));").assertSucceeded()
-    mdb.execute("INSERT INTO test (id, name,address) VALUES (1,'Tom', 
'planet'),(2,'Karen', 'earth');").assertSucceeded()
+@connection(id=tc)
+query I rowsort
+select id from test
+----
+1
+2
+
+@connection(id=tc)
+statement error 42000!SELECT: identifier 'name' unknown
+select name from test
+
+@connection(id=tc)
+statement error 42000!SELECT: identifier 'address' unknown
+select address from test
+
+@connection(id=tc)
+query I rowsort
+select * from test
+----
+1
+2
 
-    with SQLTestCase() as tc:
-        tc.connect(username="myuser", password="Test123")
-        # 'myuser' cannot SELECT before GRANT and after REVOKE, can SELECT 
after GRANT
-        tc.execute("select * from test").assertFailed(err_code='42000', 
err_message="SELECT: access denied for myuser to table 'myschema.test'")
-        mdb.execute("GRANT SELECT ON test TO myuser;").assertSucceeded()
-        tc.execute("select * from test").assertRowCount(2)
-        mdb.execute("REVOKE SELECT ON test FROM myuser;").assertSucceeded()
-        tc.execute("select * from test").assertFailed(err_code='42000', 
err_message="SELECT: access denied for myuser to table 'myschema.test'")
+# 'myuser' can SELECT test(id, address)
+statement ok
+GRANT SELECT (address) ON test TO myuser
+
+@connection(id=tc)
+query I rowsort
+select id from test
+----
+1
+2
+
+@connection(id=tc)
+statement error 42000!SELECT: identifier 'name' unknown
+select name from test
 
-        # 'myuser' can SELECT test(id)
-        mdb.execute("GRANT SELECT (id) ON test TO myuser;").assertSucceeded()
-        tc.execute("select id from 
test").assertSucceeded().assertDataResultMatch([(1,),(2,)])
-        tc.execute("select name from test").assertFailed(err_code='42000', 
err_message="SELECT: identifier 'name' unknown")
-        tc.execute("select address from test").assertFailed(err_code='42000', 
err_message="SELECT: identifier 'address' unknown")
-        tc.execute("select * from 
test").assertSucceeded().assertDataResultMatch([(1,),(2,)])
+@connection(id=tc)
+query T rowsort
+select address from test
+----
+earth
+planet
+
+@connection(id=tc)
+query IT rowsort
+select * from test
+----
+1
+planet
+2
+earth
 
-        # 'myuser' can SELECT test(id, address)
-        mdb.execute("GRANT SELECT (address) ON test TO 
myuser;").assertSucceeded()
-        tc.execute("select id from 
test").assertSucceeded().assertDataResultMatch([(1,),(2,)])
-        tc.execute("select name from test").assertFailed(err_code='42000', 
err_message="SELECT: identifier 'name' unknown")
-        tc.execute("select address from 
test").assertSucceeded().assertDataResultMatch([('planet',),('earth',)])
-        tc.execute("select * from 
test").assertSucceeded().assertDataResultMatch([(1,'planet'),(2,'earth')])
+# 'myuser' can only SELECT test(address)
+statement ok
+REVOKE SELECT (id) ON test FROM myuser
+
+@connection(id=tc)
+statement error 42000!SELECT: identifier 'id' unknown
+select id from test
+
+@connection(id=tc)
+statement error 42000!SELECT: identifier 'name' unknown
+select name from test
 
-        # 'myuser' can only SELECT test(address)
-        mdb.execute("REVOKE SELECT (id) ON test FROM 
myuser;").assertSucceeded()
-        tc.execute("select id from test").assertFailed(err_code='42000', 
err_message="SELECT: identifier 'id' unknown")
-        tc.execute("select name from test").assertFailed(err_code='42000', 
err_message="SELECT: identifier 'name' unknown")
-        tc.execute("select address from 
test").assertSucceeded().assertDataResultMatch([('planet',),('earth',)])
-        tc.execute("select * from 
test").assertSucceeded().assertDataResultMatch([('planet',),('earth',)])
+@connection(id=tc)
+query T rowsort
+select address from test
+----
+earth
+planet
 
-    # clean up
-    mdb.execute("SET SCHEMA sys;").assertSucceeded()
-    mdb.execute("DROP USER myuser;").assertSucceeded()
-    mdb.execute("DROP SCHEMA myschema CASCADE;").assertSucceeded()
+@connection(id=tc)
+query T rowsort
+select * from test
+----
+earth
+planet
+
+# clean up
+statement ok
+SET SCHEMA sys
+
+statement ok
+DROP USER myuser
+
+statement ok
+DROP SCHEMA myschema CASCADE
+
diff --git a/sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.py 
b/sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.test
rename from sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.py
rename to sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.test
--- a/sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.py
+++ b/sql/test/BugTracker-2020/Tests/revokeRoleUserLoggedIN.Bug-7026.test
@@ -1,43 +1,77 @@
-###
-# Assess that when the role of a user, who is currently logged in and has
-#   assumed that role, has been revoked, the user immedately lose all
-#   privileges associated with that role.
-###
+# Create a user, schema and role
+statement ok
+CREATE SCHEMA s1
+
+statement ok
+CREATE USER bruce WITH PASSWORD 'bruce' name 'willis' schema s1
 
-from MonetDBtesting.sqltest import SQLTestCase
+statement ok
+CREATE TABLE s1.test(d int)
 
+statement ok
+CREATE ROLE role1
+
+statement ok
+GRANT ALL ON s1.test to role1
 
-with SQLTestCase() as tc1:
-    with SQLTestCase() as tc2:
-        tc1.connect(username="monetdb", password="monetdb")
-        # Create a user, schema and role
-        tc1.execute("""
-        CREATE SCHEMA s1;
-        CREATE USER bruce WITH PASSWORD 'bruce' name 'willis' schema s1;
-        CREATE TABLE s1.test(d int);
-        CREATE ROLE role1;
-        GRANT ALL ON s1.test to role1;
-        GRANT role1 TO bruce;""").assertSucceeded()
+statement ok
+GRANT role1 TO bruce
+
+# Login as `bruce` and use `role1`
+@connection(id=bruce, username=bruce, password=bruce)
+statement ok
+SET role role1
+
+@connection(id=bruce)
+statement ok
+INSERT INTO test VALUES (24), (42)
+
+@connection(id=bruce)
+statement ok
+UPDATE test SET d = 42 WHERE d <> 42
+
+@connection(id=bruce)
+statement ok
+DELETE FROM test WHERE d = 42
 
-        # Login as `bruce` and use `role1`
-        tc2.connect(username="bruce", password="bruce")
-        tc2.execute('SET role role1;').assertSucceeded()
-        tc2.execute('INSERT INTO test VALUES (24), 
(42);').assertSucceeded().assertRowCount(2)
-        tc2.execute('UPDATE test SET d = 42 WHERE d <> 
42;').assertSucceeded().assertRowCount(1)
-        tc2.execute('DELETE FROM test WHERE d = 
42;').assertSucceeded().assertRowCount(2)
-        tc2.execute('SELECT * FROM 
test;').assertSucceeded().assertRowCount(0).assertDataResultMatch([])
+@connection(id=bruce)
+query I nosort
+SELECT * FROM test
+----
+
+# Revoke `role1` from `bruce`
+statement ok
+REVOKE role1 FROM bruce
 
-        # Revoke `role1` from `bruce`
-        tc1.execute('REVOKE role1 FROM bruce;').assertSucceeded()
+# `bruce` should still be able to access `test`
+@connection(id=bruce)
+statement ok
+INSERT INTO test VALUES (24), (42)
+
+@connection(id=bruce)
+statement ok
+UPDATE test SET d = 42 WHERE d <> 42
 
-        # `bruce` should not be able to access `test` again:
-        tc2.execute('INSERT INTO test VALUES (24), 
(42);').assertSucceeded().assertRowCount(2)
-        tc2.execute('UPDATE test SET d = 42 WHERE d <> 
42;').assertSucceeded().assertRowCount(1)
-        tc2.execute('DELETE FROM test WHERE d = 
42;').assertSucceeded().assertRowCount(2)
-        tc2.execute('SELECT * FROM 
test;').assertSucceeded().assertRowCount(0).assertDataResultMatch([])
-        tc2.execute('SET ROLE role1; -- verifies role1 is 
gone').assertFailed(err_message="Role (role1) missing")
+@connection(id=bruce)
+statement ok
+DELETE FROM test WHERE d = 42
+
+@connection(id=bruce)
+query I nosort
+SELECT * FROM test
+----
 
-    tc1.execute("""
-    DROP USER bruce;
-    DROP SCHEMA s1 CASCADE;
-    DROP ROLE role1""").assertSucceeded()
+#verify role1 is gone
+@connection(id=bruce)
+statement error Role (role1) missing
+SET ROLE role1
+
+statement ok
+DROP USER bruce
+
+statement ok
+DROP SCHEMA s1 CASCADE
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to