diff --git a/server/extension/expected/00_install_test.out b/server/extension/expected/00_install_test.out index 6098385..b386bec 100644 --- a/server/extension/expected/00_install_test.out +++ b/server/extension/expected/00_install_test.out @@ -6,6 +6,13 @@ CREATE EXTENSION cartodb; CREATE EXTENSION cdb_geocoder; -- Install the extension CREATE EXTENSION cdb_geocoder_server; +-- Mock the redis server connection to point to this very test db +SELECT cartodb.cdb_conf_setconf('redis_conf', '{"sentinel_host": "localhost", "sentinel_port": 26739, "sentinel_master_id": "mymaster", "timeout": 0.1, "redis_db": 5}'); + cdb_conf_setconf +------------------ + +(1 row) + -- Mock the varnish invalidation function -- (used by cdb_geocoder tests) CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ diff --git a/server/extension/expected/10_config_test.out b/server/extension/expected/10_config_test.out index 4129cbc..2472a1a 100644 --- a/server/extension/expected/10_config_test.out +++ b/server/extension/expected/10_config_test.out @@ -1,21 +1,21 @@ -- Create a conf table -SELECT cdb_geocoder_server._config_set('cds', '{"Manolo Escobar": {"El Limonero":"En stock", "Viva el vino":"Sin stock"}}'); - _config_set -------------- +SELECT cartodb.cdb_conf_setconf('cds', '{"Manolo Escobar": {"El Limonero":"En stock", "Viva el vino":"Sin stock"}}'); + cdb_conf_setconf +------------------ (1 row) -- Test key retrieval -SELECT cdb_geocoder_server._config_get('cds'); - _config_get +SELECT cartodb.cdb_conf_getconf('cds'); + cdb_conf_getconf ---------------------------------------------------------------------------- {"Manolo Escobar": {"El Limonero":"En stock", "Viva el vino":"Sin stock"}} (1 row) -- Test returns NULL if key doesn't exist -SELECT cdb_geocoder_server._config_get('no existe'); - _config_get -------------- +SELECT cartodb.cdb_conf_getconf('no existe'); + cdb_conf_getconf +------------------ (1 row) diff --git a/server/extension/expected/30_admin0_test.out b/server/extension/expected/30_admin0_test.out index 4b455a5..2ce7cff 100644 --- a/server/extension/expected/30_admin0_test.out +++ b/server/extension/expected/30_admin0_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_admin0_polygon(session_user, txid_current(), 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_admin0_polygon ------------------------ @@ -16,9 +16,32 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_admin0_polygon(session_user, txid_current(), 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_admin0_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 (1 row) +-- Check for admin0 signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin0_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin0_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + diff --git a/server/extension/expected/40_admin1_test.out b/server/extension/expected/40_admin1_test.out index 7bb29c6..1967425 100644 --- a/server/extension/expected/40_admin1_test.out +++ b/server/extension/expected/40_admin1_test.out @@ -1,12 +1,12 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California'); +SELECT cdb_geocoder_server.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'); geocode_admin1_polygon ------------------------ (1 row) -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California', 'United States'); +SELECT cdb_geocoder_server.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'); geocode_admin1_polygon ------------------------ @@ -22,15 +22,60 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c -71.1031880899493 42.3152774590236))',4326) ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California'); +SELECT cdb_geocoder_server.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'); geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 (1 row) -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California', 'United States'); +SELECT cdb_geocoder_server.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'); geocode_admin1_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0103000020E61000000100000004000000D0EA37A29AC651C00FD603035B284540FEFCFB379AC651C0C0503E9F5B284540FFDDDD4D96C651C033AC3B284F284540D0EA37A29AC651C00FD603035B284540 (1 row) +-- Check for admin1 signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text'); + exists +-------- + t +(1 row) + diff --git a/server/extension/expected/50_namedplaces_test.out b/server/extension/expected/50_namedplaces_test.out index 296a6dc..75ec79a 100644 --- a/server/extension/expected/50_namedplaces_test.out +++ b/server/extension/expected/50_namedplaces_test.out @@ -1,18 +1,18 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point -------------------------- (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point -------------------------- (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point -------------------------- @@ -31,39 +31,106 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); -- Insert dummy data into admin1 decoder table INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.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'); geocode_namedplace_point ---------------------------------------------------- 0101000020E6100000637FD93D7958E63F2ECA6C9049A24340 (1 row) +-- Check for namedplaces signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text, text'); + exists +-------- + t +(1 row) + diff --git a/server/extension/expected/60_postalcodes_test.out b/server/extension/expected/60_postalcodes_test.out index f777d2b..b9c3bf9 100644 --- a/server/extension/expected/60_postalcodes_test.out +++ b/server/extension/expected/60_postalcodes_test.out @@ -6,7 +6,7 @@ DELETE FROM available_services; DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_postalcode_point(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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'); geocode_postalcode_point -------------------------- @@ -42,25 +42,25 @@ INSERT INTO admin0_synonyms (adm0_a3, name, name_, rank) VALUES ( 3 ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_postalcode_point(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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'); geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.geocode_postalcode_point(session_user, txid_current(), '03204', 'spain'); +SELECT cdb_geocoder_server.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'); geocode_postalcode_point ---------------------------------------------------- 0101000020E61000000000000000E040408036B47414764840 (1 row) -SELECT cdb_geocoder_server.geocode_postalcode_polygon(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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'); geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 (1 row) -SELECT cdb_geocoder_server.geocode_postalcode_polygon(session_user, txid_current(), '03204', 'spain'); +SELECT cdb_geocoder_server.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'); geocode_postalcode_polygon -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0106000020E610000001000000010300000001000000040000000000000000E000C01F383D7839B740400000000000E000C0AA3C0EDE220F3B4000000000004812404FB7FCCD04893D400000000000E000C01F383D7839B74040 @@ -72,3 +72,92 @@ DELETE FROM global_postal_code_polygons; DELETE FROM country_decoder; DELETE FROM available_services; DELETE FROM admin0_synonyms; +-- Check for namedplaces signatures (point and polygon) +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'text, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text'); + exists +-------- + t +(1 row) + diff --git a/server/extension/expected/70_ips_test.out b/server/extension/expected/70_ips_test.out index fb24a88..bc9bbb5 100644 --- a/server/extension/expected/70_ips_test.out +++ b/server/extension/expected/70_ips_test.out @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_ip_point(session_user, txid_current(), '0.0.0.0'); +SELECT cdb_geocoder_server.geocode_ip_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'); geocode_ip_point ------------------ @@ -9,9 +9,32 @@ SELECT cdb_geocoder_server.geocode_ip_point(session_user, txid_current(), '0.0.0 -- 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))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_ip_point(session_user, txid_current(), '0.0.0.0'); +SELECT cdb_geocoder_server.geocode_ip_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'); geocode_ip_point ---------------------------------------------------- 0101000020E61000003333333333334440AE47E17A14AE0D40 (1 row) +-- Check for namedplaces signatures (point and polygon) +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_ip_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + exists +-------- + t +(1 row) + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_ip_point' + AND oidvectortypes(p.proargtypes) = 'text'); + exists +-------- + t +(1 row) + diff --git a/server/extension/sql/0.0.1/40_admin1.sql b/server/extension/sql/0.0.1/40_admin1.sql index f243eec..855acf4 100644 --- a/server/extension/sql/0.0.1/40_admin1.sql +++ b/server/extension/sql/0.0.1/40_admin1.sql @@ -1,7 +1,7 @@ -- Interfacess of the server extension ---- geocode_admin1_polygon(admin1_name text) -CREATE OR REPLACE FUNCTION geocode_admin1_polygon(user_id name, tx_id bigint, admin1_name text) +CREATE OR REPLACE FUNCTION geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text) RETURNS Geometry AS $$ plpy.debug('Entering geocode_admin1_polygon(admin1_name text)') plpy.debug('user_id = %s' % user_id) @@ -23,7 +23,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- geocode_admin1_polygon(admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION geocode_admin1_polygon(user_id name, tx_id bigint, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION geocode_admin1_polygon(user_id name, user_config json, geocoder_config json, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering geocode_admin1_polygon(admin1_name text, country_name text)') plpy.debug('user_id = %s' % user_id) diff --git a/server/extension/sql/0.0.1/50_namedplaces.sql b/server/extension/sql/0.0.1/50_namedplaces.sql index 5a72421..a7ef36d 100644 --- a/server/extension/sql/0.0.1/50_namedplaces.sql +++ b/server/extension/sql/0.0.1/50_namedplaces.sql @@ -1,7 +1,7 @@ -- Interfacess of the server extension ---- geocode_namedplace_point(city_name text) -CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, tx_id bigint, city_name text) +CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text) RETURNS Geometry AS $$ plpy.debug('Entering geocode_namedplace_point(city_name text)') plpy.debug('user_id = %s' % user_id) @@ -23,7 +23,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- geocode_namedplace_point(city_name text, country_name text) -CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, tx_id bigint, city_name text, country_name text) +CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering geocode_namedplace_point(city_name text, country_name text)') plpy.debug('user_id = %s' % user_id) @@ -45,7 +45,7 @@ RETURNS Geometry AS $$ $$ LANGUAGE plpythonu; ---- geocode_namedplace_point(city_name text, admin1_name text, country_name text) -CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, tx_id bigint, city_name text, admin1_name text, country_name text) +CREATE OR REPLACE FUNCTION geocode_namedplace_point(user_id name, user_config json, geocoder_config json, city_name text, admin1_name text, country_name text) RETURNS Geometry AS $$ plpy.debug('Entering geocode_namedplace_point(city_name text, admin1_name text, country_name text)') plpy.debug('user_id = %s' % user_id) diff --git a/server/extension/sql/0.0.1/60_postalcodes.sql b/server/extension/sql/0.0.1/60_postalcodes.sql index ca76a8d..b18fc5a 100644 --- a/server/extension/sql/0.0.1/60_postalcodes.sql +++ b/server/extension/sql/0.0.1/60_postalcodes.sql @@ -2,7 +2,7 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION geocode_postalcode_point(user_id NAME, tx_id BIGINT, code text) +CREATE OR REPLACE FUNCTION geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text) RETURNS Geometry AS $$ plpy.debug('Entering _geocode_postalcode_point') plpy.debug('user_id = %s' % user_id) @@ -23,7 +23,7 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION geocode_postalcode_point(user_id NAME, tx_id BIGINT, code text, country text) +CREATE OR REPLACE FUNCTION geocode_postalcode_point(user_id name, user_config json, geocoder_config json, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _geocode_postalcode_point') plpy.debug('user_id = %s' % user_id) @@ -44,7 +44,7 @@ RETURNS Geometry AS $$ return rv[0]["point"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION geocode_postalcode_polygon(user_id NAME, tx_id BIGINT, code text) +CREATE OR REPLACE FUNCTION geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text) RETURNS Geometry AS $$ plpy.debug('Entering _geocode_postalcode_polygon') plpy.debug('user_id = %s' % user_id) @@ -65,7 +65,7 @@ RETURNS Geometry AS $$ return rv[0]["polygon"] $$ LANGUAGE plpythonu; -CREATE OR REPLACE FUNCTION geocode_postalcode_polygon(user_id NAME, tx_id BIGINT, code text, country text) +CREATE OR REPLACE FUNCTION geocode_postalcode_polygon(user_id name, user_config json, geocoder_config json, code text, country text) RETURNS Geometry AS $$ plpy.debug('Entering _geocode_postalcode_point') plpy.debug('user_id = %s' % user_id) diff --git a/server/extension/sql/0.0.1/70_ips.sql b/server/extension/sql/0.0.1/70_ips.sql index cb26833..0e8cf5d 100644 --- a/server/extension/sql/0.0.1/70_ips.sql +++ b/server/extension/sql/0.0.1/70_ips.sql @@ -1,6 +1,6 @@ -- Interface of the server extension -CREATE OR REPLACE FUNCTION geocode_ip_point(user_id NAME, tx_id BIGINT, ip TEXT) +CREATE OR REPLACE FUNCTION geocode_ip_point(user_id name, user_config json, geocoder_config json, ip text) RETURNS Geometry AS $$ plpy.debug('Entering _geocode_ip_point') plpy.debug('user_id = %s' % user_id) @@ -26,7 +26,7 @@ $$ LANGUAGE plpythonu; -- Implementation of the server extension -- Note: these functions depend on the cdb_geocoder extension -CREATE OR REPLACE FUNCTION _geocode_ip_point(ip TEXT) +CREATE OR REPLACE FUNCTION _geocode_ip_point(ip text) RETURNS Geometry AS $$ DECLARE ret Geometry; diff --git a/server/extension/sql/00_install_test.sql b/server/extension/sql/00_install_test.sql index 78c2da6..8feac25 100644 --- a/server/extension/sql/00_install_test.sql +++ b/server/extension/sql/00_install_test.sql @@ -8,6 +8,9 @@ CREATE EXTENSION cdb_geocoder; -- Install the extension CREATE EXTENSION cdb_geocoder_server; +-- Mock the redis server connection to point to this very test db +SELECT cartodb.cdb_conf_setconf('redis_conf', '{"sentinel_host": "localhost", "sentinel_port": 26739, "sentinel_master_id": "mymaster", "timeout": 0.1, "redis_db": 5}'); + -- Mock the varnish invalidation function -- (used by cdb_geocoder tests) CREATE OR REPLACE FUNCTION public.cdb_invalidate_varnish(table_name text) RETURNS void AS $$ diff --git a/server/extension/sql/10_config_test.sql b/server/extension/sql/10_config_test.sql index 1dd0dbc..93854a7 100644 --- a/server/extension/sql/10_config_test.sql +++ b/server/extension/sql/10_config_test.sql @@ -1,8 +1,8 @@ -- Create a conf table -SELECT cdb_geocoder_server._config_set('cds', '{"Manolo Escobar": {"El Limonero":"En stock", "Viva el vino":"Sin stock"}}'); +SELECT cartodb.cdb_conf_setconf('cds', '{"Manolo Escobar": {"El Limonero":"En stock", "Viva el vino":"Sin stock"}}'); -- Test key retrieval -SELECT cdb_geocoder_server._config_get('cds'); +SELECT cartodb.cdb_conf_getconf('cds'); -- Test returns NULL if key doesn't exist -SELECT cdb_geocoder_server._config_get('no existe'); +SELECT cartodb.cdb_conf_getconf('no existe'); diff --git a/server/extension/sql/30_admin0_test.sql b/server/extension/sql/30_admin0_test.sql index 5ab9248..7a00717 100644 --- a/server/extension/sql/30_admin0_test.sql +++ b/server/extension/sql/30_admin0_test.sql @@ -1,6 +1,6 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_admin0_polygon(session_user, txid_current(), 'Spain'); +SELECT cdb_geocoder_server.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'); -- Insert some dummy synonym INSERT INTO admin0_synonyms (name, adm0_a3) VALUES ('Spain', 'ESP'); @@ -14,4 +14,19 @@ INSERT INTO ne_admin0_v3 (adm0_a3, the_geom) VALUES('ESP', ST_GeomFromText( ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_admin0_polygon(session_user, txid_current(), 'Spain'); +SELECT cdb_geocoder_server.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'); + +-- Check for admin0 signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin0_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin0_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); \ No newline at end of file diff --git a/server/extension/sql/40_admin1_test.sql b/server/extension/sql/40_admin1_test.sql index f84d548..8ed4acb 100644 --- a/server/extension/sql/40_admin1_test.sql +++ b/server/extension/sql/40_admin1_test.sql @@ -1,7 +1,7 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California'); -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California', 'United States'); +SELECT cdb_geocoder_server.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.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'); -- Insert dummy data into country decoder table INSERT INTO country_decoder (synonyms, iso3) VALUES (Array['united states'], 'USA'); @@ -15,10 +15,34 @@ INSERT INTO global_province_polygons (synonyms, iso3, the_geom) VALUES (Array['c ); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California'); -SELECT cdb_geocoder_server.geocode_admin1_polygon(session_user, txid_current(), 'California', 'United States'); - +SELECT cdb_geocoder_server.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.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'); +-- Check for admin1 signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_admin1_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text'); \ No newline at end of file diff --git a/server/extension/sql/50_namedplaces_test.sql b/server/extension/sql/50_namedplaces_test.sql index 25ace2e..8dadee5 100644 --- a/server/extension/sql/50_namedplaces_test.sql +++ b/server/extension/sql/50_namedplaces_test.sql @@ -1,8 +1,8 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Spain'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Valencia', 'Spain'); +SELECT cdb_geocoder_server.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.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.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'); -- 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( @@ -21,9 +21,52 @@ INSERT INTO country_decoder (synonyms, iso2) VALUES (Array['spain'], 'ES'); INSERT INTO admin1_decoder (admin1, synonyms, iso2) VALUES ('Valencia', Array['valencia', 'Valencia'], 'ES'); -- This should return the point inserted above -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Spain'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche', 'Spain'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elx', 'Valencia', 'Spain'); -SELECT cdb_geocoder_server.geocode_namedplace_point(session_user, txid_current(), 'Elche', 'valencia', 'Spain'); +SELECT cdb_geocoder_server.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.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.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.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.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.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'); + +-- Check for namedplaces signatures +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_namedplace_point' + AND oidvectortypes(p.proargtypes) = 'text, text, text'); \ No newline at end of file diff --git a/server/extension/sql/60_postalcodes_test.sql b/server/extension/sql/60_postalcodes_test.sql index f822d0f..a5ba28c 100644 --- a/server/extension/sql/60_postalcodes_test.sql +++ b/server/extension/sql/60_postalcodes_test.sql @@ -7,7 +7,7 @@ DELETE FROM admin0_synonyms; -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_postalcode_point(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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'); -- Insert dummy data into ip_address_locations 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 -SELECT cdb_geocoder_server.geocode_postalcode_point(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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.geocode_postalcode_point(session_user, txid_current(), '03204', 'spain'); +SELECT cdb_geocoder_server.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.geocode_postalcode_polygon(session_user, txid_current(), '03204'); +SELECT cdb_geocoder_server.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.geocode_postalcode_polygon(session_user, txid_current(), '03204', 'spain'); +SELECT cdb_geocoder_server.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'); -- Clean dbs DELETE FROM global_postal_code_points; @@ -58,3 +58,60 @@ DELETE FROM global_postal_code_polygons; DELETE FROM country_decoder; DELETE FROM available_services; DELETE FROM admin0_synonyms; + +-- Check for namedplaces signatures (point and polygon) +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_point' + AND oidvectortypes(p.proargtypes) = 'text, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_postalcode_polygon' + AND oidvectortypes(p.proargtypes) = 'text, text'); \ No newline at end of file diff --git a/server/extension/sql/70_ips_test.sql b/server/extension/sql/70_ips_test.sql index a53b6bf..73989a9 100644 --- a/server/extension/sql/70_ips_test.sql +++ b/server/extension/sql/70_ips_test.sql @@ -1,9 +1,24 @@ -- Check that the public function is callable, even with no data -- It should return NULL -SELECT cdb_geocoder_server.geocode_ip_point(session_user, txid_current(), '0.0.0.0'); +SELECT cdb_geocoder_server.geocode_ip_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'); -- 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))); -- This should return the polygon inserted above -SELECT cdb_geocoder_server.geocode_ip_point(session_user, txid_current(), '0.0.0.0'); +SELECT cdb_geocoder_server.geocode_ip_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'); + +-- Check for namedplaces signatures (point and polygon) +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = 'geocode_ip_point' + AND oidvectortypes(p.proargtypes) = 'name, json, json, text'); + +SELECT exists(SELECT * + FROM pg_proc p + INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid) + WHERE ns.nspname = 'cdb_geocoder_server' + AND proname = '_geocode_ip_point' + AND oidvectortypes(p.proargtypes) = 'text'); \ No newline at end of file