\set VERBOSITY terse -- Add to the search path the schema SET search_path TO public,cartodb,cdb_dataservices_client; -- Mock the server functions CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_ipaddress_point(username text, orgname text, ip_address text) RETURNS Geometry AS $$ BEGIN RAISE NOTICE 'cdb_dataservices_server.cdb_geocode_ipaddress_point invoked with params (%, %, %)', username, orgname, ip_address; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- -- Exercise the public and the proxied function -- No permissions granted SELECT cdb_geocode_ipaddress_point('8.8.8.8'); ERROR: Geocoding permission denied -- Grant other permissions but geocoding SELECT CDB_Conf_SetConf('api_keys_postgres', '{"username": "test_user", "permissions": ["routing", "isolines"]}'); cdb_conf_setconf ------------------ (1 row) SELECT cdb_geocode_ipaddress_point('8.8.8.8'); ERROR: Geocoding permission denied -- Grant geocoding permissions SELECT CDB_Conf_SetConf('api_keys_postgres', '{"username": "test_user", "permissions": ["geocoding"]}'); cdb_conf_setconf ------------------ (1 row) SELECT cdb_geocode_ipaddress_point('8.8.8.8'); NOTICE: cdb_dataservices_client._cdb_geocode_ipaddress_point(3): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_ipaddress_point invoked with params (test_user, , 8.8.8.8) cdb_geocode_ipaddress_point ----------------------------- (1 row) -- Remove permissions SELECT CDB_Conf_RemoveConf('api_keys_postgres'); cdb_conf_removeconf --------------------- (1 row)