Changeset: 07091921a49f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=07091921a49f
Added Files:
        sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.SQL.py
        sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.err
        sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.out
Branch: default
Log Message:

A test for bug 3476.


diffs (230 lines):

diff --git a/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.SQL.py 
b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.SQL.py
new file mode 100644
--- /dev/null
+++ b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.SQL.py
@@ -0,0 +1,58 @@
+###
+# 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.
+###
+
+import sys, time, monetdb.sql, os
+
+def connect(username, password):
+    return monetdb.sql.connect(database = os.getenv('TSTDB'),
+                               hostname = 'localhost',
+                               port = int(os.getenv('MAPIPORT')),
+                               username = username,
+                               password = password,
+                               autocommit = True)
+
+def query(conn, sql):
+    print(sql)
+    cur = conn.cursor()
+    cur.execute(sql)
+    r = cur.fetchall()
+    cur.close()
+    print(r)
+
+def run(conn, sql):
+    print(sql)
+    r = conn.execute(sql)
+    print(r)
+
+c1 = connect('monetdb', 'monetdb')
+# Create a new schema with a new table.
+run(c1, 'CREATE SCHEMA new_schema_as_well')
+run(c1, 'SET SCHEMA new_schema_as_well')
+run(c1, 'CREATE TABLE test (x int, y int)')
+run(c1, 'INSERT INTO test VALUES (-1, -1)')
+
+# Create a new user and grant the right to select.
+run(c1, 'CREATE USER new_user WITH PASSWORD \'new_quite_long_password\' NAME 
\'newUser\' SCHEMA new_schema_as_well')
+run(c1, 'GRANT SELECT ON new_schema_as_well.test TO new_user')
+run(c1, 'GRANT UPDATE ON new_schema_as_well.test TO new_user')
+run(c1, 'GRANT INSERT ON new_schema_as_well.test TO new_user')
+run(c1, 'GRANT DELETE ON new_schema_as_well.test TO new_user')
+
+# Login the new user, and select.
+c2 = connect('new_user', 'new_quite_long_password')
+query(c2, 'SELECT * FROM test')
+run(c2, 'UPDATE test SET x = -3 WHERE y = -1')
+run(c2, 'INSERT INTO test VALUES (0, 0)')
+run(c2, 'DELETE FROM test WHERE y = -2')
+
+# Revoke the right to select from the new user.
+run(c1, 'REVOKE SELECT ON new_schema_as_well.test FROM new_user')
+
+# The new user should not be able to select anymore.
+run(c2, 'UPDATE test SET x = -66 WHERE y = 66')
+run(c2, 'INSERT INTO test VALUES (66, 66)')
+run(c2, 'DELETE FROM test WHERE y = -66')
+query(c2, 'SELECT * FROM test')
+
diff --git a/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.err 
b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.err
@@ -0,0 +1,50 @@
+stderr of test 'grantAndRevokeUserLogedIN` in directory 'sql/test/Users` 
itself:
+
+
+# 10:42:58 >  
+# 10:42:58 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=33978" "--set" 
"mapi_usock=/var/tmp/mtest-2062/.s.monetdb.33978" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/vera/Desktop/MonetDB/installation/var/MonetDB/mTests_sql_test_Users"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 10:42:58 >  
+
+# builtin opt  gdk_dbpath = 
/home/vera/Desktop/MonetDB/installation/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 33978
+# cmdline opt  mapi_usock = /var/tmp/mtest-2062/.s.monetdb.33978
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/vera/Desktop/MonetDB/installation/var/MonetDB/mTests_sql_test_Users
+# cmdline opt  mal_listing = 0
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 10:42:59 >  
+# 10:42:59 >  "/usr/bin/python2" "grantAndRevokeUserLogedIN.SQL.py" 
"grantAndRevokeUserLogedIN"
+# 10:42:59 >  
+
+Traceback (most recent call last):
+  File "grantAndRevokeUserLogedIN.SQL.py", line 39, in <module>
+    run(c2, 'UPDATE test SET x = -66 WHERE y = 66')
+  File "grantAndRevokeUserLogedIN.SQL.py", line 26, in run
+    r = conn.execute(sql)
+  File 
"/home/vera/Desktop/MonetDB/installation/lib/python2.7/site-packages/monetdb/sql/connections.py",
 line 127, in execute
+    return self.command('s' + query + '\n;')
+  File 
"/home/vera/Desktop/MonetDB/installation/lib/python2.7/site-packages/monetdb/sql/connections.py",
 line 132, in command
+    return self.mapi.cmd(command)
+  File 
"/home/vera/Desktop/MonetDB/installation/lib/python2.7/site-packages/monetdb/mapi.py",
 line 178, in cmd
+    raise OperationalError(response[1:])
+monetdb.exceptions.OperationalError: UPDATE: insufficient privileges for user 
'new_user' to update table 'test' on column 'x'
+
+
+# 10:42:59 >  
+# 10:42:59 >  "Done."
+# 10:42:59 >  
+
diff --git a/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.out 
b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/Users/Tests/grantAndRevokeUserLogedIN.Bug-3476.stable.out
@@ -0,0 +1,107 @@
+stdout of test 'grantAndRevokeUserLogedIN` in directory 'sql/test/Users` 
itself:
+
+
+# 10:44:33 >  
+# 10:44:33 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=39798" "--set" 
"mapi_usock=/var/tmp/mtest-2273/.s.monetdb.39798" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/vera/Desktop/MonetDB/installation/var/MonetDB/mTests_sql_test_Users"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 10:44:33 >  
+
+# MonetDB 5 server v11.22.0
+# This is an unreleased version
+# Serving database 'mTests_sql_test_Users', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit 
integers dynamically linked
+# Found 3.746 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://buzu:39798/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-2273/.s.monetdb.39798
+# Start processing logs sql/sql_logs version 52200
+# Finished processing logs sql/sql_logs
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_temporal.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 27_rejects.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 39_analytics_hge.sql
+# loading sql script: 40_json.sql
+# loading sql script: 40_json_hge.sql
+# loading sql script: 41_md5sum.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 51_sys_schema_extension.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 80_udf_hge.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 90_generator_hge.sql
+# loading sql script: 99_system.sql
+
+# 10:44:34 >  
+# 10:44:34 >  "/usr/bin/python2" "grantAndRevokeUserLogedIN.SQL.py" 
"grantAndRevokeUserLogedIN"
+# 10:44:34 >  
+
+CREATE SCHEMA new_schema_as_well
+&3
+
+SET SCHEMA new_schema_as_well
+&4 t
+
+CREATE TABLE test (x int, y int)
+&3
+
+INSERT INTO test VALUES (-1, -1)
+&2 1 -1
+
+CREATE USER new_user WITH PASSWORD 'new_quite_long_password' NAME 'newUser' 
SCHEMA new_schema_as_well
+&3
+
+GRANT SELECT ON new_schema_as_well.test TO new_user
+&3
+
+GRANT UPDATE ON new_schema_as_well.test TO new_user
+&3
+
+GRANT INSERT ON new_schema_as_well.test TO new_user
+&3
+
+GRANT DELETE ON new_schema_as_well.test TO new_user
+&3
+
+SELECT * FROM test
+[(-1, -1)]
+UPDATE test SET x = -3 WHERE y = -1
+&2 1 -1
+
+INSERT INTO test VALUES (0, 0)
+&2 1 -1
+
+DELETE FROM test WHERE y = -2
+&2 0 -1
+
+REVOKE SELECT ON new_schema_as_well.test FROM new_user
+&3
+
+UPDATE test SET x = -66 WHERE y = 66
+
+# 10:44:34 >  
+# 10:44:34 >  "Done."
+# 10:44:34 >  
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to