tests for table relations & bugfix for not detecting child relations of view
This commit is contained in:
Vendored
+87
@@ -210,6 +210,62 @@ CREATE TABLE complex_items (
|
||||
|
||||
ALTER TABLE "1".complex_items OWNER TO postgrest_test;
|
||||
|
||||
--- Structure for testing table relations
|
||||
CREATE TABLE clients(
|
||||
id INT PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
ALTER TABLE "1".clients OWNER TO postgrest_test;
|
||||
|
||||
CREATE TABLE projects(
|
||||
id INT PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
client_id INT REFERENCES clients(id)
|
||||
);
|
||||
ALTER TABLE "1".projects OWNER TO postgrest_test;
|
||||
|
||||
CREATE TABLE tasks(
|
||||
id INT PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
project_id INT REFERENCES projects(id)
|
||||
);
|
||||
ALTER TABLE "1".tasks OWNER TO postgrest_test;
|
||||
|
||||
CREATE TABLE users(
|
||||
id INT PRIMARY KEY NOT NULL,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
ALTER TABLE "1".users OWNER TO postgrest_test;
|
||||
|
||||
CREATE TABLE users_tasks(
|
||||
user_id INT REFERENCES users(id),
|
||||
task_id INT REFERENCES tasks(id),
|
||||
CONSTRAINT task_user PRIMARY KEY (task_id,user_id)
|
||||
);
|
||||
ALTER TABLE "1".users_tasks OWNER TO postgrest_test;
|
||||
|
||||
CREATE TABLE users_projects(
|
||||
user_id INT REFERENCES users(id),
|
||||
project_id INT REFERENCES projects(id),
|
||||
CONSTRAINT project_user PRIMARY KEY (project_id, user_id)
|
||||
);
|
||||
ALTER TABLE "1".users_projects OWNER TO postgrest_test;
|
||||
|
||||
CREATE VIEW "1".projects_view AS
|
||||
SELECT
|
||||
projects.id,
|
||||
projects.name,
|
||||
projects.client_id
|
||||
FROM projects;
|
||||
ALTER TABLE "1".projects_view OWNER TO postgrest_test;
|
||||
------- SAMPLE DATA -----
|
||||
INSERT INTO clients VALUES (1, 'Microsoft'),(2, 'Apple');
|
||||
INSERT INTO projects VALUES (1,'Windows 7', 1),(2,'Windows 10', 1),(3,'IOS', 2),(4,'OSX', 2);
|
||||
INSERT INTO tasks VALUES (1,'Design w7',1),(2,'Code w7',1),(3,'Design w10',2),(4,'Code w10',2),(5,'Design IOS',3),(6,'Code IOS',3),(7,'Design OSX',4),(8,'Code OSX',4);
|
||||
INSERT INTO users VALUES (1, 'Angela Martin'),(2, 'Michael Scott'),(3, 'Dwight Schrute');
|
||||
INSERT INTO users_projects VALUES(1,1),(1,2),(2,3),(2,4),(3,1),(3,3);
|
||||
INSERT INTO users_tasks VALUES(1,1),(1,2),(1,3),(1,4),(2,5),(2,6),(2,7),(3,1),(3,5);
|
||||
----------------
|
||||
|
||||
CREATE SEQUENCE items_id_seq
|
||||
START WITH 1
|
||||
@@ -555,6 +611,37 @@ REVOKE ALL ON TABLE complex_items FROM postgrest_test;
|
||||
GRANT ALL ON TABLE complex_items TO postgrest_test;
|
||||
GRANT ALL ON TABLE complex_items TO postgrest_anonymous;
|
||||
|
||||
---------
|
||||
REVOKE ALL ON TABLE clients FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE clients FROM postgrest_test;
|
||||
GRANT ALL ON TABLE clients TO postgrest_test;
|
||||
GRANT ALL ON TABLE clients TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE projects FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE projects FROM postgrest_test;
|
||||
GRANT ALL ON TABLE projects TO postgrest_test;
|
||||
GRANT ALL ON TABLE projects TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE tasks FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE tasks FROM postgrest_test;
|
||||
GRANT ALL ON TABLE tasks TO postgrest_test;
|
||||
GRANT ALL ON TABLE tasks TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE users FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE users FROM postgrest_test;
|
||||
GRANT ALL ON TABLE users TO postgrest_test;
|
||||
GRANT ALL ON TABLE users TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE users_tasks FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE users_tasks FROM postgrest_test;
|
||||
GRANT ALL ON TABLE users_tasks TO postgrest_test;
|
||||
GRANT ALL ON TABLE users_tasks TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE users_projects FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE users_projects FROM postgrest_test;
|
||||
GRANT ALL ON TABLE users_projects TO postgrest_test;
|
||||
GRANT ALL ON TABLE users_projects TO postgrest_anonymous;
|
||||
REVOKE ALL ON TABLE projects_view FROM PUBLIC;
|
||||
REVOKE ALL ON TABLE projects_view FROM postgrest_test;
|
||||
GRANT ALL ON TABLE projects_view TO postgrest_test;
|
||||
GRANT ALL ON TABLE projects_view TO postgrest_anonymous;
|
||||
---------
|
||||
|
||||
|
||||
REVOKE ALL ON FUNCTION getitemrange(bigint, bigint) FROM PUBLIC;
|
||||
REVOKE ALL ON FUNCTION getitemrange(bigint, bigint) FROM postgrest_test;
|
||||
|
||||
Reference in New Issue
Block a user