Skip to content

Commit 5ceb893

Browse files
vitaly-burovoyelprans
authored andcommitted
Add codec tests for "aclitem[]" type
Postgres does not support sending "aclitem" type in the binary mode. Add tests (currently failing) for the decoding of "aclitem[]" array type.
1 parent d45946b commit 5ceb893

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

tests/test_codecs.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -916,3 +916,93 @@ async def test_table_as_composite(self):
916916
await self.con.execute('''
917917
DROP TABLE tab;
918918
''')
919+
920+
@unittest.expectedFailure
921+
async def test_relacl_array_type(self):
922+
await self.con.execute(r'''
923+
CREATE USER """u1'";
924+
CREATE USER "{u2";
925+
CREATE USER ",u3";
926+
CREATE USER "u4}";
927+
CREATE USER "u5""";
928+
CREATE USER "u6\""";
929+
CREATE USER "u7\";
930+
CREATE USER norm1;
931+
CREATE USER norm2;
932+
CREATE TABLE t0 (); GRANT SELECT ON t0 TO norm1;
933+
CREATE TABLE t1 (); GRANT SELECT ON t1 TO """u1'";
934+
CREATE TABLE t2 (); GRANT SELECT ON t2 TO "{u2";
935+
CREATE TABLE t3 (); GRANT SELECT ON t3 TO ",u3";
936+
CREATE TABLE t4 (); GRANT SELECT ON t4 TO "u4}";
937+
CREATE TABLE t5 (); GRANT SELECT ON t5 TO "u5""";
938+
CREATE TABLE t6 (); GRANT SELECT ON t6 TO "u6\""";
939+
CREATE TABLE t7 (); GRANT SELECT ON t7 TO "u7\";
940+
941+
CREATE TABLE a1 ();
942+
GRANT SELECT ON a1 TO """u1'";
943+
GRANT SELECT ON a1 TO "{u2";
944+
GRANT SELECT ON a1 TO ",u3";
945+
GRANT SELECT ON a1 TO "norm1";
946+
GRANT SELECT ON a1 TO "u4}";
947+
GRANT SELECT ON a1 TO "u5""";
948+
GRANT SELECT ON a1 TO "u6\""";
949+
GRANT SELECT ON a1 TO "u7\";
950+
GRANT SELECT ON a1 TO "norm2";
951+
952+
CREATE TABLE a2 ();
953+
GRANT SELECT ON a2 TO """u1'" WITH GRANT OPTION;
954+
GRANT SELECT ON a2 TO "{u2" WITH GRANT OPTION;
955+
GRANT SELECT ON a2 TO ",u3" WITH GRANT OPTION;
956+
GRANT SELECT ON a2 TO "norm1" WITH GRANT OPTION;
957+
GRANT SELECT ON a2 TO "u4}" WITH GRANT OPTION;
958+
GRANT SELECT ON a2 TO "u5""" WITH GRANT OPTION;
959+
GRANT SELECT ON a2 TO "u6\""" WITH GRANT OPTION;
960+
GRANT SELECT ON a2 TO "u7\" WITH GRANT OPTION;
961+
962+
SET SESSION AUTHORIZATION """u1'"; GRANT SELECT ON a2 TO "norm2";
963+
SET SESSION AUTHORIZATION "{u2"; GRANT SELECT ON a2 TO "norm2";
964+
SET SESSION AUTHORIZATION ",u3"; GRANT SELECT ON a2 TO "norm2";
965+
SET SESSION AUTHORIZATION "u4}"; GRANT SELECT ON a2 TO "norm2";
966+
SET SESSION AUTHORIZATION "u5"""; GRANT SELECT ON a2 TO "norm2";
967+
SET SESSION AUTHORIZATION "u6\"""; GRANT SELECT ON a2 TO "norm2";
968+
SET SESSION AUTHORIZATION "u7\"; GRANT SELECT ON a2 TO "norm2";
969+
RESET SESSION AUTHORIZATION;
970+
''')
971+
972+
try:
973+
rows = await self.con.fetch('''
974+
SELECT
975+
relacl,
976+
relacl::text[] AS chk,
977+
relacl::text[]::text AS text_
978+
FROM
979+
pg_catalog.pg_class
980+
WHERE
981+
relacl IS NOT NULL
982+
''')
983+
984+
for row in rows:
985+
self.assertEqual(row['relacl'], row['chk'],)
986+
987+
finally:
988+
await self.con.execute(r'''
989+
DROP TABLE t0;
990+
DROP TABLE t1;
991+
DROP TABLE t2;
992+
DROP TABLE t3;
993+
DROP TABLE t4;
994+
DROP TABLE t5;
995+
DROP TABLE t6;
996+
DROP TABLE t7;
997+
DROP TABLE a1;
998+
DROP TABLE a2;
999+
DROP USER """u1'";
1000+
DROP USER "{u2";
1001+
DROP USER ",u3";
1002+
DROP USER "u4}";
1003+
DROP USER "u5""";
1004+
DROP USER "u6\""";
1005+
DROP USER "u7\";
1006+
DROP USER norm1;
1007+
DROP USER norm2;
1008+
''')

0 commit comments

Comments
 (0)