\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_street_point (username text, orgname text, appname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL) RETURNS Geometry AS $$ BEGIN RAISE NOTICE 'cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (%, %, %, %, %, %, %)', username, orgname, appname, searchtext, city, state_province, country; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; -- -- Exercise the public and the proxied function -- No permissions granted SELECT cdb_geocode_street_point('One street, 1'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street, 1'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); ERROR: Geocoding is not allowed -- Grant other permissions but geocoding SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); cdb_conf_setconf ------------------ (1 row) SELECT cdb_geocode_street_point('One street, 1'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street, 1'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); ERROR: Geocoding is not allowed SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); ERROR: Geocoding is not allowed -- Grant geocoding permissions SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); cdb_conf_setconf ------------------ (1 row) SELECT cdb_geocode_street_point('One street, 1'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, 1, , , ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, , ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', 'state'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, state, ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, state, country) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, , country) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street, 1'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, 1, , , ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, , ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', 'state'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, state, ) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, state, country) cdb_geocode_street_point -------------------------- (1 row) SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); NOTICE: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_geocoder_street_point invoked with params (test_user, , "testing_app", One street, city, , country) cdb_geocode_street_point -------------------------- (1 row) -- Remove permissions SELECT CDB_Conf_RemoveConf('api_keys_postgres'); cdb_conf_removeconf --------------------- (1 row)