Changeset: cfeca9262b44 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cfeca9262b44
Removed Files:
        sql/test/Users/Tests/role.stable.err
        sql/test/Users/Tests/role.stable.out
        sql/test/Users/Tests/role1.SQL.py
Modified Files:
        sql/test/Users/Tests/All
        sql/test/Users/Tests/role.SQL.py
Branch: default
Log Message:

Clean up, merge and extend all ROLE tests into "role"


diffs (243 lines):

diff --git a/sql/test/Users/Tests/All b/sql/test/Users/Tests/All
--- a/sql/test/Users/Tests/All
+++ b/sql/test/Users/Tests/All
@@ -1,4 +1,4 @@
-role1
+role
 schema
 table
 unknown_user
@@ -14,7 +14,6 @@ columnRights
 changePasswordUser
 renameUser
 changeSchemaUser
-role
 grantMonetdb
 copyinto
 schemaRights
diff --git a/sql/test/Users/Tests/role.SQL.py b/sql/test/Users/Tests/role.SQL.py
--- a/sql/test/Users/Tests/role.SQL.py
+++ b/sql/test/Users/Tests/role.SQL.py
@@ -1,46 +1,44 @@
 ###
-# Revoke role and confirm user can no longer assume it.
-# Assess there is an error message if dropping unexisting role.
-# Assess it is not possible to recreate an existing role.
+# Tests for roles and users
+#
+# 1. check that we cannot DROP an unexisting ROLE.
+# 2. check that it is not possible to reCREATE an existing ROLE.
+# 3. check that we cannot DROP a ROLE GRANTed TO a USER
+# 4. check that a USER can SET a GRANTed ROLE but cannot SET a non-GRANTed ROLE
+# 5. check that we can DROP a ROLE after REVOKE
+# 6. check that we cannot REVOKE a non-GRANTed ROLE
+# 7. check that afer a ROLE is REVOKEd the USER can no longer assume it.
 ###
 
 from MonetDBtesting.sqltest import SQLTestCase
 
 with SQLTestCase() as tc:
     tc.connect(username="monetdb", password="monetdb")
-    tc.execute("""
-        REVOKE bankAdmin from april;
-        CREATE ROLE bankAdmin2;
-        GRANT bankAdmin2 to april;
-        DROP ROLE bankAdmin2;
-    """).assertSucceeded()
-    tc.execute("DROP ROLE bankAdmin3; -- role doesn't exist").assertFailed()
+
+    tc.execute("DROP ROLE non_existing_role;").assertFailed(err_code="0P000", 
err_message="DROP ROLE: no such role 'non_existing_role'")
 
-    tc.connect(username="april", password="april")
-    tc.execute("SET ROLE bankAdmin; -- role revoked").assertFailed()
-    tc.execute("SET ROLE bankAdmin2; -- role no longer exists").assertFailed()
+    tc.execute("CREATE ROLE role1;").assertSucceeded()
+    tc.execute("CREATE ROLE role2;").assertSucceeded()
+    tc.execute("CREATE ROLE role3;").assertSucceeded()
+    tc.execute("CREATE ROLE role1;").assertFailed(err_code="0P000", 
err_message="Role 'role1' already exists")
 
