Changeset: 28bfbbee022f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/28bfbbee022f
Added Files:
sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.test
sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.test
sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.test
sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.test
Removed Files:
sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.py
sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.SQL.py
sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.SQL.py
Branch: Sep2022
Log Message:
Converted some tests to .test format.
diffs (truncated from 374 to 300 lines):
diff --git a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.py
b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.test
rename from sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.py
rename to sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.test
--- a/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.py
+++ b/sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.test
@@ -1,7 +1,11 @@
-from MonetDBtesting.sqltest import SQLTestCase
+statement error 22018!conversion of string 'a' to type ...
+select 'a'+1
+
+statement error 22018!conversion of string 'a' to type ...
+select 1-'a'
-with SQLTestCase() as tc:
- tc.connect(username="monetdb", password="monetdb")
- tc.execute("select 'a'+1;").assertFailed() # it could be either string
failed to convert to 'lng' or 'hge'
- tc.execute("select 1-'a';").assertFailed() # it could be either string
failed to convert to 'lng' or 'hge'
- tc.execute("select
true+1;").assertSucceeded().assertDataResultMatch([(2,)])
+query I nosort
+select true+1
+----
+2
+
diff --git
a/sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
b/sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.test
rename from
sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
rename to
sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.test
--- a/sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
+++ b/sql/test/BugTracker-2015/Tests/grantAndRevokeUserLoggedIN.Bug-3476.test
@@ -1,46 +1,85 @@
-###
-# Assess that the user can use a granted privilege without having to logout.
-# Assess that a user can no longer use the privilege as soon as it was revoked.
-###
+statement ok
+CREATE SCHEMA new_schema_as_well
+
+statement ok
+SET SCHEMA new_schema_as_well
+
+statement ok
+CREATE TABLE test (x int, y int)
-from MonetDBtesting.sqltest import SQLTestCase
+statement ok
+INSERT INTO test VALUES (-1, -1)
+
+statement ok
+CREATE USER new_user WITH PASSWORD 'new_quite_long_password' NAME 'newUser'
SCHEMA new_schema_as_well
+
+statement ok
+GRANT SELECT ON new_schema_as_well.test TO new_user
+
+statement ok
+GRANT UPDATE ON new_schema_as_well.test TO new_user
-with SQLTestCase() as tc1:
- tc1.connect(username="monetdb", password="monetdb")
- tc1.execute('CREATE SCHEMA new_schema_as_well').assertSucceeded()
- tc1.execute('SET SCHEMA new_schema_as_well').assertSucceeded()
- tc1.execute('CREATE TABLE test (x int, y int)').assertSucceeded()
- tc1.execute('INSERT INTO test VALUES (-1, -1)').assertSucceeded()
+statement ok
+GRANT INSERT ON new_schema_as_well.test TO new_user
+
+statement ok
+GRANT DELETE ON new_schema_as_well.test TO new_user
+
+@connection(id=user, username=new_user, password=new_quite_long_password)
+statement ok
+SELECT * FROM test
- # Create a new user and grant the right to select.
- tc1.execute('CREATE USER new_user WITH PASSWORD
\'new_quite_long_password\' NAME \'newUser\' SCHEMA
new_schema_as_well').assertSucceeded()
- tc1.execute('GRANT SELECT ON new_schema_as_well.test TO
new_user').assertSucceeded()
- tc1.execute('GRANT UPDATE ON new_schema_as_well.test TO
new_user').assertSucceeded()
- tc1.execute('GRANT INSERT ON new_schema_as_well.test TO
new_user').assertSucceeded()
- tc1.execute('GRANT DELETE ON new_schema_as_well.test TO
new_user').assertSucceeded()
+@connection(id=user)
+statement ok
+UPDATE test SET x = -3 WHERE y = -1
+
+@connection(id=user)
+statement ok
+INSERT INTO test VALUES (0, 0)
+
+@connection(id=user)
+statement ok
+DELETE FROM test WHERE y = -2
- with SQLTestCase() as tc2:
- # Login the new user, and select.
- tc2.connect(username='new_user', password='new_quite_long_password')
- tc2.execute('SELECT * FROM test').assertSucceeded()
- tc2.execute('UPDATE test SET x = -3 WHERE y = -1').assertSucceeded()
- tc2.execute('INSERT INTO test VALUES (0, 0)').assertSucceeded()
- tc2.execute('DELETE FROM test WHERE y = -2').assertSucceeded()
+# Revoke the right to select from the new user.
+statement ok
+REVOKE SELECT ON new_schema_as_well.test FROM new_user
+
+# The new user should not be able to select anymore while still logged in
+@connection(id=user)
+statement error 42000!SELECT: access denied for new_user to table
'new_schema_as_well.test'
+SELECT * FROM test
- # Revoke the right to select from the new user.
- tc1.execute('REVOKE SELECT ON new_schema_as_well.test FROM
new_user').assertSucceeded()
+@connection(id=user)
+statement error 42000!UPDATE: insufficient privileges for user 'new_user' to
update table 'test'
+UPDATE test SET x = -66 WHERE y = 66
+
+@connection(id=user)
+statement ok
+INSERT INTO test VALUES (66, 66)
+
+@connection(id=user)
+statement error 42000!DELETE FROM: insufficient privileges for user 'new_user'
to delete from table 'test'
+DELETE FROM test WHERE y = -66
- # The new user should not be able to select anymore while still logged
in
- tc2.execute('SELECT * FROM test').assertFailed(err_code="42000",
err_message="SELECT: access denied for new_user to table
'new_schema_as_well.test'")
- tc2.execute('UPDATE test SET x = -66 WHERE y =
66').assertFailed(err_code="42000", err_message="UPDATE: insufficient
privileges for user 'new_user' to update table 'test'")
- tc2.execute('INSERT INTO test VALUES (66, 66)').assertSucceeded()
- tc2.execute('DELETE FROM test WHERE y =
-66').assertFailed(err_code="42000", err_message="DELETE FROM: insufficient
privileges for user 'new_user' to delete from table 'test'")
+# Re-grant the right to select to the new user.
+statement ok
+GRANT SELECT ON new_schema_as_well.test TO new_user
+
+# The new user should be able to select again while still logged in
+@connection(id=user)
+statement ok
+SELECT * FROM test
- # Re-grant the right to select to the new user.
- tc1.execute('GRANT SELECT ON new_schema_as_well.test TO
new_user').assertSucceeded()
+@connection(id=user)
+statement ok
+UPDATE test SET x = -66 WHERE y = 66
- # The new user should be able to select again while still logged in
- tc2.execute('SELECT * FROM test').assertSucceeded()
- tc2.execute('UPDATE test SET x = -66 WHERE y = 66').assertSucceeded()
- tc2.execute('INSERT INTO test VALUES (66, 66)').assertSucceeded()
- tc2.execute('DELETE FROM test WHERE y = -66').assertSucceeded()
+@connection(id=user)
+statement ok
+INSERT INTO test VALUES (66, 66)
+
+@connection(id=user)
+statement ok
+DELETE FROM test WHERE y = -66
+
diff --git a/sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.SQL.py
b/sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.test
rename from sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.SQL.py
rename to sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.test
--- a/sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.SQL.py
+++ b/sql/test/BugTracker-2015/Tests/grantRole.Bug-3772.test
@@ -1,50 +1,89 @@
-###
-# Check that a user cannot grant a role to anyone, including themselves, if the
-# role was not assigned to this user.
-# Check that the monetdb user, the role owner or a user granted with sysadmin
-# can grant roles
-###
+statement ok
+CREATE SCHEMA s1
+
+statement ok
+CREATE USER bruce WITH PASSWORD 'bruce' name 'willis' schema s1
+
+statement ok
+CREATE USER alice WITH PASSWORD 'alice' name 'wonderland' 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 mdb:
- mdb.connect(username="monetdb", password="monetdb")
- mdb.execute("""
- CREATE SCHEMA s1;
- CREATE USER bruce WITH PASSWORD 'bruce' name 'willis' schema s1;
- CREATE USER alice WITH PASSWORD 'alice' name 'wonderland' schema s1;
- CREATE TABLE s1.test(d int);
- CREATE ROLE role1;
- GRANT ALL ON s1.test to role1;
- """).assertSucceeded()
+# check that bruce cannot grant role1
+@connection(id=bruce, username=bruce, password=bruce)
+statement error 42000!Role (role1) missing
+SET role role1
+
+@connection(id=bruce)
+statement error 42000!SELECT: access denied for bruce to table 's1.test'
+select * from test
+
+@connection(id=bruce)
+statement error 0P000!GRANT: Insufficient privileges to grant ROLE 'role1'
+GRANT role1 TO alice FROM current_user
+
+@connection(id=bruce)
+statement error 0P000!GRANT: Insufficient privileges to grant ROLE 'role1'
+GRANT role1 TO bruce FROM current_user
+
+# check that bruce can grant role1 once he's assigned the role
+statement ok
+GRANT role1 TO bruce WITH ADMIN OPTION
+
+@connection(id=bruce)
+statement ok
+SET role role1
- with SQLTestCase() as bruce:
- # check that bruce cannot grant role1
- bruce.connect(username="bruce", password="bruce")
- bruce.execute("SET role role1;").assertFailed(err_code="42000",
err_message="Role (role1) missing")
- bruce.execute("select * from test;").assertFailed(err_code="42000",
err_message="SELECT: access denied for bruce to table 's1.test'")
- bruce.execute("GRANT role1 TO alice FROM
current_user;").assertFailed(err_code="0P000", err_message="GRANT: Insufficient
privileges to grant ROLE 'role1'")
- bruce.execute("GRANT role1 TO bruce FROM
current_user;").assertFailed(err_code="0P000", err_message="GRANT: Insufficient
privileges to grant ROLE 'role1'")
+@connection(id=bruce)
+query I nosort
+select * from test
+----
+
+@connection(id=bruce)
+statement ok
+GRANT role1 TO alice FROM current_user
- # check that bruce can grant role1 once he's assigned the role
- mdb.execute("GRANT role1 TO bruce WITH ADMIN
OPTION;").assertSucceeded()
- bruce.execute("SET role role1;").assertSucceeded()
- bruce.execute("select * from test;").assertSucceeded()
- bruce.execute("GRANT role1 TO alice FROM
current_user;").assertSucceeded()
- bruce.execute("GRANT role1 TO bruce FROM
current_user;").assertFailed(err_code="M1M05", err_message="GRANT: User 'bruce'
already has ROLE 'role1'")
+@connection(id=bruce)
+statement error M1M05!GRANT: User 'bruce' already has ROLE 'role1'
+GRANT role1 TO bruce FROM current_user
+
+# revoke role1 from bruce and check that he's lost his privileges
+statement ok
+REVOKE role1 FROM bruce
+
+statement ok
+REVOKE role1 FROM alice
- # revoke role1 from bruce and check that he's lost his privileges
- mdb.execute("REVOKE role1 FROM bruce;").assertSucceeded()
- mdb.execute("REVOKE role1 FROM alice;").assertSucceeded()
- with SQLTestCase() as bruce1: # reconnect to make sure role is gone.
- bruce1.connect(username="bruce", password="bruce")
- bruce1.execute("select * from
test;").assertFailed(err_code="42000", err_message="SELECT: access denied for
bruce to table 's1.test'")
- bruce1.execute("GRANT role1 TO alice FROM
current_user;").assertFailed(err_code="0P000", err_message="GRANT: Insufficient
privileges to grant ROLE 'role1'")
+@connection(id=bruce1, username=bruce, password=bruce)
+statement error 42000!SELECT: access denied for bruce to table 's1.test'
+select * from test
+
+@connection(id=bruce1)
+statement error 0P000!GRANT: Insufficient privileges to grant ROLE 'role1'
+GRANT role1 TO alice FROM current_user
+
+# grant sysadmin to bruce and check that he now can do everything again
+# as a sysadmin
+statement ok
+GRANT sysadmin TO bruce
- # grant sysadmin to bruce and check that he now can do everything
again
- # as a sysadmin
- mdb.execute("GRANT sysadmin TO bruce;").assertSucceeded()
- bruce1.execute("SET role sysadmin;").assertSucceeded()
- bruce1.execute("select * from test;").assertSucceeded()
- bruce1.execute("GRANT role1 TO alice FROM
current_role;").assertSucceeded()
+@connection(id=bruce1)
+statement ok
+SET role sysadmin
+@connection(id=bruce1)
+query I nosort
+select * from test
+----
+
+@connection(id=bruce1)
+statement ok
+GRANT role1 TO alice FROM current_role
+
diff --git
a/sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.SQL.py
b/sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.test
rename from
sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.SQL.py
rename to sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.test
--- a/sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.SQL.py
+++ b/sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.test
@@ -1,35 +1,52 @@
-###
-# Check that GRANT a ROLE to a USER once works, but GRANT it a second time is
-# properly rejected with "GRANT: User '<usr>' already has ROLE '<role>'",
-# which also prevents the related problems described in this bug, i.e.
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]