diff --git a/scripts-available/CDB_OAuth.sql b/scripts-available/CDB_OAuth.sql index 971bcf0..16f75f2 100644 --- a/scripts-available/CDB_OAuth.sql +++ b/scripts-available/CDB_OAuth.sql @@ -1,5 +1,5 @@ -- Function that reassign the owner of a table to their ownership_role -CREATE OR REPLACE FUNCTION @extschema.CDB_OAuthReassignTableOwnerOnCreation() +CREATE OR REPLACE FUNCTION @extschema@.CDB_OAuthReassignTableOwnerOnCreation() RETURNS event_trigger SECURITY DEFINER AS $$ diff --git a/test/CDB_OAuth.sql b/test/CDB_OAuth.sql new file mode 100644 index 0000000..e97a283 --- /dev/null +++ b/test/CDB_OAuth.sql @@ -0,0 +1,48 @@ +-- Create user and enable OAuth event trigger +\set QUIET on +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"}'); +SET SESSION AUTHORIZATION "creator_role"; +SET client_min_messages TO notice; +\set QUIET off + +CREATE TABLE test(id INT); +INSERT INTO test VALUES(1); +SELECT * FROM test; + +\set QUIET on +SET SESSION AUTHORIZATION "ownership_role"; +\set QUIET off + +SELECT * FROM test2; + +\set QUIET on +SET SESSION AUTHORIZATION postgres; +SELECT CDB_EnableOAuthReassignTablesTrigger(); +SET SESSION AUTHORIZATION "creator_role"; +\set QUIET off + +CREATE TABLE test2(id INT); +INSERT INTO test2 VALUES(1); +SELECT * FROM test2; + +\set QUIET on +SET SESSION AUTHORIZATION "ownership_role"; +\set QUIET off + +SELECT * FROM test2; + +-- 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"; +DELETE FROM cdb_conf WHERE key = 'api_keys_creator_role'; +\set QUIET off diff --git a/test/CDB_OAuth_expect b/test/CDB_OAuth_expect new file mode 100644 index 0000000..ab0ef0d --- /dev/null +++ b/test/CDB_OAuth_expect @@ -0,0 +1,15 @@ +\set ECHO none + +CREATE TABLE +INSERT 0 1 +1 +ERROR: relation "test2" does not exist +LINE 1: SELECT * FROM test2; + ^ +NOTICE: event trigger "oauth_reassign_tables_trigger" does not exist, skipping + +CREATE TABLE +INSERT 0 1 +1 +1 +