Changeset: e719326d3608 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e719326d3608
Modified Files:
        sql/test/Views/Tests/Indirect.py
Branch: indirect-privs
Log Message:

Updated test


diffs (47 lines):

diff --git a/sql/test/Views/Tests/Indirect.py b/sql/test/Views/Tests/Indirect.py
--- a/sql/test/Views/Tests/Indirect.py
+++ b/sql/test/Views/Tests/Indirect.py
@@ -16,7 +16,7 @@ create table foo.tab2 (col1 int, col2 in
 insert into foo.tab1 values (1, 1);
 insert into foo.tab2 values (2, 2);
 create view foo.v1(col1,col2) as (select col1, col2 from foo.tab1);
-create view foo.v2(col1,col2) as (select col1, col2 from foo.tab2);
+create view foo.v2(col1,col2) as (select v1.col1 + v1.col2, v1.col2 + 10 from 
foo.v1, foo.tab2);
 commit;
 """)
 cur1.close()
@@ -49,6 +49,7 @@ conn1 = pymonetdb.connect(port=port,data
 cur1 = conn1.cursor()
 cur1.execute("""
 grant select ("col1") ON "foo"."v1" TO u1;
+grant select ("col1") ON "foo"."v2" TO u2;
 """)
 cur1.close()
 conn1.close()
@@ -73,6 +74,26 @@ except pymonetdb.DatabaseError as e:
 cur1.close()
 conn1.close()
 
+conn1 = 
pymonetdb.connect(port=port,database=db,autocommit=True,username='u2',password='2')
+cur1 = conn1.cursor()
+cur1.execute('SELECT "col1" FROM "foo"."v2";')
+if cur1.fetchall() != [(2, )]:
+    sys.stderr.write("[(2, )] expected")
+try:
+    cur1.execute('SELECT "col2" FROM "foo"."v2";') # error, not allowed
+    sys.stderr.write("Exception expected")
+except pymonetdb.DatabaseError as e:
+    if "SELECT: identifier 'col2' unknown" not in str(e):
+        sys.stderr.write('Wrong error %s, expected "SELECT: identifier 
\'col2\' unknown' % (str(e)))
+try:
+    cur1.execute('SELECT "col1" FROM "foo"."v1";') # error, not allowed
+    sys.stderr.write("Exception expected")
+except pymonetdb.DatabaseError as e:
+    if "SELECT: access denied for u2 to view 'foo.v1'" not in str(e):
+        sys.stderr.write('Wrong error %s, expected SELECT: access denied for 
u2 to view \'foo.v1\'' % (str(e)))
+cur1.close()
+conn1.close()
+
 conn1 = 
pymonetdb.connect(port=port,database=db,autocommit=True,username='monetdb',password='monetdb')
 cur1 = conn1.cursor()
 cur1.execute("""
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to