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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list