Merge branch 'master' of github.com:Vizzuality/CartoDB-SQL-API
This commit is contained in:
commit
f50522d72c
10
test/README.md
Normal file
10
test/README.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cartodb-sql-api tests
|
||||||
|
--
|
||||||
|
|
||||||
|
Tests require you create a test database and set some redis keys before, you can execute prepare_db.sh script, it will create database, users and redis stuff for you. Be sure postgres and redis are running
|
||||||
|
|
||||||
|
> cd test && ./prepare_db.sh
|
||||||
|
|
||||||
|
once database is configured, run the tests with expresso:
|
||||||
|
|
||||||
|
> expresso test/acceptance/app.test.js
|
@ -20,6 +20,8 @@ var app = require(global.settings.app_root + '/app/controllers/app')
|
|||||||
|
|
||||||
var real_oauth_header = 'OAuth realm="http://vizzuality.testhost.lan/",oauth_consumer_key="fZeNGv5iYayvItgDYHUbot1Ukb5rVyX6QAg8GaY2",oauth_token="l0lPbtP68ao8NfStCiA3V3neqfM03JKhToxhUQTR",oauth_signature_method="HMAC-SHA1", oauth_signature="o4hx4hWP6KtLyFwggnYB4yPK8xI%3D",oauth_timestamp="1313581372",oauth_nonce="W0zUmvyC4eVL8cBd4YwlH1nnPTbxW0QBYcWkXTwe4",oauth_version="1.0"';
|
var real_oauth_header = 'OAuth realm="http://vizzuality.testhost.lan/",oauth_consumer_key="fZeNGv5iYayvItgDYHUbot1Ukb5rVyX6QAg8GaY2",oauth_token="l0lPbtP68ao8NfStCiA3V3neqfM03JKhToxhUQTR",oauth_signature_method="HMAC-SHA1", oauth_signature="o4hx4hWP6KtLyFwggnYB4yPK8xI%3D",oauth_timestamp="1313581372",oauth_nonce="W0zUmvyC4eVL8cBd4YwlH1nnPTbxW0QBYcWkXTwe4",oauth_version="1.0"';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tests['GET /api/v1/sql'] = function(){
|
tests['GET /api/v1/sql'] = function(){
|
||||||
assert.response(app, {
|
assert.response(app, {
|
||||||
url: '/api/v1/sql',
|
url: '/api/v1/sql',
|
||||||
@ -30,15 +32,17 @@ tests['GET /api/v1/sql'] = function(){
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
tests['GET /api/v1/sql with SQL parameter on SELECT only. No oAuth included '] = function(){
|
tests['GET /api/v1/sql with SQL parameter on SELECT only. No oAuth included '] = function(){
|
||||||
assert.response(app, {
|
assert.response(app, {
|
||||||
url: '/api/v1/sql?q=SELECT%20*%20FROM%20untitle_table_4&database=cartodb_dev_user_1_db',
|
url: '/api/v1/sql?q=SELECT%20*%20FROM%20untitle_table_4&database=cartodb_test_user_1_db',
|
||||||
method: 'GET'
|
method: 'GET'
|
||||||
},{
|
},{
|
||||||
status: 200
|
status: 200
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
tests['GET /api/v1/sql with SQL parameter on SELECT only. no database param, just id using headers'] = function(){
|
tests['GET /api/v1/sql with SQL parameter on SELECT only. no database param, just id using headers'] = function(){
|
||||||
assert.response(app, {
|
assert.response(app, {
|
||||||
url: '/api/v1/sql?q=SELECT%20*%20FROM%20untitle_table_4',
|
url: '/api/v1/sql?q=SELECT%20*%20FROM%20untitle_table_4',
|
||||||
@ -49,6 +53,8 @@ tests['GET /api/v1/sql with SQL parameter on SELECT only. no database param, jus
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tests['POST /api/v1/sql with SQL parameter on SELECT only. no database param, just id using headers'] = function(){
|
tests['POST /api/v1/sql with SQL parameter on SELECT only. no database param, just id using headers'] = function(){
|
||||||
assert.response(app, {
|
assert.response(app, {
|
||||||
url: '/api/v1/sql',
|
url: '/api/v1/sql',
|
||||||
@ -97,3 +103,4 @@ tests['GET /api/v1/sql with SQL parameter on DROP DATABASE only.header based db
|
|||||||
status: 400
|
status: 400
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
16
test/prepare_db.sh
Executable file
16
test/prepare_db.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# this script prepare database and redis instance to run accpetance test
|
||||||
|
|
||||||
|
echo "preparing redis..."
|
||||||
|
echo "HSET rails:users:vizzuality id 1" | redis-cli -n 5
|
||||||
|
echo "HSET rails:users:vizzuality database_name cartodb_test_user_1_db" | redis-cli -n 5
|
||||||
|
|
||||||
|
echo "preparing postgres..."
|
||||||
|
dropdb -Upostgres -hlocalhost cartodb_test_user_1_db
|
||||||
|
createdb -Upostgres -hlocalhost -Ttemplate_postgis -Opostgres -EUTF8 cartodb_test_user_1_db
|
||||||
|
psql -Upostgres -hlocalhost cartodb_test_user_1_db < test.sql
|
||||||
|
|
||||||
|
echo "ok, you can run test now"
|
||||||
|
|
||||||
|
|
69
test/test.sql
Normal file
69
test/test.sql
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
--
|
||||||
|
-- sql-api test database
|
||||||
|
--
|
||||||
|
-- To use:
|
||||||
|
--
|
||||||
|
-- > dropdb -Upostgres -hlocalhost cartodb_test_user_1_db
|
||||||
|
-- > createdb -Upostgres -hlocalhost -Ttemplate_postgis -Opostgres -EUTF8 cartodb_test_user_1_db
|
||||||
|
-- > psql -Upostgres -hlocalhost cartodb_test_user_1_db < test.sql
|
||||||
|
--
|
||||||
|
-- NOTE: requires a postgis template called template_postgis
|
||||||
|
--
|
||||||
|
|
||||||
|
SET statement_timeout = 0;
|
||||||
|
SET client_encoding = 'UTF8';
|
||||||
|
SET standard_conforming_strings = off;
|
||||||
|
SET check_function_bodies = false;
|
||||||
|
SET client_min_messages = warning;
|
||||||
|
SET escape_string_warning = off;
|
||||||
|
SET search_path = public, pg_catalog;
|
||||||
|
SET default_tablespace = '';
|
||||||
|
SET default_with_oids = false;
|
||||||
|
|
||||||
|
|
||||||
|
-- first table
|
||||||
|
CREATE TABLE untitle_table_4 (
|
||||||
|
updated_at timestamp without time zone DEFAULT now(),
|
||||||
|
created_at timestamp without time zone DEFAULT now(),
|
||||||
|
cartodb_id integer NOT NULL,
|
||||||
|
name character varying,
|
||||||
|
address character varying,
|
||||||
|
the_geom geometry,
|
||||||
|
the_geom_webmercator geometry,
|
||||||
|
CONSTRAINT enforce_dims_the_geom CHECK ((st_ndims(the_geom) = 2)),
|
||||||
|
CONSTRAINT enforce_dims_the_geom_webmercator CHECK ((st_ndims(the_geom_webmercator) = 2)),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom CHECK (((geometrytype(the_geom) = 'POINT'::text) OR (the_geom IS NULL))),
|
||||||
|
CONSTRAINT enforce_geotype_the_geom_webmercator CHECK (((geometrytype(the_geom_webmercator) = 'POINT'::text) OR (the_geom_webmercator IS NULL))),
|
||||||
|
CONSTRAINT enforce_srid_the_geom CHECK ((st_srid(the_geom) = 4326)),
|
||||||
|
CONSTRAINT enforce_srid_the_geom_webmercator CHECK ((st_srid(the_geom_webmercator) = 3857))
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE SEQUENCE test_table_cartodb_id_seq
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
|
CACHE 1;
|
||||||
|
|
||||||
|
ALTER SEQUENCE test_table_cartodb_id_seq OWNED BY untitle_table_4.cartodb_id;
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('test_table_cartodb_id_seq', 60, true);
|
||||||
|
|
||||||
|
ALTER TABLE untitle_table_4 ALTER COLUMN cartodb_id SET DEFAULT nextval('test_table_cartodb_id_seq'::regclass);
|
||||||
|
|
||||||
|
INSERT INTO untitle_table_4 VALUES ('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.314252', 1, 'Hawai', 'Calle de Pérez Galdós 9, Madrid, Spain', '0101000020E6100000A6B73F170D990DC064E8D84125364440', '0101000020110F000076491621312319C122D4663F1DCC5241');
|
||||||
|
INSERT INTO untitle_table_4 VALUES ('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.319101', 2, 'El Estocolmo', 'Calle de la Palma 72, Madrid, Spain', '0101000020E6100000C90567F0F7AB0DC0AB07CC43A6364440', '0101000020110F0000C4356B29423319C15DD1092DADCC5241');
|
||||||
|
INSERT INTO untitle_table_4 VALUES ('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.324', 3, 'El Rey del Tallarín', 'Plaza Conde de Toreno 2, Madrid, Spain', '0101000020E610000021C8410933AD0DC0CB0EF10F5B364440', '0101000020110F000053E71AC64D3419C10F664E4659CC5241');
|
||||||
|
INSERT INTO untitle_table_4 VALUES ('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.329509', 4, 'El Lacón', 'Manuel Fernández y González 8, Madrid, Spain', '0101000020E6100000BC5983F755990DC07D923B6C22354440', '0101000020110F00005DACDB056F2319C1EC41A980FCCA5241');
|
||||||
|
INSERT INTO untitle_table_4 VALUES ('2011-09-21 14:02:21.358706', '2011-09-21 14:02:21.334931', 5, 'El Pico', 'Calle Divino Pastor 12, Madrid, Spain', '0101000020E61000003B6D8D08C6A10DC0371B2B31CF364440', '0101000020110F00005F716E91992A19C17DAAA4D6DACC5241');
|
||||||
|
|
||||||
|
ALTER TABLE ONLY untitle_table_4 ADD CONSTRAINT test_table_pkey PRIMARY KEY (cartodb_id);
|
||||||
|
|
||||||
|
CREATE INDEX test_table_the_geom_idx ON untitle_table_4 USING gist (the_geom);
|
||||||
|
CREATE INDEX test_table_the_geom_webmercator_idx ON untitle_table_4 USING gist (the_geom_webmercator);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE USER publicuser WITH PASSWORD '';
|
||||||
|
|
||||||
|
GRANT SELECT ON TABLE untitle_table_4 TO publicuser;
|
Loading…
Reference in New Issue
Block a user