Merge branch 'master' into 502-geocoding
This commit is contained in:
commit
0f4ff59a52
@ -20,13 +20,6 @@ SELECT cartodb.cdb_conf_setconf('user_config', '{"is_organization": false, "enti
|
|||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
-- Mock the geocoder configuration
|
|
||||||
SELECT cartodb.cdb_conf_setconf('geocoder_config', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}');
|
|
||||||
cdb_conf_setconf
|
|
||||||
------------------
|
|
||||||
|
|
||||||
(1 row)
|
|
||||||
|
|
||||||
-- Mock the server schema
|
-- Mock the server schema
|
||||||
CREATE SCHEMA cdb_geocoder_server;
|
CREATE SCHEMA cdb_geocoder_server;
|
||||||
-- Create a test user to check permissions
|
-- Create a test user to check permissions
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
-- Add to the search path the schema
|
-- Add to the search path the schema
|
||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
-- Mock the server function
|
-- Mock the server function
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config JSON, geocoder_config JSON, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}' , country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %)', username, orgname, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
-- Exercise the public and the proxied function
|
-- Exercise the public and the proxied function
|
||||||
SELECT cdb_geocode_admin0_polygon('Spain');
|
SELECT cdb_geocode_admin0_polygon('Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", <NULL>, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(session_user, user_config, geocoder_config, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, orgname, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin0_polygon(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin0_polygon(text) line 15 at SQL statement
|
||||||
cdb_geocode_admin0_polygon
|
cdb_geocode_admin0_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
-- Add to the search path the schema
|
-- Add to the search path the schema
|
||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, orgname, admin1_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', username, orgname, admin1_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
-- Exercise the public and the proxied function
|
-- Exercise the public and the proxied function
|
||||||
SELECT cdb_geocode_admin1_polygon('California');
|
SELECT cdb_geocode_admin1_polygon('California');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", <NULL>, California)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin1_polygon(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin1_polygon(text) line 15 at SQL statement
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_admin1_polygon('California', 'United States');
|
SELECT cdb_geocode_admin1_polygon('California', 'United States');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California, United States)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", <NULL>, California, United States)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
@ -1,50 +1,50 @@
|
|||||||
-- Add to the search path the schema
|
-- Add to the search path the schema
|
||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, orgname, city_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, orgname, city_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, admin1_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', username, orgname, city_name, admin1_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
-- Exercise the public and the proxied function
|
-- Exercise the public and the proxied function
|
||||||
SELECT cdb_geocode_namedplace_point('Elx');
|
SELECT cdb_geocode_namedplace_point('Elx');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_namedplace_point('Elx', 'Spain');
|
SELECT cdb_geocode_namedplace_point('Elx', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx, Valencia, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, admin1_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, admin1_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
-- Add to the search path the schema
|
-- Add to the search path the schema
|
||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, postal_code text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %)', username, orgname, postal_code, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, postal_code text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %)', username, orgname, postal_code, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
-- Exercise the public and the proxied function
|
-- Exercise the public and the proxied function
|
||||||
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", <NULL>, 03204, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(session_user, user_config, geocoder_config, postal_code, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, orgname, postal_code, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_postalcode_polygon
|
cdb_geocode_postalcode_polygon
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", <NULL>, 03204, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(session_user, user_config, geocoder_config, postal_code, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, orgname, postal_code, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_postalcode_point
|
cdb_geocode_postalcode_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
-- Add to the search path the schema
|
-- Add to the search path the schema
|
||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config JSON, geocoder_config JSON, ip_address text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip_address text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', ip_address;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %)', username, orgname, ip_address;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
-- Exercise the public and the proxied function
|
-- Exercise the public and the proxied function
|
||||||
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 8.8.8.8)
|
NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", <NULL>, 8.8.8.8)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(session_user, user_config, geocoder_config, ip_address)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, orgname, ip_address)"
|
||||||
PL/pgSQL function cdb_geocode_ipaddress_point(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_ipaddress_point(text) line 15 at SQL statement
|
||||||
cdb_geocode_ipaddress_point
|
cdb_geocode_ipaddress_point
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
@ -5,102 +5,102 @@ SET search_path TO public,cartodb,cdb_geocoder_client;
|
|||||||
-- Exercise the public function
|
-- Exercise the public function
|
||||||
-- it is public, it shall work
|
-- it is public, it shall work
|
||||||
SELECT cdb_geocode_admin0_polygon('Spain');
|
SELECT cdb_geocode_admin0_polygon('Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin0_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params ("test_user", <NULL>, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(session_user, user_config, geocoder_config, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin0_polygon(username, orgname, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin0_polygon(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin0_polygon(text) line 15 at SQL statement
|
||||||
cdb_geocode_admin0_polygon
|
cdb_geocode_admin0_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_admin1_polygon('California');
|
SELECT cdb_geocode_admin1_polygon('California');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", <NULL>, California)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin1_polygon(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin1_polygon(text) line 15 at SQL statement
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_admin1_polygon('California', 'United States');
|
SELECT cdb_geocode_admin1_polygon('California', 'United States');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, California, United States)
|
NOTICE: cdb_geocoder_client._cdb_geocode_admin1_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params ("test_user", <NULL>, California, United States)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(session_user, user_config, geocoder_config, admin1_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_admin1_polygon(username, orgname, admin1_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_admin1_polygon(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_namedplace_point('Elx');
|
SELECT cdb_geocode_namedplace_point('Elx');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia');
|
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx, Valencia)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocode_namedplace_point('Elx', 'Valencia', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(6): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, Elx, Valencia, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_namedplace_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params ("test_user", <NULL>, Elx, Valencia, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(session_user, user_config, geocoder_config, city_name, admin1_name, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_namedplace_point(username, orgname, city_name, admin1_name, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_namedplace_point(text,text,text) line 15 at SQL statement
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_polygon('03204', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_polygon(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params ("test_user", <NULL>, 03204, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(session_user, user_config, geocoder_config, postal_code, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_polygon(username, orgname, postal_code, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_postalcode_polygon(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_postalcode_polygon
|
cdb_geocode_postalcode_polygon
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(5): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 03204, Spain)
|
NOTICE: cdb_geocoder_client._cdb_geocode_postalcode_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params ("test_user", <NULL>, 03204, Spain)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(session_user, user_config, geocoder_config, postal_code, country_name)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_postalcode_point(username, orgname, postal_code, country_name)"
|
||||||
PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_postalcode_point(text,text) line 15 at SQL statement
|
||||||
cdb_geocode_postalcode_point
|
cdb_geocode_postalcode_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
||||||
NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(4): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (postgres, {"is_organization": false, "entity_name": "test_user"}, {"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}, 8.8.8.8)
|
NOTICE: cdb_geocoder_client._cdb_geocode_ipaddress_point(3): [contrib_regression] REMOTE NOTICE: cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params ("test_user", <NULL>, 8.8.8.8)
|
||||||
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(session_user, user_config, geocoder_config, ip_address)"
|
CONTEXT: SQL statement "SELECT cdb_geocoder_client._cdb_geocode_ipaddress_point(username, orgname, ip_address)"
|
||||||
PL/pgSQL function cdb_geocode_ipaddress_point(text) line 12 at SQL statement
|
PL/pgSQL function cdb_geocode_ipaddress_point(text) line 15 at SQL statement
|
||||||
cdb_geocode_ipaddress_point
|
cdb_geocode_ipaddress_point
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
-- Check the regular user has no permissions on private functions
|
-- Check the regular user has no permissions on private functions
|
||||||
SELECT _cdb_geocode_admin0_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell');
|
SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_admin0_polygon
|
ERROR: permission denied for function _cdb_geocode_admin0_polygon
|
||||||
SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell');
|
SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_admin1_polygon
|
ERROR: permission denied for function _cdb_geocode_admin1_polygon
|
||||||
SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell');
|
SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Sheol', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_admin1_polygon
|
ERROR: permission denied for function _cdb_geocode_admin1_polygon
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol');
|
||||||
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell', 'Ugly world');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell', 'Ugly world');
|
||||||
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
ERROR: permission denied for function _cdb_geocode_namedplace_point
|
||||||
SELECT _cdb_geocode_postalcode_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell');
|
SELECT _cdb_geocode_postalcode_polygon('evil_user', 'evil_orgname', '66666', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_postalcode_polygon
|
ERROR: permission denied for function _cdb_geocode_postalcode_polygon
|
||||||
SELECT _cdb_geocode_postalcode_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell');
|
SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell');
|
||||||
ERROR: permission denied for function _cdb_geocode_postalcode_point
|
ERROR: permission denied for function _cdb_geocode_postalcode_point
|
||||||
SELECT _cdb_geocode_ipaddress_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '8.8.8.8');
|
SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8');
|
||||||
ERROR: permission denied for function _cdb_geocode_ipaddress_point
|
ERROR: permission denied for function _cdb_geocode_ipaddress_point
|
||||||
|
37
client/sql/0.0.1/15_config_management.sql
Normal file
37
client/sql/0.0.1/15_config_management.sql
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
CREATE TYPE cdb_geocoder_client._entity_config AS (
|
||||||
|
username text,
|
||||||
|
organization_name text
|
||||||
|
);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Get entity config function
|
||||||
|
--
|
||||||
|
-- The purpose of this function is to retrieve the username and organization name from
|
||||||
|
-- a) schema where he/her is the owner in case is an organization user
|
||||||
|
-- b) entity_name from the cdb_conf database in case is a non organization user
|
||||||
|
CREATE OR REPLACE FUNCTION cdb_geocoder_client._cdb_entity_config()
|
||||||
|
RETURNS record AS $$
|
||||||
|
DECLARE
|
||||||
|
result cdb_geocoder_client._entity_config;
|
||||||
|
is_organization boolean;
|
||||||
|
username text;
|
||||||
|
organization_name text;
|
||||||
|
BEGIN
|
||||||
|
SELECT cartodb.cdb_conf_getconf('user_config')->'is_organization' INTO is_organization;
|
||||||
|
IF is_organization IS NULL THEN
|
||||||
|
RAISE EXCEPTION 'User must have user configuration in the config table';
|
||||||
|
ELSIF is_organization = TRUE THEN
|
||||||
|
SELECT nspname
|
||||||
|
FROM pg_namespace s
|
||||||
|
LEFT JOIN pg_roles r ON s.nspowner = r.oid
|
||||||
|
WHERE r.rolname = session_user INTO username;
|
||||||
|
SELECT cartodb.cdb_conf_getconf('user_config')->'entity_name' INTO organization_name;
|
||||||
|
ELSE
|
||||||
|
SELECT cartodb.cdb_conf_getconf('user_config')->'entity_name' INTO username;
|
||||||
|
organization_name = NULL;
|
||||||
|
END IF;
|
||||||
|
result.username = username;
|
||||||
|
result.organization_name = organization_name;
|
||||||
|
RETURN result;
|
||||||
|
END;
|
||||||
|
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
@ -12,8 +12,6 @@ CREATE EXTENSION cdb_geocoder_client;
|
|||||||
SELECT cartodb.cdb_conf_setconf('geocoder_server_config', '{"connection_str": "dbname=contrib_regression host=127.0.0.1 user=postgres"}');
|
SELECT cartodb.cdb_conf_setconf('geocoder_server_config', '{"connection_str": "dbname=contrib_regression host=127.0.0.1 user=postgres"}');
|
||||||
-- Mock the user configuration
|
-- Mock the user configuration
|
||||||
SELECT cartodb.cdb_conf_setconf('user_config', '{"is_organization": false, "entity_name": "test_user"}');
|
SELECT cartodb.cdb_conf_setconf('user_config', '{"is_organization": false, "entity_name": "test_user"}');
|
||||||
-- Mock the geocoder configuration
|
|
||||||
SELECT cartodb.cdb_conf_setconf('geocoder_config', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}');
|
|
||||||
|
|
||||||
-- Mock the server schema
|
-- Mock the server schema
|
||||||
CREATE SCHEMA cdb_geocoder_server;
|
CREATE SCHEMA cdb_geocoder_server;
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
|
|
||||||
-- Mock the server function
|
-- Mock the server function
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config JSON, geocoder_config JSON, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}' , country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin0_polygon invoked with params (%, %, %)', username, orgname, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
|
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %)', username, orgname, admin1_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config JSON, geocoder_config JSON, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', admin1_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_admin1_polygon invoked with params (%, %, %, %)', username, orgname, admin1_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
@ -2,26 +2,26 @@
|
|||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
|
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %)', username, orgname, city_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %)', username, orgname, city_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config JSON, geocoder_config JSON, city_name text, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', city_name, admin1_name, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_namedplace_point invoked with params (%, %, %, %, %)', username, orgname, city_name, admin1_name, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
|
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, postal_code text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_polygon invoked with params (%, %, %, %)', username, orgname, postal_code, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config JSON, geocoder_config JSON, postal_code text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, postal_code text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', postal_code, country_name;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_postalcode_point invoked with params (%, %, %, %)', username, orgname, postal_code, country_name;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
SET search_path TO public,cartodb,cdb_geocoder_client;
|
SET search_path TO public,cartodb,cdb_geocoder_client;
|
||||||
|
|
||||||
-- Mock the server functions
|
-- Mock the server functions
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config JSON, geocoder_config JSON, ip_address text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip_address text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
BEGIN
|
BEGIN
|
||||||
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %, %)', user_id, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', ip_address;
|
RAISE NOTICE 'cdb_geocoder_server.cdb_geocode_ipaddress_point invoked with params (%, %, %)', username, orgname, ip_address;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql';
|
$$ LANGUAGE 'plpgsql';
|
||||||
|
@ -17,12 +17,12 @@ SELECT cdb_geocode_postalcode_point('03204', 'Spain');
|
|||||||
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
SELECT cdb_geocode_ipaddress_point('8.8.8.8');
|
||||||
|
|
||||||
-- Check the regular user has no permissions on private functions
|
-- Check the regular user has no permissions on private functions
|
||||||
SELECT _cdb_geocode_admin0_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell');
|
SELECT _cdb_geocode_admin0_polygon('evil_user', 'evil_orgname', 'Hell');
|
||||||
SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Hell');
|
SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Hell');
|
||||||
SELECT _cdb_geocode_admin1_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell');
|
SELECT _cdb_geocode_admin1_polygon('evil_user', 'evil_orgname', 'Sheol', 'Hell');
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol');
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell');
|
||||||
SELECT _cdb_geocode_namedplace_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Sheol', 'Hell', 'Ugly world');
|
SELECT _cdb_geocode_namedplace_point('evil_user', 'evil_orgname', 'Sheol', 'Hell', 'Ugly world');
|
||||||
SELECT _cdb_geocode_postalcode_polygon('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell');
|
SELECT _cdb_geocode_postalcode_polygon('evil_user', 'evil_orgname', '66666', 'Hell');
|
||||||
SELECT _cdb_geocode_postalcode_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '66666', 'Hell');
|
SELECT _cdb_geocode_postalcode_point('evil_user', 'evil_orgname', '66666', 'Hell');
|
||||||
SELECT _cdb_geocode_ipaddress_point('evil_user', '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '8.8.8.8');
|
SELECT _cdb_geocode_ipaddress_point('evil_user', 'evil_orgname', '8.8.8.8');
|
||||||
|
@ -8,15 +8,18 @@ CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>.<%= name %> (<%= params
|
|||||||
RETURNS <%= return_type %> AS $$
|
RETURNS <%= return_type %> AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
ret <%= return_type %>;
|
ret <%= return_type %>;
|
||||||
user_config json;
|
username text;
|
||||||
geocoder_config json;
|
orgname text;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
|
IF session_user = 'publicuser' OR session_user ~ 'cartodb_publicuser_*' THEN
|
||||||
RAISE EXCEPTION 'The api_key must be provided';
|
RAISE EXCEPTION 'The api_key must be provided';
|
||||||
END IF;
|
END IF;
|
||||||
SELECT cartodb.CDB_Conf_GetConf('<%= user_config_key %>') INTO user_config;
|
SELECT u, o INTO username, orgname FROM _cdb_entity_config() AS (u text, o text);
|
||||||
SELECT cartodb.CDB_Conf_GetConf('<%= geocoder_config_key %>') INTO geocoder_config;
|
-- JSON value stored "" is taken as literal
|
||||||
SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(session_user, user_config, geocoder_config, <%= params %>) INTO ret;
|
IF username IS NULL OR username = '' OR username = '""' THEN
|
||||||
|
RAISE EXCEPTION 'Username is a mandatory argument, check it out';
|
||||||
|
END IF;
|
||||||
|
SELECT <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %>(username, orgname, <%= params %>) INTO ret;
|
||||||
RETURN ret;
|
RETURN ret;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
$$ LANGUAGE 'plpgsql' SECURITY DEFINER;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (user_id name, user_config json, geocoder_config json, <%= params_with_type %>)
|
CREATE OR REPLACE FUNCTION <%= GEOCODER_CLIENT_SCHEMA %>._<%= name %> (username text, organization_name text, <%= params_with_type %>)
|
||||||
RETURNS <%= return_type %> AS $$
|
RETURNS <%= return_type %> AS $$
|
||||||
CONNECT <%= GEOCODER_CLIENT_SCHEMA %>._server_conn_str();
|
CONNECT <%= GEOCODER_CLIENT_SCHEMA %>._server_conn_str();
|
||||||
SELECT cdb_geocoder_server.<%= name %> (user_id, user_config, geocoder_config, <%= params %>);
|
SELECT cdb_geocoder_server.<%= name %> (username, organization_name, <%= params %>);
|
||||||
$$ LANGUAGE plproxy;
|
$$ LANGUAGE plproxy;
|
||||||
|
|
||||||
|
@ -1,45 +1,33 @@
|
|||||||
---
|
---
|
||||||
- name: cdb_geocode_admin0_polygon
|
- name: cdb_geocode_admin0_polygon
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: country_name, type: text }
|
- { name: country_name, type: text }
|
||||||
|
|
||||||
- name: cdb_geocode_admin1_polygon
|
- name: cdb_geocode_admin1_polygon
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: admin1_name, type: text }
|
- { name: admin1_name, type: text }
|
||||||
|
|
||||||
- name: cdb_geocode_admin1_polygon
|
- name: cdb_geocode_admin1_polygon
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: admin1_name, type: text }
|
- { name: admin1_name, type: text }
|
||||||
- { name: country_name, type: text }
|
- { name: country_name, type: text }
|
||||||
|
|
||||||
- name: cdb_geocode_namedplace_point
|
- name: cdb_geocode_namedplace_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: city_name, type: text}
|
- { name: city_name, type: text}
|
||||||
|
|
||||||
- name: cdb_geocode_namedplace_point
|
- name: cdb_geocode_namedplace_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: city_name, type: text}
|
- { name: city_name, type: text}
|
||||||
- { name: country_name, type: text}
|
- { name: country_name, type: text}
|
||||||
|
|
||||||
- name: cdb_geocode_namedplace_point
|
- name: cdb_geocode_namedplace_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: city_name, type: text}
|
- { name: city_name, type: text}
|
||||||
- { name: admin1_name, type: text}
|
- { name: admin1_name, type: text}
|
||||||
@ -48,24 +36,18 @@
|
|||||||
|
|
||||||
- name: cdb_geocode_postalcode_polygon
|
- name: cdb_geocode_postalcode_polygon
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: postal_code, type: text}
|
- { name: postal_code, type: text}
|
||||||
- { name: country_name, type: text}
|
- { name: country_name, type: text}
|
||||||
|
|
||||||
- name: cdb_geocode_postalcode_point
|
- name: cdb_geocode_postalcode_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: postal_code, type: text}
|
- { name: postal_code, type: text}
|
||||||
- { name: country_name, type: text}
|
- { name: country_name, type: text}
|
||||||
|
|
||||||
- name: cdb_geocode_ipaddress_point
|
- name: cdb_geocode_ipaddress_point
|
||||||
return_type: Geometry
|
return_type: Geometry
|
||||||
user_config_key: user_config
|
|
||||||
geocoder_config_key: geocoder_config
|
|
||||||
params:
|
params:
|
||||||
- { name: ip_address, type: text}
|
- { name: ip_address, type: text}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain');
|
||||||
cdb_geocode_admin0_polygon
|
cdb_geocode_admin0_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText(
|
|||||||
-71.1031880899493 42.3152774590236))',4326)
|
-71.1031880899493 42.3152774590236))',4326)
|
||||||
);
|
);
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain');
|
||||||
cdb_geocode_admin0_polygon
|
cdb_geocode_admin0_polygon
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
||||||
@ -28,7 +28,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin0_polygon'
|
AND proname = 'cdb_geocode_admin0_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California');
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California', 'United States');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States');
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
@ -22,13 +22,13 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c
|
|||||||
-71.1031880899493 42.3152774590236))',4326)
|
-71.1031880899493 42.3152774590236))',4326)
|
||||||
);
|
);
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California');
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California', 'United States');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States');
|
||||||
cdb_geocode_admin1_polygon
|
cdb_geocode_admin1_polygon
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540
|
||||||
@ -40,7 +40,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin1_polygon'
|
AND proname = 'cdb_geocode_admin1_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -51,7 +51,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin1_polygon'
|
AND proname = 'cdb_geocode_admin1_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
@ -31,37 +31,37 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES');
|
|||||||
-- Insert dummy data into admin1 decoder table
|
-- Insert dummy data into admin1 decoder table
|
||||||
INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES');
|
INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES');
|
||||||
-- This should return the point inserted above
|
-- This should return the point inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'valencia', 'Spain');
|
||||||
cdb_geocode_namedplace_point
|
cdb_geocode_namedplace_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
0101000020E6100000637FD93D7958E63F2ECA6C9049A24340
|
||||||
@ -73,7 +73,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -84,7 +84,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -95,7 +95,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
|
@ -6,7 +6,7 @@ DELETE FROM available_services;
|
|||||||
DELETE FROM admin0_synonyms;
|
DELETE FROM admin0_synonyms;
|
||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204');
|
||||||
cdb_geocode_postalcode_point
|
cdb_geocode_postalcode_point
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
@ -42,25 +42,25 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
|||||||
3
|
3
|
||||||
);
|
);
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204');
|
||||||
cdb_geocode_postalcode_point
|
cdb_geocode_postalcode_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E61000000000000000E040408036B47414764840
|
0101000020E61000000000000000E040408036B47414764840
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204', 'spain');
|
||||||
cdb_geocode_postalcode_point
|
cdb_geocode_postalcode_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E61000000000000000E040408036B47414764840
|
0101000020E61000000000000000E040408036B47414764840
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204');
|
||||||
cdb_geocode_postalcode_polygon
|
cdb_geocode_postalcode_polygon
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040
|
0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204', 'spain');
|
||||||
cdb_geocode_postalcode_polygon
|
cdb_geocode_postalcode_polygon
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040
|
0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040
|
||||||
@ -78,7 +78,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_point'
|
AND proname = 'cdb_geocode_postalcode_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -89,7 +89,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_point'
|
AND proname = 'cdb_geocode_postalcode_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -100,7 +100,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_polygon'
|
AND proname = 'cdb_geocode_postalcode_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
@ -111,7 +111,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_polygon'
|
AND proname = 'cdb_geocode_postalcode_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0');
|
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0');
|
||||||
cdb_geocode_ipaddress_point
|
cdb_geocode_ipaddress_point
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organ
|
|||||||
-- Insert dummy data into ip_address_locations
|
-- Insert dummy data into ip_address_locations
|
||||||
INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326)));
|
INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326)));
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0');
|
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0');
|
||||||
cdb_geocode_ipaddress_point
|
cdb_geocode_ipaddress_point
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
0101000020E61000003333333333334440AE47E17A14AE0D40
|
0101000020E61000003333333333334440AE47E17A14AE0D40
|
||||||
@ -21,7 +21,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_ipaddress_point'
|
AND proname = 'cdb_geocode_ipaddress_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
exists
|
exists
|
||||||
--------
|
--------
|
||||||
t
|
t
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_geocoder_server FROM geocoder_api;
|
||||||
|
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA public FROM geocoder_api;
|
||||||
|
REVOKE USAGE ON SCHEMA cdb_geocoder_server FROM geocoder_api;
|
||||||
|
REVOKE USAGE ON SCHEMA public FROM geocoder_api;
|
||||||
|
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM geocoder_api;
|
@ -1,9 +1,9 @@
|
|||||||
-- Interface of the server extension
|
-- Interface of the server extension
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(user_id name, user_config_data JSON, geocoder_config_data JSON, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin0_polygon(username text, orgname text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_admin0_polygons')
|
plpy.debug('Entering cdb_geocode_admin0_polygons')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
-- Interfacess of the server extension
|
-- Interfacess of the server extension
|
||||||
|
|
||||||
---- cdb_geocode_admin1_polygon(admin1_name text)
|
---- cdb_geocode_admin1_polygon(admin1_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text)')
|
plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text)')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -18,10 +18,10 @@ RETURNS Geometry AS $$
|
|||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
---- cdb_geocode_admin1_polygon(admin1_name text, country_name text)
|
---- cdb_geocode_admin1_polygon(admin1_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_admin1_polygon(username text, orgname text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text, country_name text)')
|
plpy.debug('Entering cdb_geocode_admin1_polygon(admin1_name text, country_name text)')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
-- Interfacess of the server extension
|
-- Interfacess of the server extension
|
||||||
|
|
||||||
---- cdb_geocode_namedplace_point(city_name text)
|
---- cdb_geocode_namedplace_point(city_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text)')
|
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text)')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -18,10 +18,10 @@ RETURNS Geometry AS $$
|
|||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
---- cdb_geocode_namedplace_point(city_name text, country_name text)
|
---- cdb_geocode_namedplace_point(city_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, country_name text)')
|
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, country_name text)')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -35,10 +35,10 @@ RETURNS Geometry AS $$
|
|||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)
|
---- cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, admin1_name text, country_name text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_namedplace_point(username text, orgname text, city_name text, admin1_name text, country_name text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)')
|
plpy.debug('Entering cdb_geocode_namedplace_point(city_name text, admin1_name text, country_name text)')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
-- Interface of the server extension
|
-- Interface of the server extension
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, code text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -16,10 +16,10 @@ RETURNS Geometry AS $$
|
|||||||
return rv[0]["point"]
|
return rv[0]["point"]
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text, country text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_point(username text, orgname text, code text, country text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -32,10 +32,10 @@ RETURNS Geometry AS $$
|
|||||||
return rv[0]["point"]
|
return rv[0]["point"]
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, code text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering _cdb_geocode_postalcode_polygon')
|
plpy.debug('Entering _cdb_geocode_postalcode_polygon')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
@ -48,10 +48,10 @@ RETURNS Geometry AS $$
|
|||||||
return rv[0]["polygon"]
|
return rv[0]["polygon"]
|
||||||
$$ LANGUAGE plpythonu;
|
$$ LANGUAGE plpythonu;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text, country text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_postalcode_polygon(username text, orgname text, code text, country text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
plpy.debug('Entering _cdb_geocode_postalcode_point')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
-- Interface of the server extension
|
-- Interface of the server extension
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(user_id name, user_config json, geocoder_config json, ip text)
|
CREATE OR REPLACE FUNCTION cdb_geocoder_server.cdb_geocode_ipaddress_point(username text, orgname text, ip text)
|
||||||
RETURNS Geometry AS $$
|
RETURNS Geometry AS $$
|
||||||
plpy.debug('Entering _cdb_geocode_ipaddress_point')
|
plpy.debug('Entering _cdb_geocode_ipaddress_point')
|
||||||
plpy.debug('user_id = %s' % user_id)
|
plpy.debug('user = %s' % username)
|
||||||
|
|
||||||
#--TODO: rate limiting check
|
#--TODO: rate limiting check
|
||||||
#--TODO: quota check
|
#--TODO: quota check
|
||||||
|
15
server/extension/sql/0.0.1/90_geocoder_server_user.sql
Normal file
15
server/extension/sql/0.0.1/90_geocoder_server_user.sql
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (
|
||||||
|
SELECT *
|
||||||
|
FROM pg_catalog.pg_user
|
||||||
|
WHERE usename = 'geocoder_api') THEN
|
||||||
|
|
||||||
|
CREATE USER geocoder_api;
|
||||||
|
END IF;
|
||||||
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_geocoder_server TO geocoder_api;
|
||||||
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO geocoder_api;
|
||||||
|
GRANT USAGE ON SCHEMA cdb_geocoder_server TO geocoder_api;
|
||||||
|
GRANT USAGE ON SCHEMA public TO geocoder_api;
|
||||||
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO geocoder_api;
|
||||||
|
END$$;
|
@ -1,6 +1,6 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain');
|
||||||
|
|
||||||
-- Insert some dummy synonym
|
-- Insert some dummy synonym
|
||||||
INSERT INTO admin0_synonyms (name, adm0_a3) VALUES ('Spain', 'ESP');
|
INSERT INTO admin0_synonyms (name, adm0_a3) VALUES ('Spain', 'ESP');
|
||||||
@ -14,7 +14,7 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText(
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_admin0_polygon('test_user', 'test_orgname', 'Spain');
|
||||||
|
|
||||||
-- Check for admin0 signatures
|
-- Check for admin0 signatures
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
@ -22,7 +22,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin0_polygon'
|
AND proname = 'cdb_geocode_admin0_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'California', 'United States');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States');
|
||||||
|
|
||||||
-- Insert dummy data into country decoder table
|
-- Insert dummy data into country decoder table
|
||||||
INSERT INTO country_decoder (synonyms, iso3) VALUES (Array['united states'], 'USA');
|
INSERT INTO country_decoder (synonyms, iso3) VALUES (Array['united states'], 'USA');
|
||||||
@ -15,8 +15,8 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 0, "nokia_soft_geocoder_limit": false}', 'California', 'United States');
|
SELECT cdb_geocoder_server.cdb_geocode_admin1_polygon('test_user', 'test_orgname', 'California', 'United States');
|
||||||
|
|
||||||
-- Check for admin1 signatures
|
-- Check for admin1 signatures
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
@ -24,14 +24,14 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin1_polygon'
|
AND proname = 'cdb_geocode_admin1_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_admin1_polygon'
|
AND proname = 'cdb_geocode_admin1_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain');
|
||||||
|
|
||||||
-- Insert dummy data into points table
|
-- Insert dummy data into points table
|
||||||
INSERT INTO global_cities_points_limited (geoname_id, name, iso2, admin1, admin2, population, lowername, the_geom) VALUES (3128760, 'Elche', 'ES', 'Valencia', 'AL', 34534, 'elche', ST_GeomFromText(
|
INSERT INTO global_cities_points_limited (geoname_id, name, iso2, admin1, admin2, population, lowername, the_geom) VALUES (3128760, 'Elche', 'ES', 'Valencia', 'AL', 34534, 'elche', ST_GeomFromText(
|
||||||
@ -21,12 +21,12 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES');
|
|||||||
INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES');
|
INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES');
|
||||||
|
|
||||||
-- This should return the point inserted above
|
-- This should return the point inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Spain');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'Spain');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elx', 'Valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elx', 'Valencia', 'Spain');
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', 'Elche', 'valencia', 'Spain');
|
SELECT cdb_geocoder_server.cdb_geocode_namedplace_point('test_user', 'test_orgname', 'Elche', 'valencia', 'Spain');
|
||||||
|
|
||||||
-- Check for namedplaces signatures
|
-- Check for namedplaces signatures
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
@ -34,21 +34,21 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_namedplace_point'
|
AND proname = 'cdb_geocode_namedplace_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
|
@ -7,7 +7,7 @@ DELETE FROM admin0_synonyms;
|
|||||||
|
|
||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204');
|
||||||
|
|
||||||
-- Insert dummy data into ip_address_locations
|
-- Insert dummy data into ip_address_locations
|
||||||
INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
INSERT INTO global_postal_code_points (the_geom, iso3, postal_code, postal_code_num) VALUES (
|
||||||
@ -44,13 +44,13 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES (
|
|||||||
);
|
);
|
||||||
|
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204');
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_point('test_user', 'test_org', '03204', 'spain');
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204');
|
||||||
|
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '03204', 'spain');
|
SELECT cdb_geocoder_server.cdb_geocode_postalcode_polygon('test_user', 'test_org', '03204', 'spain');
|
||||||
|
|
||||||
-- Clean dbs
|
-- Clean dbs
|
||||||
DELETE FROM global_postal_code_points;
|
DELETE FROM global_postal_code_points;
|
||||||
@ -65,28 +65,28 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_point'
|
AND proname = 'cdb_geocode_postalcode_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_point'
|
AND proname = 'cdb_geocode_postalcode_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_polygon'
|
AND proname = 'cdb_geocode_postalcode_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_postalcode_polygon'
|
AND proname = 'cdb_geocode_postalcode_polygon'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
-- Check that the public function is callable, even with no data
|
-- Check that the public function is callable, even with no data
|
||||||
-- It should return NULL
|
-- It should return NULL
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0');
|
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0');
|
||||||
|
|
||||||
-- Insert dummy data into ip_address_locations
|
-- Insert dummy data into ip_address_locations
|
||||||
INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326)));
|
INSERT INTO ip_address_locations VALUES ('::ffff:0.0.0.0'::inet, (ST_SetSRID(ST_MakePoint('40.40', '3.71'), 4326)));
|
||||||
|
|
||||||
-- This should return the polygon inserted above
|
-- This should return the polygon inserted above
|
||||||
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point(session_user, '{"is_organization": false, "entity_name": "test_user"}', '{"street_geocoder_provider": "nokia","nokia_monthly_quota": 100, "nokia_soft_geocoder_limit": false}', '0.0.0.0');
|
SELECT cdb_geocoder_server.cdb_geocode_ipaddress_point('test_user', 'test_orgname', '0.0.0.0');
|
||||||
|
|
||||||
-- Check for namedplaces signatures (point and polygon)
|
-- Check for namedplaces signatures (point and polygon)
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
@ -14,7 +14,7 @@ SELECT exists(SELECT *
|
|||||||
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid)
|
||||||
WHERE ns.nspname = 'cdb_geocoder_server'
|
WHERE ns.nspname = 'cdb_geocoder_server'
|
||||||
AND proname = 'cdb_geocode_ipaddress_point'
|
AND proname = 'cdb_geocode_ipaddress_point'
|
||||||
AND oidvectortypes(p.proargtypes) = 'name, json, json, text');
|
AND oidvectortypes(p.proargtypes) = 'text, text, text');
|
||||||
|
|
||||||
SELECT exists(SELECT *
|
SELECT exists(SELECT *
|
||||||
FROM pg_proc p
|
FROM pg_proc p
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_geocoder_server FROM geocoder_api;
|
||||||
|
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA public FROM geocoder_api;
|
||||||
|
REVOKE USAGE ON SCHEMA cdb_geocoder_server FROM geocoder_api;
|
||||||
|
REVOKE USAGE ON SCHEMA public FROM geocoder_api;
|
||||||
|
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM geocoder_api;
|
0
test/__init__.py
Normal file
0
test/__init__.py
Normal file
3
test/fixtures/geocoder_api_test_dataset.csv
vendored
Normal file
3
test/fixtures/geocoder_api_test_dataset.csv
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
id,country,province,city,postalcode,ip
|
||||||
|
1,Spain,Castilla y León,Valladolid,47010,8.8.8.8
|
||||||
|
2,USA,New York,Manhattn,10001,8.8.8.8
|
|
0
test/helpers/__init__.py
Normal file
0
test/helpers/__init__.py
Normal file
58
test/helpers/import_helper.py
Normal file
58
test/helpers/import_helper.py
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
class ImportHelper:
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def import_test_dataset(cls, username, api_key, host):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
url = "https://{0}.{1}/api/v1/imports/"\
|
||||||
|
"?type_guessing=false&api_key={2}".format(
|
||||||
|
username, host, api_key)
|
||||||
|
dataset = {
|
||||||
|
'file': open('fixtures/geocoder_api_test_dataset.csv', 'rb')}
|
||||||
|
response = requests.post(url, files=dataset)
|
||||||
|
response_json = json.loads(response.text)
|
||||||
|
if not response_json['success']:
|
||||||
|
print "Error importing the test dataset: {0}".format(response.text)
|
||||||
|
sys.exit(1)
|
||||||
|
while(True):
|
||||||
|
table_name = ImportHelper.get_imported_table_name(
|
||||||
|
username,
|
||||||
|
host,
|
||||||
|
api_key,
|
||||||
|
response_json['item_queue_id']
|
||||||
|
)
|
||||||
|
if table_name:
|
||||||
|
return table_name
|
||||||
|
else:
|
||||||
|
time.sleep(5)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_imported_table_name(cls, username, host, api_key, import_id):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
import_url = "https://{0}.{1}/api/v1/imports/{2}?api_key={3}".format(
|
||||||
|
username, host, import_id, api_key)
|
||||||
|
import_data_response = requests.get(import_url)
|
||||||
|
if import_data_response.status_code != 200:
|
||||||
|
print "Error getting the table name from " \
|
||||||
|
"the import data: {0}".format(
|
||||||
|
import_data_response.text)
|
||||||
|
sys.exit(1)
|
||||||
|
import_data_json = json.loads(import_data_response.text)
|
||||||
|
|
||||||
|
return import_data_json['table_name']
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def clean_test_dataset(cls, username, api_key, table_name, host):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
url = "https://{0}.{1}/api/v2/sql?q=drop table {2}&api_key={3}".format(
|
||||||
|
username, host, table_name, api_key
|
||||||
|
)
|
||||||
|
response = requests.get(url)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print "Error cleaning the test dataset: {0}".format(response.text)
|
||||||
|
sys.exit(1)
|
32
test/helpers/integration_test_helper.py
Normal file
32
test/helpers/integration_test_helper.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class IntegrationTestHelper:
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_environment_variables(cls):
|
||||||
|
username = os.environ["GEOCODER_API_TEST_USERNAME"]
|
||||||
|
api_key = os.environ["GEOCODER_API_TEST_API_KEY"]
|
||||||
|
host = os.environ["GEOCODER_API_TEST_HOST"]
|
||||||
|
table_name = os.environ["GEOCODER_API_TEST_TABLE_NAME"]
|
||||||
|
|
||||||
|
return {
|
||||||
|
"username": username,
|
||||||
|
"api_key": api_key,
|
||||||
|
"host": host,
|
||||||
|
"table_name": table_name
|
||||||
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def execute_query(cls, sql_api_url, query):
|
||||||
|
requests.packages.urllib3.disable_warnings()
|
||||||
|
query_url = "{0}?q={1}".format(sql_api_url, query)
|
||||||
|
print "Executing query: {0}".format(query_url)
|
||||||
|
query_response = requests.get(query_url)
|
||||||
|
if query_response.status_code != 200:
|
||||||
|
raise Exception(json.loads(query_response.text)['error'])
|
||||||
|
query_response_data = json.loads(query_response.text)
|
||||||
|
|
||||||
|
return query_response_data['rows'][0]['geometry']
|
0
test/integration/__init__.py
Normal file
0
test/integration/__init__.py
Normal file
32
test/integration/test_admin0_functions.py
Normal file
32
test/integration/test_admin0_functions.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
from nose.tools import assert_raises
|
||||||
|
from nose.tools import assert_not_equal, assert_equal
|
||||||
|
from ..helpers.integration_test_helper import IntegrationTestHelper
|
||||||
|
|
||||||
|
|
||||||
|
class TestAdmin0Functions(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.env_variables = IntegrationTestHelper.get_environment_variables()
|
||||||
|
self.sql_api_url = "https://{0}.{1}/api/v2/sql".format(
|
||||||
|
self.env_variables['username'],
|
||||||
|
self.env_variables['host'],
|
||||||
|
self.env_variables['api_key']
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_if_select_with_admin0_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_admin0_polygon(country) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_admin0_without_api_key_raise_error(self):
|
||||||
|
query = "SELECT cdb_geocode_admin0_polygon(country) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1".format(
|
||||||
|
self.env_variables['table_name'])
|
||||||
|
try:
|
||||||
|
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
except Exception as e:
|
||||||
|
assert_equal(e.message[0], "The api_key must be provided")
|
40
test/integration/test_admin1_functions.py
Normal file
40
test/integration/test_admin1_functions.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
from nose.tools import assert_raises
|
||||||
|
from nose.tools import assert_not_equal, assert_equal
|
||||||
|
from ..helpers.integration_test_helper import IntegrationTestHelper
|
||||||
|
|
||||||
|
|
||||||
|
class TestAdmin1Functions(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.env_variables = IntegrationTestHelper.get_environment_variables()
|
||||||
|
self.sql_api_url = "https://{0}.{1}/api/v2/sql".format(
|
||||||
|
self.env_variables['username'],
|
||||||
|
self.env_variables['host'],
|
||||||
|
self.env_variables['api_key']
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_if_select_with_admin1_without_country_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_admin1_polygon(province) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_admin1_with_country_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_admin1_polygon(province,country)" \
|
||||||
|
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_admin1_without_api_key_raise_error(self):
|
||||||
|
query = "SELECT cdb_geocode_admin1_polygon(province) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1".format(
|
||||||
|
self.env_variables['table_name'])
|
||||||
|
try:
|
||||||
|
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
except Exception as e:
|
||||||
|
assert_equal(e.message[0], "The api_key must be provided")
|
32
test/integration/test_ipaddress_functions.py
Normal file
32
test/integration/test_ipaddress_functions.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
from nose.tools import assert_raises
|
||||||
|
from nose.tools import assert_not_equal, assert_equal
|
||||||
|
from ..helpers.integration_test_helper import IntegrationTestHelper
|
||||||
|
|
||||||
|
|
||||||
|
class TestPostalcodeFunctions(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.env_variables = IntegrationTestHelper.get_environment_variables()
|
||||||
|
self.sql_api_url = "https://{0}.{1}/api/v2/sql".format(
|
||||||
|
self.env_variables['username'],
|
||||||
|
self.env_variables['host'],
|
||||||
|
self.env_variables['api_key']
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_if_select_with_ipaddress_point_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_ipaddress_point(ip) " \
|
||||||
|
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_ipaddress_without_api_key_raise_error(self):
|
||||||
|
query = "SELECT cdb_geocode_ipaddress_point(ip) " \
|
||||||
|
"as geometry FROM {0} LIMIT 1".format(
|
||||||
|
self.env_variables['table_name'])
|
||||||
|
try:
|
||||||
|
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
except Exception as e:
|
||||||
|
assert_equal(e.message[0], "The api_key must be provided")
|
48
test/integration/test_namedplace_functions.py
Normal file
48
test/integration/test_namedplace_functions.py
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
from nose.tools import assert_raises
|
||||||
|
from nose.tools import assert_not_equal, assert_equal
|
||||||
|
from ..helpers.integration_test_helper import IntegrationTestHelper
|
||||||
|
|
||||||
|
|
||||||
|
class TestNameplaceFunctions(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.env_variables = IntegrationTestHelper.get_environment_variables()
|
||||||
|
self.sql_api_url = "https://{0}.{1}/api/v2/sql".format(
|
||||||
|
self.env_variables['username'],
|
||||||
|
self.env_variables['host'],
|
||||||
|
self.env_variables['api_key']
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_if_select_with_namedplace_city_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_namedplace_point(city) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_namedplace_city_country_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_namedplace_point(city,country) " \
|
||||||
|
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_namedplace_city_province_country_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_namedplace_point(city,province,country) " \
|
||||||
|
"as geometry FROM {0} LIMIT 1&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_namedplace_without_api_key_raise_error(self):
|
||||||
|
query = "SELECT cdb_geocode_namedplace_point(city) as geometry " \
|
||||||
|
"FROM {0} LIMIT 1".format(
|
||||||
|
self.env_variables['table_name'])
|
||||||
|
try:
|
||||||
|
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
except Exception as e:
|
||||||
|
assert_equal(e.message[0], "The api_key must be provided")
|
40
test/integration/test_postalcode_functions.py
Normal file
40
test/integration/test_postalcode_functions.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
from unittest import TestCase
|
||||||
|
from nose.tools import assert_raises
|
||||||
|
from nose.tools import assert_not_equal, assert_equal
|
||||||
|
from ..helpers.integration_test_helper import IntegrationTestHelper
|
||||||
|
|
||||||
|
|
||||||
|
class TestPostalcodeFunctions(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.env_variables = IntegrationTestHelper.get_environment_variables()
|
||||||
|
self.sql_api_url = "https://{0}.{1}/api/v2/sql".format(
|
||||||
|
self.env_variables['username'],
|
||||||
|
self.env_variables['host'],
|
||||||
|
self.env_variables['api_key']
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_if_select_with_postalcode_polygon_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_postalcode_polygon(postalcode, country) " \
|
||||||
|
"as geometry FROM {0} WHERE country='USA'&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_postalcode_point_is_ok(self):
|
||||||
|
query = "SELECT cdb_geocode_postalcode_point(postalcode, country) " \
|
||||||
|
"as geometry FROM {0} WHERE country='Spain'&api_key={1}".format(
|
||||||
|
self.env_variables['table_name'],
|
||||||
|
self.env_variables['api_key'])
|
||||||
|
geometry = IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
assert_not_equal(geometry, None)
|
||||||
|
|
||||||
|
def test_if_select_with_postalcode_without_api_key_raise_error(self):
|
||||||
|
query = "SELECT cdb_geocode_postalcode_polygon(postalcode, country) " \
|
||||||
|
"as geometry FROM {0} WHERE country = 'USA'".format(
|
||||||
|
self.env_variables['table_name'])
|
||||||
|
try:
|
||||||
|
IntegrationTestHelper.execute_query(self.sql_api_url, query)
|
||||||
|
except Exception as e:
|
||||||
|
assert_equal(e.message[0], "The api_key must be provided")
|
76
test/run_tests.py
Normal file
76
test/run_tests.py
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import getopt
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
from helpers.import_helper import ImportHelper
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
opts, args = getopt.getopt(sys.argv[1:], "h", ["help", "host="])
|
||||||
|
|
||||||
|
if len(args) < 2:
|
||||||
|
usage()
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
host = "cartodb.com"
|
||||||
|
username = args[0]
|
||||||
|
api_key = args[1]
|
||||||
|
table_name = "geocoder_api_test_dataset_".format(int(time.time()))
|
||||||
|
for o, a in opts:
|
||||||
|
if o in ("-h", "--help"):
|
||||||
|
usage()
|
||||||
|
sys.exit()
|
||||||
|
elif o in ("--host"):
|
||||||
|
host = opts[0][1]
|
||||||
|
else:
|
||||||
|
assert False, "unhandled option"
|
||||||
|
|
||||||
|
try:
|
||||||
|
table_name = ImportHelper.import_test_dataset(username, api_key, host)
|
||||||
|
set_environment_variables(username, api_key, table_name, host)
|
||||||
|
execute_tests()
|
||||||
|
except Exception as e:
|
||||||
|
print e.message
|
||||||
|
sys.exit(1)
|
||||||
|
finally:
|
||||||
|
clean_environment_variables()
|
||||||
|
ImportHelper.clean_test_dataset(username, api_key, table_name, host)
|
||||||
|
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
print """Usage: run_tests.py [options] username api_key
|
||||||
|
Options:
|
||||||
|
-h: Show this help
|
||||||
|
--host: take that host as base (by default is cartodb.com)"""
|
||||||
|
|
||||||
|
|
||||||
|
def execute_tests():
|
||||||
|
process = subprocess.Popen(
|
||||||
|
["nosetests", "--where=integration/"],
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stderr=subprocess.PIPE
|
||||||
|
)
|
||||||
|
out, err = process.communicate()
|
||||||
|
print err
|
||||||
|
regexp = re.compile(r'FAILED \(.*\)')
|
||||||
|
if regexp.search(err) is not None:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
def set_environment_variables(username, api_key, table_name, host):
|
||||||
|
os.environ["GEOCODER_API_TEST_USERNAME"] = username
|
||||||
|
os.environ["GEOCODER_API_TEST_API_KEY"] = api_key
|
||||||
|
os.environ["GEOCODER_API_TEST_TABLE_NAME"] = table_name
|
||||||
|
os.environ["GEOCODER_API_TEST_HOST"] = host
|
||||||
|
|
||||||
|
|
||||||
|
def clean_environment_variables():
|
||||||
|
del os.environ["GEOCODER_API_TEST_USERNAME"]
|
||||||
|
del os.environ["GEOCODER_API_TEST_API_KEY"]
|
||||||
|
del os.environ["GEOCODER_API_TEST_TABLE_NAME"]
|
||||||
|
del os.environ["GEOCODER_API_TEST_HOST"]
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user