Changeset: c9475f5c9773 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c9475f5c9773 Added Files: sql/test/mapi/Tests/clientinfo-nonadmin.test Removed Files: sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py Branch: Aug2024 Log Message:
Convert sql/test/clientinfo-nonadmin into a sqllogictest (I wasn't aware of @connection before) diffs (133 lines): diff --git a/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py b/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py deleted file mode 100644 --- a/sql/test/mapi/Tests/clientinfo-nonadmin.SQL.py +++ /dev/null @@ -1,61 +0,0 @@ - -import os -import sys -from typing import List, Tuple -import pymonetdb - - -def connect(remark: str, **args) -> pymonetdb.Connection: - dbname = os.environ['TSTDB'] - mapiport = os.environ['MAPIPORT'] - conn = pymonetdb.connect(dbname, port=mapiport, autocommit=True, **args) - with conn.cursor() as c: - c.execute("CALL sys.setclientinfo('ClientRemark', %s)", [remark]) - return conn - -def get_remarks(conn: pymonetdb.Connection) -> List[Tuple[int,str]]: - with conn.cursor() as c: - c.execute("SELECT sessionid, remark FROM sys.sessions ORDER BY sessionid") - return c.fetchall() - -def assert_equal(left, right): - if left != right: - print(f'LEFT: {left!r}\nRIGHT: {right!r}\n', file=sys.stderr) - assert left == right - - -####################################################################### -# Connect as admin - -conn0 = connect('admin 0') -assert_equal(get_remarks(conn0), [(0, 'admin 0')]) - - -####################################################################### -# Create a user - -c0 = conn0.cursor() -# try: -# c0.execute('DROP USER nonadmin') # convenientduring interactive testing -# except pymonetdb.Error: -# pass -c0.execute("CREATE USER nonadmin WITH PASSWORD 'na' NAME 'Not Admin' SCHEMA sys") - - -####################################################################### -# Connect as that user, twice - -conn1 = connect('user 1', user='nonadmin', password='na') -conn2 = connect('user 2', user='nonadmin', password='na') - - -####################################################################### -# Check who can see what - -# admin can see both -assert_equal(get_remarks(conn0), [(0, 'admin 0'), (1, 'user 1'), (2, 'user 2')]) - -# users can only see themselves -assert_equal(get_remarks(conn1), [(1, 'user 1'), (2, 'user 2')]) -assert_equal(get_remarks(conn2), [(1, 'user 1'), (2, 'user 2')]) - diff --git a/sql/test/mapi/Tests/clientinfo-nonadmin.test b/sql/test/mapi/Tests/clientinfo-nonadmin.test new file mode 100644 --- /dev/null +++ b/sql/test/mapi/Tests/clientinfo-nonadmin.test @@ -0,0 +1,62 @@ + +# admin logs in with ClientRemark and creates users + +statement ok +CALL sys.setclientinfo('ClientRemark', 'admin') + +statement ok +CREATE USER user1 WITH PASSWORD 'bla' NAME 'User 1' SCHEMA sys; + +statement ok +CREATE USER user2 WITH PASSWORD 'bla' NAME 'User 2' SCHEMA sys; + + +# user1 logs in with ClientRemark + +@connection(id=user1, username=user1, password=bla) +statement ok +CALL sys.setclientinfo('ClientRemark', 'user 1') + + +# user2 logs in twice, with different ClientRemarks + +@connection(id=user2a, username=user2, password=bla) +statement ok +CALL sys.setclientinfo('ClientRemark', 'user 2a') + +@connection(id=user2b, username=user2, password=bla) +statement ok +CALL sys.setclientinfo('ClientRemark', 'user 2b') + + +# Now verify what everybody sees + +query IT rowsort +SELECT sessionid, remark FROM sys.sessions +---- +0 +admin +1 +user 1 +2 +user 2a +3 +user 2b + +@connection(id=user1) +query IT rowsort +SELECT sessionid, remark FROM sys.sessions +---- +1 +user 1 + +@connection(id=user2a) +query IT rowsort +SELECT sessionid, remark FROM sys.sessions +---- +2 +user 2a +3 +user 2b + + _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org