diff --git a/test/CDB_OAuth.sql b/test/CDB_OAuth.sql index e97a283..4a2b447 100644 --- a/test/CDB_OAuth.sql +++ b/test/CDB_OAuth.sql @@ -4,20 +4,47 @@ SET client_min_messages TO error; CREATE ROLE "creator_role" LOGIN; CREATE ROLE "ownership_role" LOGIN; GRANT ALL ON SCHEMA cartodb TO "creator_role"; -SELECT CDB_Conf_SetConf('api_keys_creator_role', '{"username": "creator_role", "permissions":[], "ownership_role_name": "ownership_role"}'); +SELECT CDB_Conf_SetConf('api_keys_creator_role', '{"username": "creator_role", "permissions":[]}'); SET SESSION AUTHORIZATION "creator_role"; SET client_min_messages TO notice; \set QUIET off +-- First part without event trigger + CREATE TABLE test(id INT); INSERT INTO test VALUES(1); +CREATE TABLE test_tablesas AS SELECT * FROM test; +CREATE VIEW test_view AS SELECT * FROM test; +CREATE MATERIALIZED VIEW test_mview AS SELECT * FROM test; +SELECT * INTO test_selectinto FROM test; + SELECT * FROM test; +SELECT * FROM test_tablesas; +SELECT * FROM test_view; +SELECT * FROM test_mview; +SELECT * FROM test_selectinto; \set QUIET on SET SESSION AUTHORIZATION "ownership_role"; \set QUIET off -SELECT * FROM test2; +SELECT * FROM test; +SELECT * FROM test_tablesas; +SELECT * FROM test_view; +SELECT * FROM test_mview; +SELECT * FROM test_selectinto; + +\set QUIET on +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +DROP TABLE test_tablesas; +DROP VIEW test_view; +DROP MATERIALIZED VIEW test_mview; +DROP TABLE test_selectinto; +DROP TABLE test; + +-- Second part with event trigger but without ownership_role_name in cdb_conf \set QUIET on SET SESSION AUTHORIZATION postgres; @@ -27,20 +54,120 @@ SET SESSION AUTHORIZATION "creator_role"; CREATE TABLE test2(id INT); INSERT INTO test2 VALUES(1); +CREATE TABLE test2_tablesas AS SELECT * FROM test2; +CREATE VIEW test2_view AS SELECT * FROM test2; +CREATE MATERIALIZED VIEW test2_mview AS SELECT * FROM test2; +SELECT * INTO test2_selectinto FROM test2; + SELECT * FROM test2; +SELECT * FROM test2_tablesas; +SELECT * FROM test2_view; +SELECT * FROM test2_mview; +SELECT * FROM test2_selectinto; \set QUIET on SET SESSION AUTHORIZATION "ownership_role"; \set QUIET off SELECT * FROM test2; +SELECT * FROM test2_tablesas; +SELECT * FROM test2_view; +SELECT * FROM test2_mview; +SELECT * FROM test2_selectinto; + +\set QUIET on +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +DROP TABLE test2_tablesas; +DROP VIEW test2_view; +DROP MATERIALIZED VIEW test2_mview; +DROP TABLE test2_selectinto; +DROP TABLE test2; + +-- Third part with event trigger but with empty ownership_role_name in cdb_conf + +\set QUIET on +SET SESSION AUTHORIZATION postgres; +SELECT CDB_Conf_SetConf('api_keys_creator_role', '{"username": "creator_role", "permissions":[], "ownership_role_name": ""}'); +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +CREATE TABLE test3(id INT); +INSERT INTO test3 VALUES(1); +CREATE TABLE test3_tablesas AS SELECT * FROM test3; +CREATE VIEW test3_view AS SELECT * FROM test3; +CREATE MATERIALIZED VIEW test3_mview AS SELECT * FROM test3; +SELECT * INTO test3_selectinto FROM test3; + +SELECT * FROM test3; +SELECT * FROM test3_tablesas; +SELECT * FROM test3_view; +SELECT * FROM test3_mview; +SELECT * FROM test3_selectinto; + +\set QUIET on +SET SESSION AUTHORIZATION "ownership_role"; +\set QUIET off + +SELECT * FROM test3; +SELECT * FROM test3_tablesas; +SELECT * FROM test3_view; +SELECT * FROM test3_mview; +SELECT * FROM test3_selectinto; + +\set QUIET on +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +DROP TABLE test3_tablesas; +DROP VIEW test3_view; +DROP MATERIALIZED VIEW test3_mview; +DROP TABLE test3_selectinto; +DROP TABLE test3; + +-- Fourth part with the event trigger active and configured + +\set QUIET on +SET SESSION AUTHORIZATION postgres; +SELECT CDB_Conf_SetConf('api_keys_creator_role', '{"username": "creator_role", "permissions":[], "ownership_role_name": "ownership_role"}'); +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +CREATE TABLE test4(id INT); +INSERT INTO test4 VALUES(1); +CREATE TABLE test4_tablesas AS SELECT * FROM test4; +CREATE VIEW test4_view AS SELECT * FROM test4; +CREATE MATERIALIZED VIEW test4_mview AS SELECT * FROM test4; +SELECT * INTO test4_selectinto FROM test4; + +SELECT * FROM test4; +SELECT * FROM test4_tablesas; +SELECT * FROM test4_view; +SELECT * FROM test4_mview; +SELECT * FROM test4_selectinto; + +\set QUIET on +SET SESSION AUTHORIZATION "ownership_role"; +\set QUIET off + +SELECT * FROM test4; +SELECT * FROM test4_tablesas; +SELECT * FROM test4_view; +SELECT * FROM test4_mview; +SELECT * FROM test4_selectinto; + +-- Ownership role drops the tables +DROP TABLE test4_tablesas; +DROP VIEW test4_view; +DROP MATERIALIZED VIEW test4_mview; +DROP TABLE test4_selectinto; +DROP TABLE test4; -- Cleanup \set QUIET on SET SESSION AUTHORIZATION postgres; SELECT CDB_DisableOAuthReassignTablesTrigger(); -DROP TABLE test; -DROP TABLE test2; DROP ROLE "ownership_role"; REVOKE ALL ON SCHEMA cartodb FROM "creator_role"; DROP ROLE "creator_role"; diff --git a/test/CDB_OAuth_expect b/test/CDB_OAuth_expect index ab0ef0d..f536c43 100644 --- a/test/CDB_OAuth_expect +++ b/test/CDB_OAuth_expect @@ -1,15 +1,90 @@ -\set ECHO none CREATE TABLE INSERT 0 1 +SELECT 1 +CREATE VIEW +SELECT 1 +SELECT 1 1 -ERROR: relation "test2" does not exist -LINE 1: SELECT * FROM test2; - ^ +1 +1 +1 +1 +ERROR: permission denied for relation test +ERROR: permission denied for relation test_tablesas +ERROR: permission denied for relation test_view +ERROR: permission denied for relation test_mview +ERROR: permission denied for relation test_selectinto +DROP TABLE +DROP VIEW +DROP MATERIALIZED VIEW +DROP TABLE +DROP TABLE NOTICE: event trigger "oauth_reassign_tables_trigger" does not exist, skipping CREATE TABLE INSERT 0 1 +SELECT 1 +CREATE VIEW +SELECT 1 +SELECT 1 1 1 +1 +1 +1 +ERROR: permission denied for relation test2 +ERROR: permission denied for relation test2_tablesas +ERROR: permission denied for relation test2_view +ERROR: permission denied for relation test2_mview +ERROR: permission denied for relation test2_selectinto +DROP TABLE +DROP VIEW +DROP MATERIALIZED VIEW +DROP TABLE +DROP TABLE + +CREATE TABLE +INSERT 0 1 +SELECT 1 +CREATE VIEW +SELECT 1 +SELECT 1 +1 +1 +1 +1 +1 +ERROR: permission denied for relation test3 +ERROR: permission denied for relation test3_tablesas +ERROR: permission denied for relation test3_view +ERROR: permission denied for relation test3_mview +ERROR: permission denied for relation test3_selectinto +DROP TABLE +DROP VIEW +DROP MATERIALIZED VIEW +DROP TABLE +DROP TABLE + +CREATE TABLE +INSERT 0 1 +SELECT 1 +CREATE VIEW +SELECT 1 +SELECT 1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +DROP TABLE +DROP VIEW +DROP MATERIALIZED VIEW +DROP TABLE +DROP TABLE