diff --git a/client/test/expected/10_admin0_test.out b/client/test/expected/10_admin0_test.out index 039f67c..0da1802 100644 --- a/client/test/expected/10_admin0_test.out +++ b/client/test/expected/10_admin0_test.out @@ -9,11 +9,37 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin0_polygon invoked with params (test_user, , , Spain) +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_admin0_polygon('Spain'); +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_admin0_polygon('Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin0_polygon invoked with params (test_user, , "testing_app", Spain) cdb_geocode_admin0_polygon ---------------------------- (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/20_admin1_test.out b/client/test/expected/20_admin1_test.out index a34b87c..63ee13d 100644 --- a/client/test/expected/20_admin1_test.out +++ b/client/test/expected/20_admin1_test.out @@ -16,18 +16,48 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , , California) +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +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_admin1_polygon('California'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +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_admin1_polygon('California'); +NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , "testing_app", California) cdb_geocode_admin1_polygon ---------------------------- (1 row) SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , , California, United States) +NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , "testing_app", California, United States) cdb_geocode_admin1_polygon ---------------------------- (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/21_bulk_geocoding_functions_test.out b/client/test/expected/21_bulk_geocoding_functions_test.out index c846a1d..aa1b68b 100644 --- a/client/test/expected/21_bulk_geocoding_functions_test.out +++ b/client/test/expected/21_bulk_geocoding_functions_test.out @@ -9,12 +9,46 @@ CREATE FUNCTION cdb_dataservices_client.cdb_enough_quota (service TEXT ,input_si RETURNS BOOLEAN as $$ SELECT FALSE; $$ LANGUAGE SQL; +-- No permissions granted +-- Test bulk size not mandatory (it will get the optimal) +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); +ERROR: Geocoding is not allowed +-- Test quota check by mocking quota 0 +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); +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) + +-- Test bulk size not mandatory (it will get the optimal) +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); +ERROR: Geocoding is not allowed +-- Test quota check by mocking quota 0 +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); +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) + -- Test bulk size not mandatory (it will get the optimal) SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); ERROR: Remaining quota: 0. Estimated cost: 1 -- Test quota check by mocking quota 0 SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); ERROR: Remaining quota: 0. Estimated cost: 1 +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + DROP FUNCTION cdb_dataservices_client.cdb_service_quota_info_batch; DROP FUNCTION cdb_dataservices_client.cdb_enough_quota; ALTER FUNCTION cdb_dataservices_client.cdb_enough_quota_mocked (service TEXT ,input_size NUMERIC) RENAME TO cdb_enough_quota; diff --git a/client/test/expected/25_exception_safe_private_functions_test.out b/client/test/expected/25_exception_safe_private_functions_test.out index 94e9afe..778b1d0 100644 --- a/client/test/expected/25_exception_safe_private_functions_test.out +++ b/client/test/expected/25_exception_safe_private_functions_test.out @@ -27,9 +27,39 @@ BEGIN RETURN ret; END; $$ LANGUAGE 'plpgsql'; --- Use regular user role -SET ROLE test_regular_user; -- Exercise the exception safe and the proxied functions +-- No permissions granted +SET ROLE test_regular_user; -- Use regular user role +SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); +ERROR: Geocoding is not allowed +SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]); +ERROR: Isolines are not allowed +SELECT * FROM _cdb_route_point_to_point_exception_safe('POINT(-3.70237112 40.41706163)'::geometry,'POINT(-3.69909883 40.41236875)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +-- No permissions granted but conf created +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": []}'); + cdb_conf_setconf +------------------ + +(1 row) + +SET ROLE test_regular_user; -- Use regular user role +SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); +ERROR: Geocoding is not allowed +SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]); +ERROR: Isolines are not allowed +SELECT * FROM _cdb_route_point_to_point_exception_safe('POINT(-3.70237112 40.41706163)'::geometry,'POINT(-3.69909883 40.41236875)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +-- Grant geocoding permissions +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "routing", "isolines"]}'); + cdb_conf_setconf +------------------ + +(1 row) + +SET ROLE test_regular_user; -- Use regular user role SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); WARNING: cdb_dataservices_client._cdb_geocode_street_point(7): [contrib_regression] REMOTE ERROR: Not enough quota or any other exception whatsoever. _cdb_geocode_street_point_exception_safe @@ -50,3 +80,11 @@ WARNING: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regress | | (1 row) +-- Remove permissions +SET ROLE postgres; +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/30_namedplaces_test.out b/client/test/expected/30_namedplaces_test.out index d92e452..d8515b3 100644 --- a/client/test/expected/30_namedplaces_test.out +++ b/client/test/expected/30_namedplaces_test.out @@ -23,25 +23,59 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx) +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +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_namedplace_point('Elx'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +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_namedplace_point('Elx'); +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx) cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx, Spain) +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx, Spain) cdb_geocode_namedplace_point ------------------------------ (1 row) SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx, Valencia, Spain) +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx, Valencia, Spain) cdb_geocode_namedplace_point ------------------------------ (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/40_postalcodes_test.out b/client/test/expected/40_postalcodes_test.out index 9efe91b..6ed22f7 100644 --- a/client/test/expected/40_postalcodes_test.out +++ b/client/test/expected/40_postalcodes_test.out @@ -16,18 +16,48 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_polygon invoked with params (test_user, , , 03204, Spain) +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +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_postalcode_polygon('03204', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +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_postalcode_polygon('03204', 'Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_polygon invoked with params (test_user, , "testing_app", 03204, Spain) cdb_geocode_postalcode_polygon -------------------------------- (1 row) SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_point invoked with params (test_user, , , 03204, Spain) +NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_point invoked with params (test_user, , "testing_app", 03204, Spain) cdb_geocode_postalcode_point ------------------------------ (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/50_ipaddresses_test.out b/client/test/expected/50_ipaddresses_test.out index 69bcd94..54bdbb1 100644 --- a/client/test/expected/50_ipaddresses_test.out +++ b/client/test/expected/50_ipaddresses_test.out @@ -9,11 +9,37 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_dataservices_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_ipaddress_point invoked with params (test_user, , , 8.8.8.8) +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_ipaddress_point('8.8.8.8'); +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_ipaddress_point('8.8.8.8'); +NOTICE: cdb_dataservices_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_ipaddress_point invoked with params (test_user, , "testing_app", 8.8.8.8) cdb_geocode_ipaddress_point ----------------------------- (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/60_street_test.out b/client/test/expected/60_street_test.out index 42d45eb..adf14d4 100644 --- a/client/test/expected/60_street_test.out +++ b/client/test/expected/60_street_test.out @@ -9,74 +9,136 @@ BEGIN RETURN NULL; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function +-- No permissions granted 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, , , 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, , , 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, , , 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, , , 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, , , One street, city, , 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, , , 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, , , 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, , , 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, , , 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, , , One street, city, , 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) + diff --git a/client/test/expected/80_route_point_to_point_test.out b/client/test/expected/80_route_point_to_point_test.out index 46c59c1..ef2a2a6 100644 --- a/client/test/expected/80_route_point_to_point_test.out +++ b/client/test/expected/80_route_point_to_point_test.out @@ -22,46 +22,92 @@ BEGIN RETURN ret; END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied functions +-- -- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); -NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , , 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, kilometers) +ERROR: Routing is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); +ERROR: Routing is not allowed +-- Grant other permissions but routing +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "isolines"]}'); + cdb_conf_setconf +------------------ + +(1 row) + +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +ERROR: Routing is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); +ERROR: Routing is not allowed +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); +ERROR: Routing is not allowed +-- Grant routing permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing"]}'); + cdb_conf_setconf +------------------ + +(1 row) + +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , "testing_app", 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, kilometers) cdb_route_point_to_point -------------------------- (,5.33,100) (1 row) SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); -NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , , 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {mode_type=shortest}, kilometers) +NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , "testing_app", 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {mode_type=shortest}, kilometers) cdb_route_point_to_point -------------------------- (,5.33,100) (1 row) SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); -NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , , 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, miles) +NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , "testing_app", 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, miles) cdb_route_point_to_point -------------------------- (,5.33,100) (1 row) SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); -NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , , {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {}, kilometers) +NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , "testing_app", {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {}, kilometers) cdb_route_with_waypoints -------------------------- (,2.22,500) (1 row) SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); -NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , , {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {mode_type=shortest}, kilometers) +NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , "testing_app", {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {mode_type=shortest}, kilometers) cdb_route_with_waypoints -------------------------- (,2.22,500) (1 row) SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); -NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , , {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {}, miles) +NOTICE: cdb_dataservices_client._cdb_route_with_waypoints(7): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_with_waypoints invoked with params (test_user, , "testing_app", {0101000000D53E1D8F19F455C0185B087250F24440:0101000000650113B875F355C05665DF15C1EF4440:0101000000465F419AB1F255C0D8B628B341EE4440}, car, {}, miles) cdb_route_with_waypoints -------------------------- (,2.22,500) (1 row) +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/expected/999_permissions_test.out b/client/test/expected/999_permissions_test.out index e74ec7f..2740658 100644 --- a/client/test/expected/999_permissions_test.out +++ b/client/test/expected/999_permissions_test.out @@ -3,85 +3,6 @@ SET ROLE test_regular_user; -- Add to the search path the schema SET search_path TO public,cartodb,cdb_dataservices_client; --- Exercise the public function --- it is public, it shall work -SELECT cdb_geocode_admin0_polygon('Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin0_polygon invoked with params (test_user, , , Spain) - cdb_geocode_admin0_polygon ----------------------------- - -(1 row) - -SELECT cdb_geocode_admin1_polygon('California'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , , California) - cdb_geocode_admin1_polygon ----------------------------- - -(1 row) - -SELECT cdb_geocode_admin1_polygon('California', 'United States'); -NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , , California, United States) - cdb_geocode_admin1_polygon ----------------------------- - -(1 row) - -SELECT cdb_geocode_namedplace_point('Elx'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx) - cdb_geocode_namedplace_point ------------------------------- - -(1 row) - -SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx, Valencia) - cdb_geocode_namedplace_point ------------------------------- - -(1 row) - -SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , , Elx, Valencia, Spain) - cdb_geocode_namedplace_point ------------------------------- - -(1 row) - -SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_polygon invoked with params (test_user, , , 03204, Spain) - cdb_geocode_postalcode_polygon --------------------------------- - -(1 row) - -SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_point invoked with params (test_user, , , 03204, Spain) - cdb_geocode_postalcode_point ------------------------------- - -(1 row) - -SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -NOTICE: cdb_dataservices_client._cdb_geocode_ipaddress_point(4): [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) - -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, , , one street, 1, , , ) - cdb_geocode_street_point --------------------------- - -(1 row) - -SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); -NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , , 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, kilometers) - cdb_route_point_to_point --------------------------- - (,5.33,100) -(1 row) - -- Check the regular user has no permissions on private functions SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'evil_appname', 'Hell'); ERROR: permission denied for function _cdb_geocode_admin0_polygon @@ -105,3 +26,153 @@ SELECT _cdb_geocode_street_point('evil_user', 'evil_orgname', 'evil_appname', 'o ERROR: permission denied for function _cdb_geocode_street_point SELECT _cdb_route_point_to_point('evil_user', 'evil_orgname', 'evil_appname', 'POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); ERROR: permission denied for function _cdb_route_point_to_point +-- -- Exercise the public function +-- -- it is public, it shall work +-- No permissions granted +SELECT cdb_geocode_admin0_polygon('Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_street_point('one street, 1'); +ERROR: Geocoding is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +ERROR: Routing is not allowed +-- Grant other permissions but geocoding and routing +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["isolines"]}'); + cdb_conf_setconf +------------------ + +(1 row) + +SET ROLE test_regular_user; -- Use regular user role +SELECT cdb_geocode_admin0_polygon('Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +ERROR: Geocoding is not allowed +SELECT cdb_geocode_street_point('one street, 1'); +ERROR: Geocoding is not allowed +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +ERROR: Routing is not allowed +-- Grant geocoding permissions +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "routing"]}'); + cdb_conf_setconf +------------------ + +(1 row) + +SET ROLE test_regular_user; -- Use regular user role +SELECT cdb_geocode_admin0_polygon('Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin0_polygon invoked with params (test_user, , "testing_app", Spain) + cdb_geocode_admin0_polygon +---------------------------- + +(1 row) + +SELECT cdb_geocode_admin1_polygon('California'); +NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , "testing_app", California) + cdb_geocode_admin1_polygon +---------------------------- + +(1 row) + +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +NOTICE: cdb_dataservices_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_admin1_polygon invoked with params (test_user, , "testing_app", California, United States) + cdb_geocode_admin1_polygon +---------------------------- + +(1 row) + +SELECT cdb_geocode_namedplace_point('Elx'); +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx) + cdb_geocode_namedplace_point +------------------------------ + +(1 row) + +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx, Valencia) + cdb_geocode_namedplace_point +------------------------------ + +(1 row) + +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_namedplace_point invoked with params (test_user, , "testing_app", Elx, Valencia, Spain) + cdb_geocode_namedplace_point +------------------------------ + +(1 row) + +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_polygon invoked with params (test_user, , "testing_app", 03204, Spain) + cdb_geocode_postalcode_polygon +-------------------------------- + +(1 row) + +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +NOTICE: cdb_dataservices_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_postalcode_point invoked with params (test_user, , "testing_app", 03204, Spain) + cdb_geocode_postalcode_point +------------------------------ + +(1 row) + +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +NOTICE: cdb_dataservices_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_geocode_ipaddress_point invoked with params (test_user, , "testing_app", 8.8.8.8) + cdb_geocode_ipaddress_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_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +NOTICE: cdb_dataservices_client._cdb_route_point_to_point(8): [contrib_regression] REMOTE NOTICE: cdb_dataservices_server.cdb_route_point_to_point invoked with params (test_user, , "testing_app", 0101000000D53E1D8F19F455C0185B087250F24440, 0101000000465F419AB1F255C0D8B628B341EE4440, car, {}, kilometers) + cdb_route_point_to_point +-------------------------- + (,5.33,100) +(1 row) + +-- Remove permissions +SET ROLE postgres; +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + cdb_conf_removeconf +--------------------- + +(1 row) + diff --git a/client/test/sql/10_admin0_test.sql b/client/test/sql/10_admin0_test.sql index 182ec3d..f4d24c6 100644 --- a/client/test/sql/10_admin0_test.sql +++ b/client/test/sql/10_admin0_test.sql @@ -11,6 +11,18 @@ BEGIN END; $$ LANGUAGE 'plpgsql'; +-- -- Exercise the public and the proxied function --- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_admin0_polygon('Spain'); + +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_admin0_polygon('Spain'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_admin0_polygon('Spain'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/20_admin1_test.sql b/client/test/sql/20_admin1_test.sql index ce02a0c..ebefcb9 100644 --- a/client/test/sql/20_admin1_test.sql +++ b/client/test/sql/20_admin1_test.sql @@ -19,7 +19,21 @@ BEGIN END; $$ LANGUAGE 'plpgsql'; +-- -- Exercise the public and the proxied function --- Exercise the public and the proxied function +-- No permissions granted SELECT cdb_geocode_admin1_polygon('California'); SELECT cdb_geocode_admin1_polygon('California', 'United States'); + +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_admin1_polygon('California'); +SELECT cdb_geocode_admin1_polygon('California', 'United States'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_admin1_polygon('California'); +SELECT cdb_geocode_admin1_polygon('California', 'United States'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/21_bulk_geocoding_functions_test.sql b/client/test/sql/21_bulk_geocoding_functions_test.sql index 985133a..649d8ce 100644 --- a/client/test/sql/21_bulk_geocoding_functions_test.sql +++ b/client/test/sql/21_bulk_geocoding_functions_test.sql @@ -12,12 +12,29 @@ RETURNS BOOLEAN as $$ SELECT FALSE; $$ LANGUAGE SQL; +-- No permissions granted -- Test bulk size not mandatory (it will get the optimal) SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); - -- Test quota check by mocking quota 0 SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +-- Test bulk size not mandatory (it will get the optimal) +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); +-- Test quota check by mocking quota 0 +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +-- Test bulk size not mandatory (it will get the optimal) +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain''', null, null, null, null); +-- Test quota check by mocking quota 0 +SELECT cdb_dataservices_client.cdb_bulk_geocode_street_point('select 1 as cartodb_id', '''Valladolid, Spain'''); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); + DROP FUNCTION cdb_dataservices_client.cdb_service_quota_info_batch; DROP FUNCTION cdb_dataservices_client.cdb_enough_quota; diff --git a/client/test/sql/25_exception_safe_private_functions_test.sql b/client/test/sql/25_exception_safe_private_functions_test.sql index 2cf139c..aeff422 100644 --- a/client/test/sql/25_exception_safe_private_functions_test.sql +++ b/client/test/sql/25_exception_safe_private_functions_test.sql @@ -32,11 +32,30 @@ END; $$ LANGUAGE 'plpgsql'; - --- Use regular user role -SET ROLE test_regular_user; - -- Exercise the exception safe and the proxied functions + +-- No permissions granted +SET ROLE test_regular_user; -- Use regular user role SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]); SELECT * FROM _cdb_route_point_to_point_exception_safe('POINT(-3.70237112 40.41706163)'::geometry,'POINT(-3.69909883 40.41236875)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); + +-- No permissions granted but conf created +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": []}'); +SET ROLE test_regular_user; -- Use regular user role +SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); +SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]); +SELECT * FROM _cdb_route_point_to_point_exception_safe('POINT(-3.70237112 40.41706163)'::geometry,'POINT(-3.69909883 40.41236875)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); + +-- Grant geocoding permissions +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "routing", "isolines"]}'); +SET ROLE test_regular_user; -- Use regular user role +SELECT _cdb_geocode_street_point_exception_safe('One street, 1'); +SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]); +SELECT * FROM _cdb_route_point_to_point_exception_safe('POINT(-3.70237112 40.41706163)'::geometry,'POINT(-3.69909883 40.41236875)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); + +-- Remove permissions +SET ROLE postgres; +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/30_namedplaces_test.sql b/client/test/sql/30_namedplaces_test.sql index 3816072..1d1d83c 100644 --- a/client/test/sql/30_namedplaces_test.sql +++ b/client/test/sql/30_namedplaces_test.sql @@ -27,8 +27,24 @@ BEGIN END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function + +-- No permissions granted SELECT cdb_geocode_namedplace_point('Elx'); SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_namedplace_point('Elx'); +SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_namedplace_point('Elx'); +SELECT cdb_geocode_namedplace_point('Elx', 'Spain'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/40_postalcodes_test.sql b/client/test/sql/40_postalcodes_test.sql index 5b8bafc..369a44b 100644 --- a/client/test/sql/40_postalcodes_test.sql +++ b/client/test/sql/40_postalcodes_test.sql @@ -19,6 +19,21 @@ BEGIN END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function + +-- No permissions granted SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); SELECT cdb_geocode_postalcode_point('03204', 'Spain'); + +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); \ No newline at end of file diff --git a/client/test/sql/50_ipaddresses_test.sql b/client/test/sql/50_ipaddresses_test.sql index 098ebc6..0c68dd2 100644 --- a/client/test/sql/50_ipaddresses_test.sql +++ b/client/test/sql/50_ipaddresses_test.sql @@ -12,5 +12,18 @@ END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function + +-- No permissions granted SELECT cdb_geocode_ipaddress_point('8.8.8.8'); + +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/60_street_test.sql b/client/test/sql/60_street_test.sql index 116dec9..ac0d107 100644 --- a/client/test/sql/60_street_test.sql +++ b/client/test/sql/60_street_test.sql @@ -12,7 +12,9 @@ END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied function +-- -- Exercise the public and the proxied function + +-- No permissions granted SELECT cdb_geocode_street_point('One street, 1'); SELECT cdb_geocode_street_point('One street', 'city'); SELECT cdb_geocode_street_point('One street', 'city', 'state'); @@ -23,3 +25,32 @@ SELECT cdb_geocode_street_point('One street', 'city'); SELECT cdb_geocode_street_point('One street', 'city', 'state'); SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); + +-- Grant other permissions but geocoding +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing", "isolines"]}'); +SELECT cdb_geocode_street_point('One street, 1'); +SELECT cdb_geocode_street_point('One street', 'city'); +SELECT cdb_geocode_street_point('One street', 'city', 'state'); +SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); +SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); +SELECT cdb_geocode_street_point('One street, 1'); +SELECT cdb_geocode_street_point('One street', 'city'); +SELECT cdb_geocode_street_point('One street', 'city', 'state'); +SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); +SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); + +-- Grant geocoding permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding"]}'); +SELECT cdb_geocode_street_point('One street, 1'); +SELECT cdb_geocode_street_point('One street', 'city'); +SELECT cdb_geocode_street_point('One street', 'city', 'state'); +SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); +SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); +SELECT cdb_geocode_street_point('One street, 1'); +SELECT cdb_geocode_street_point('One street', 'city'); +SELECT cdb_geocode_street_point('One street', 'city', 'state'); +SELECT cdb_geocode_street_point('One street', 'city', 'state', 'country'); +SELECT cdb_geocode_street_point('One street', 'city', NULL, 'country'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); \ No newline at end of file diff --git a/client/test/sql/80_route_point_to_point_test.sql b/client/test/sql/80_route_point_to_point_test.sql index 5f6c4c3..a995425 100644 --- a/client/test/sql/80_route_point_to_point_test.sql +++ b/client/test/sql/80_route_point_to_point_test.sql @@ -28,12 +28,33 @@ END; $$ LANGUAGE 'plpgsql'; --- Exercise the public and the proxied functions +-- -- Exercise the public and the proxied function + +-- No permissions granted SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); - SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); +-- Grant other permissions but routing +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "isolines"]}'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); + +-- Grant routing permissions +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["routing"]}'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY['mode_type=shortest']::text[]); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car', ARRAY[]::text[], 'miles'); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car'); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY['mode_type=shortest']::text[]); +SELECT cdb_route_with_waypoints(Array['POINT(-87.81406 41.89308)'::geometry,'POINT(-87.80406 41.87308)'::geometry,'POINT(-87.79209 41.86138)'::geometry], 'car', ARRAY[]::text[], 'miles'); + +-- Remove permissions +SELECT CDB_Conf_RemoveConf('api_keys_postgres'); diff --git a/client/test/sql/999_permissions_test.sql b/client/test/sql/999_permissions_test.sql index 004bbf6..0417656 100644 --- a/client/test/sql/999_permissions_test.sql +++ b/client/test/sql/999_permissions_test.sql @@ -5,20 +5,6 @@ SET ROLE test_regular_user; -- Add to the search path the schema SET search_path TO public,cartodb,cdb_dataservices_client; --- Exercise the public function --- it is public, it shall work -SELECT cdb_geocode_admin0_polygon('Spain'); -SELECT cdb_geocode_admin1_polygon('California'); -SELECT cdb_geocode_admin1_polygon('California', 'United States'); -SELECT cdb_geocode_namedplace_point('Elx'); -SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); -SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); -SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); -SELECT cdb_geocode_postalcode_point('03204', 'Spain'); -SELECT cdb_geocode_ipaddress_point('8.8.8.8'); -SELECT cdb_geocode_street_point('one street, 1'); -SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); - -- Check the regular user has no permissions on private functions SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'evil_appname', 'Hell'); SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'evil_appname', 'Hell'); @@ -31,3 +17,54 @@ SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', 'evil_appname' SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', 'evil_appname', '8.8.8.8'); SELECT _cdb_geocode_street_point('evil_user', 'evil_orgname', 'evil_appname', 'one street, 1'); SELECT _cdb_route_point_to_point('evil_user', 'evil_orgname', 'evil_appname', 'POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); + +-- -- Exercise the public function +-- -- it is public, it shall work +-- No permissions granted +SELECT cdb_geocode_admin0_polygon('Spain'); +SELECT cdb_geocode_admin1_polygon('California'); +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +SELECT cdb_geocode_namedplace_point('Elx'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +SELECT cdb_geocode_street_point('one street, 1'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); + +-- Grant other permissions but geocoding and routing +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["isolines"]}'); +SET ROLE test_regular_user; -- Use regular user role +SELECT cdb_geocode_admin0_polygon('Spain'); +SELECT cdb_geocode_admin1_polygon('California'); +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +SELECT cdb_geocode_namedplace_point('Elx'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +SELECT cdb_geocode_street_point('one street, 1'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); + +-- Grant geocoding permissions +SET ROLE postgres; +SELECT CDB_Conf_SetConf('api_keys_postgres', '{"application": "testing_app", "permissions": ["geocoding", "routing"]}'); +SET ROLE test_regular_user; -- Use regular user role +SELECT cdb_geocode_admin0_polygon('Spain'); +SELECT cdb_geocode_admin1_polygon('California'); +SELECT cdb_geocode_admin1_polygon('California', 'United States'); +SELECT cdb_geocode_namedplace_point('Elx'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia'); +SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain'); +SELECT cdb_geocode_postalcode_polygon('03204', 'Spain'); +SELECT cdb_geocode_postalcode_point('03204', 'Spain'); +SELECT cdb_geocode_ipaddress_point('8.8.8.8'); +SELECT cdb_geocode_street_point('one street, 1'); +SELECT cdb_route_point_to_point('POINT(-87.81406 41.89308)'::geometry,'POINT(-87.79209 41.86138)'::geometry, 'car'); + +-- Remove permissions +SET ROLE postgres; +SELECT CDB_Conf_RemoveConf('api_keys_postgres');