dataservices-api/client/test/expected/25_exception_safe_private_functions_test.out

91 lines
4.1 KiB
Plaintext
Raw Normal View History

\set VERBOSITY terse
2016-12-14 19:53:51 +08:00
SET client_min_messages TO warning;
SET search_path TO public,cartodb,cdb_dataservices_client;
2016-12-14 19:53:51 +08:00
-- Mock the server functions to raise exceptions
2018-09-10 18:54:37 +08:00
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_geocode_street_point (username text, orgname text, searchtext text, city text DEFAULT NULL, state_province text DEFAULT NULL, country text DEFAULT NULL)
RETURNS Geometry AS $$
BEGIN
RAISE EXCEPTION 'Not enough quota or any other exception whatsoever.';
RETURN NULL;
END;
$$ LANGUAGE 'plpgsql';
2018-09-10 18:54:37 +08:00
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_isodistance(username text, orgname text, source geometry, mode text, range integer[], options text[] DEFAULT ARRAY[]::text[])
2016-12-14 19:53:51 +08:00
RETURNS SETOF isoline AS $$
BEGIN
RAISE EXCEPTION 'Not enough quota or any other exception whatsoever.';
END;
$$ LANGUAGE 'plpgsql';
2018-09-10 18:54:37 +08:00
CREATE OR REPLACE FUNCTION cdb_dataservices_server.cdb_route_point_to_point (username text, orgname text, origin geometry(Point, 4326), destination geometry(Point, 4326), mode TEXT, options text[] DEFAULT ARRAY[]::text[], units text DEFAULT 'kilometers')
2016-12-14 19:57:51 +08:00
RETURNS cdb_dataservices_client.simple_route AS $$
DECLARE
ret cdb_dataservices_client.simple_route;
BEGIN
RAISE EXCEPTION 'Not enough quota or any other exception whatsoever.';
-- This code shall never be reached
SELECT NULL, 5.33, 100 INTO ret;
RETURN ret;
END;
$$ LANGUAGE 'plpgsql';
2016-12-14 19:53:51 +08:00
-- Exercise the exception safe and the proxied functions
2018-09-06 22:40:05 +08:00
-- No permissions granted
SET ROLE test_regular_user; -- Use regular user role
SELECT _cdb_geocode_street_point_exception_safe('One street, 1');
2018-09-10 22:45:31 +08:00
ERROR: Geocoding permission denied
2018-09-06 22:40:05 +08:00
SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]);
2018-09-10 23:06:37 +08:00
ERROR: Isolines permission denied
2018-09-06 22:40:05 +08:00
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[]);
2018-09-10 22:45:31 +08:00
ERROR: Routing permission denied
2018-09-06 22:40:05 +08:00
-- No permissions granted but conf created
SET ROLE postgres;
2018-09-11 18:02:24 +08:00
SELECT CDB_Conf_SetConf('api_keys_postgres', '{"username": "test_user", "permissions": []}');
2018-09-06 22:40:05 +08:00
cdb_conf_setconf
------------------
(1 row)
SET ROLE test_regular_user; -- Use regular user role
SELECT _cdb_geocode_street_point_exception_safe('One street, 1');
2018-09-10 22:45:31 +08:00
ERROR: Geocoding permission denied
2018-09-06 22:40:05 +08:00
SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]);
2018-09-10 23:06:37 +08:00
ERROR: Isolines permission denied
2018-09-06 22:40:05 +08:00
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[]);
2018-09-10 22:45:31 +08:00
ERROR: Routing permission denied
2018-09-06 22:40:05 +08:00
-- Grant geocoding permissions
SET ROLE postgres;
2018-09-11 18:02:24 +08:00
SELECT CDB_Conf_SetConf('api_keys_postgres', '{"username": "test_user", "permissions": ["geocoding", "routing", "isolines"]}');
2018-09-06 22:40:05 +08:00
cdb_conf_setconf
------------------
(1 row)
SET ROLE test_regular_user; -- Use regular user role
SELECT _cdb_geocode_street_point_exception_safe('One street, 1');
2018-09-10 19:50:52 +08:00
WARNING: cdb_dataservices_client._cdb_geocode_street_point(6): [contrib_regression] REMOTE ERROR: Not enough quota or any other exception whatsoever.
_cdb_geocode_street_point_exception_safe
------------------------------------------
(1 row)
SELECT * FROM _cdb_isodistance_exception_safe('POINT(-3.70568 40.42028)'::geometry, 'walk', ARRAY[300]::integer[]);
2018-09-10 19:50:52 +08:00
WARNING: cdb_dataservices_client._cdb_isodistance(6): [contrib_regression] REMOTE ERROR: Not enough quota or any other exception whatsoever.
center | data_range | the_geom
--------+------------+----------
2016-12-14 19:53:51 +08:00
(0 rows)
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[]);
2018-09-10 19:50:52 +08:00
WARNING: cdb_dataservices_client._cdb_route_point_to_point(7): [contrib_regression] REMOTE ERROR: Not enough quota or any other exception whatsoever.
shape | length | duration
-------+--------+----------
| |
2016-12-14 19:57:51 +08:00
(1 row)
2018-09-06 22:40:05 +08:00
-- Remove permissions
SET ROLE postgres;
SELECT CDB_Conf_RemoveConf('api_keys_postgres');
cdb_conf_removeconf
---------------------
(1 row)