-# import os, sys
-# try:
-#     from MonetDBtesting import process
-# except ImportError:
-#     import process
+    tc.execute("CREATE USER alice with password 'alice' name 'alice' schema 
sys;")
+    tc.execute("GRANT role1 to alice;").assertSucceeded()
+    tc.execute("GRANT role2 to alice;").assertSucceeded()
+    #tc.execute("DROP ROLE role1;").assertFailed()
 
-# def sql_test_client(user, passwd, input):
-#     with process.client(lang="sql", user=user, passwd=passwd, 
communicate=True,
-#                         stdin=process.PIPE, stdout=process.PIPE, 
stderr=process.PIPE,
-#                         input=input, port=int(os.getenv("MAPIPORT"))) as c:
-#         c.communicate()
+    tc.connect(username="alice", password="alice")
+    tc.execute("SET ROLE role1;").assertSucceeded()
+    tc.execute("SET ROLE role3;").assertFailed(err_code="42000", 
err_message="Role (role3) missing")
 
-# sql_test_client('monetdb', 'monetdb', input="""\
-# REVOKE bankAdmin from april;
-# CREATE ROLE bankAdmin2;
-# GRANT bankAdmin2 to april;
-# DROP ROLE bankAdmin2;
-# DROP ROLE bankAdmin3; -- role doesn't exist
-# """)
+    tc.connect(username="monetdb", password="monetdb")
+    tc.execute("REVOKE role1 from alice;").assertSucceeded()
+    tc.execute("REVOKE role2 from alice;").assertSucceeded()
+    tc.execute("DROP ROLE role2;").assertSucceeded()
 
-# sql_test_client('april', 'april', input="""\
-# SET ROLE bankAdmin; -- role revoked
-# SET ROLE bankAdmin2; -- role no longer exists
-# """)
+    tc.execute("REVOKE role3 from alice;").assertFailed(err_code="01006", 
err_message="REVOKE: User 'alice' does not have ROLE 'role3'")
+
+    tc.connect(username="alice", password="alice")
+    tc.execute("SET ROLE role1;").assertFailed(err_code="42000", 
err_message="Role (role1) missing")
+    tc.execute("SET ROLE role2;").assertFailed(err_code="42000", 
err_message="Role (role2) missing")
+
diff --git a/sql/test/Users/Tests/role.stable.err 
b/sql/test/Users/Tests/role.stable.err
deleted file mode 100644
--- a/sql/test/Users/Tests/role.stable.err
+++ /dev/null
@@ -1,49 +0,0 @@
-stderr of test 'role` in directory 'sql/test/Users` itself:
-
-
-# 23:01:33 >  
-# 23:01:33 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36242" "--set" 
"mapi_usock=/var/tmp/mtest-7070/.s.monetdb.36242" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/vera/Desktop/MonetDB/BUILD/var/MonetDB/mTests_sql_test_Users" 
"--set" "mal_listing=0" "--set" "embedded_r=yes"
-# 23:01:33 >  
-
-# builtin opt  gdk_dbpath = 
/home/vera/Desktop/MonetDB/BUILD/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 = 36242
-# cmdline opt  mapi_usock = /var/tmp/mtest-7070/.s.monetdb.36242
-# cmdline opt  monet_prompt = 
-# cmdline opt  mal_listing = 2
-# cmdline opt  gdk_dbpath = 
/home/vera/Desktop/MonetDB/BUILD/var/MonetDB/mTests_sql_test_Users
-# cmdline opt  mal_listing = 0
-# cmdline opt  embedded_r = yes
-# cmdline opt  gdk_debug = 536870922
-
-# 23:01:34 >  
-# 23:01:34 >  "/usr/bin/python2" "role.SQL.py" "role"
-# 23:01:34 >  
-
-MAPI  = (monetdb) /var/tmp/mtest-7070/.s.monetdb.36242
-QUERY = DROP ROLE bankAdmin3; -- role doesn't exist
-ERROR = !DROP ROLE: no such role 'bankadmin3'
-CODE  = 0P000
-MAPI  = (april) /var/tmp/mtest-30274/.s.monetdb.37685
-QUERY = SET ROLE bankAdmin; -- role revoked
-ERROR = !Role (bankadmin) missing
-CODE  = 42000
-MAPI  = (april) /var/tmp/mtest-12671/.s.monetdb.35429
-QUERY = SET ROLE bankAdmin2; -- role no longer exists
-ERROR = !Role (bankadmin2) missing
-CODE  = 42000
-
-# 23:01:34 >  
-# 23:01:34 >  "Done."
-# 23:01:34 >  
-
diff --git a/sql/test/Users/Tests/role.stable.out 
b/sql/test/Users/Tests/role.stable.out
deleted file mode 100644
--- a/sql/test/Users/Tests/role.stable.out
+++ /dev/null
@@ -1,38 +0,0 @@
-stdout of test 'role` in directory 'sql/test/Users` itself:
-
-
-# 23:01:33 >  
-# 23:01:33 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36242" "--set" 
"mapi_usock=/var/tmp/mtest-7070/.s.monetdb.36242" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/vera/Desktop/MonetDB/BUILD/var/MonetDB/mTests_sql_test_Users" 
"--set" "mal_listing=0" "--set" "embedded_r=yes"
-# 23:01: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:36242/
-# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-7070/.s.monetdb.36242
-# Start processing logs sql/sql_logs version 52200
-# Start reading the write-ahead log 'sql_logs/sql/log.11'
-# Finished reading the write-ahead log 'sql_logs/sql/log.11'
-# Finished processing logs sql/sql_logs
-# MonetDB/SQL module loaded
-# MonetDB/R   module loaded
-
-
-# 23:01:34 >  
-# 23:01:34 >  "/usr/bin/python2" "role.SQL.py" "role"
-# 23:01:34 >  
-
-#REVOKE bankAdmin from april;
-#CREATE ROLE bankAdmin2;
-#GRANT bankAdmin2 to april;
-#DROP ROLE bankAdmin2;
-
-# 23:01:34 >  
-# 23:01:34 >  "Done."
-# 23:01:34 >  
-
diff --git a/sql/test/Users/Tests/role1.SQL.py 
b/sql/test/Users/Tests/role1.SQL.py
deleted file mode 100644
--- a/sql/test/Users/Tests/role1.SQL.py
+++ /dev/null
@@ -1,42 +0,0 @@
-###
-# SET a GRANTed ROLE for a USER (possible).
-# SET a non-GRANTed ROLE for a USER (not possible).
-###
-
-import os, sys
-import pymonetdb
-
-
-db=os.getenv("TSTDB")
-port=int(os.getenv("MAPIPORT"))
-mdbconn = pymonetdb.connect(database=db, port=port, autocommit=True, 
user='monetdb', password='monetdb')
-mdb = mdbconn.cursor()
-mdb.execute("CREATE ROLE my_role")
-mdb.execute("CREATE SCHEMA my_schema AUTHORIZATION my_role")
-mdb.execute("CREATE USER my_user with password 'p1' name 'User with role' 
schema my_schema")
-mdb.execute("GRANT my_role to my_user")
-mdb.execute("CREATE USER my_user2 with password 'p2' name 'User without role' 
schema my_schema")
-
-client = pymonetdb.connect(database=db, port=port, autocommit=True, 
user='my_user', password='p1')
-cursor = client.cursor()
-# exceptions will output
-cursor.execute("SET ROLE my_role")
-cursor.close()
-client.close()
-
-client = pymonetdb.connect(database=db, port=port, autocommit=True, 
user='my_user2', password='p2')
-cursor = client.cursor()
-# exception "!Role (my_role) missing" is expected
-try:
-    cursor.execute("SET ROLE my_role")
-except:
-    pass
-cursor.close()
-client.close()
-
-mdb.execute("DROP USER my_user")
-mdb.execute("DROP USER my_user2")
-mdb.execute("DROP ROLE my_role")
-mdb.execute("DROP SCHEMA my_schema")
-mdb.close()
-mdbconn.close()
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to