Changeset: 1f775eadfbaa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1f775eadfbaa
Modified Files:
        sql/test/Users/Tests/function_privs.SQL.py
Branch: indirect-privs
Log Message:

Added missing truncate version


diffs (91 lines):

diff --git a/sql/test/Users/Tests/function_privs.SQL.py 
b/sql/test/Users/Tests/function_privs.SQL.py
--- a/sql/test/Users/Tests/function_privs.SQL.py
+++ b/sql/test/Users/Tests/function_privs.SQL.py
@@ -49,6 +49,13 @@ with SQLTestCase() as mdb:
           return 1;
         end;
     """).assertSucceeded()
+    mdb.execute("""
+        create function truncateversion() returns int
+        begin
+          truncate version;
+          return 1;
+        end;
+    """).assertSucceeded()
 
     # create a table to which my_user doesn't have access
     mdb.execute("CREATE SCHEMA your_schema;").assertSucceeded()
@@ -65,11 +72,13 @@ with SQLTestCase() as mdb:
     mdb.execute("GRANT EXECUTE on function insertversion to 
my_user;").assertSucceeded()
     mdb.execute("GRANT EXECUTE on function updateversion to 
my_user;").assertSucceeded()
     mdb.execute("GRANT EXECUTE on function deleteversion to 
my_user;").assertSucceeded()
+    mdb.execute("GRANT EXECUTE on function truncateversion to 
my_user;").assertSucceeded()
 
     mdb.execute("GRANT EXECUTE on function selectversion to 
my_user2;").assertSucceeded()
     mdb.execute("GRANT EXECUTE on function insertversion to 
my_user2;").assertSucceeded()
     mdb.execute("GRANT EXECUTE on function updateversion to 
my_user2;").assertSucceeded()
     mdb.execute("GRANT EXECUTE on function deleteversion to 
my_user2;").assertSucceeded()
+    mdb.execute("GRANT EXECUTE on function truncateversion to 
my_user2;").assertSucceeded()
 
     with SQLTestCase() as tc:
         # my_user can SEL/INS/UPD/DEL both directly on the table or through 
the functions
@@ -85,6 +94,9 @@ with SQLTestCase() as mdb:
         tc.execute("SELECT updateversion('test1', 4);").assertSucceeded()
         tc.execute("SELECT deleteversion('test1');").assertSucceeded()
         tc.execute("SELECT * FROM 
selectversion();").assertSucceeded().assertDataResultMatch([('test3', 3)])
+        tc.execute("SELECT truncateversion();").assertSucceeded()
+        tc.execute("SELECT * FROM 
selectversion();").assertSucceeded().assertDataResultMatch([])
+        tc.execute("INSERT INTO version VALUES ('test3', 
3)").assertSucceeded() # insert for the next user
         # make my_user an owner of my_schema so that my_user can create 
functions
         # in my_schema
         mdb.execute("GRANT my_role to my_user;").assertSucceeded()
@@ -116,10 +128,18 @@ with SQLTestCase() as mdb:
               return 1;
             end;
         """).assertSucceeded()
+        tc.execute("""
+            create function mytruncate() returns int
+            begin
+              truncate version;
+              return 1;
+            end;
+        """).assertSucceeded()
         tc.execute("DROP FUNCTION myselect;").assertSucceeded()
         tc.execute("DROP FUNCTION myinsert;").assertSucceeded()
         tc.execute("DROP FUNCTION myupdate;").assertSucceeded()
         tc.execute("DROP FUNCTION mydelete;").assertSucceeded()
+        tc.execute("DROP FUNCTION mytruncate;").assertSucceeded()
         # but my_user cannot create functions to operate on a table to which it
         # doesn't have access
         tc.execute("""
@@ -142,6 +162,8 @@ with SQLTestCase() as mdb:
         tc.execute("SELECT * FROM 
selectversion();").assertSucceeded().assertDataResultMatch([('test3', 33), 
('test4', 4)])
         tc.execute("SELECT deleteversion('test3');").assertSucceeded()
         tc.execute("SELECT * FROM 
selectversion();").assertSucceeded().assertDataResultMatch([('test4', 4)])
+        tc.execute("SELECT truncateversion();").assertSucceeded()
+        tc.execute("SELECT * FROM 
selectversion();").assertSucceeded().assertDataResultMatch([])
         # and my_user2 cannot create functions to operate on the table
         tc.execute("""
             create function myselect2() returns table(name varchar(10), i int)
@@ -170,6 +192,13 @@ with SQLTestCase() as mdb:
               return 1;
             end;
         """).assertFailed(err_code="42000", err_message="CREATE FUNCTION: 
insufficient privileges for user 'my_user2' in schema 'my_schema'")
+        tc.execute("""
+            create function mytruncate2() returns int
+            begin
+              truncate version;
+              return 1;
+            end;
+        """).assertFailed(err_code="42000", err_message="CREATE FUNCTION: 
insufficient privileges for user 'my_user2' in schema 'my_schema'")
 
         # clean up
         mdb.connect(username="monetdb", password="monetdb")
@@ -177,6 +206,7 @@ with SQLTestCase() as mdb:
         mdb.execute("DROP FUNCTION my_schema.insertversion;").assertSucceeded()
         mdb.execute("DROP FUNCTION my_schema.updateversion;").assertSucceeded()
         mdb.execute("DROP FUNCTION my_schema.deleteversion;").assertSucceeded()
+        mdb.execute("DROP FUNCTION 
my_schema.truncateversion;").assertSucceeded()
         mdb.execute("DROP TABLE my_schema.version;").assertSucceeded()
         mdb.execute("DROP TABLE your_schema.your_table;").assertSucceeded()
         mdb.execute("DROP USER my_user;").assertSucceeded()
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to