From f203982527f86bb89ad482105698aa33b159079c Mon Sep 17 00:00:00 2001 From: "Adam C. Baker" Date: Fri, 26 Sep 2014 16:58:33 -0700 Subject: [PATCH] have test fixtures load roles too. --- test/Main.hs | 1 + test/fixtures/roles.sql | 3 ++ test/fixtures/schema.sql | 93 ++++++++++++++++++++++++---------------- 3 files changed, 60 insertions(+), 37 deletions(-) create mode 100644 test/fixtures/roles.sql diff --git a/test/Main.hs b/test/Main.hs index b6a225fea..1d0cef1e6 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -11,5 +11,6 @@ main = do runRaw c "drop schema if exists \"1\" cascade" runRaw c "drop schema if exists dbapi cascade" loadFixture "schema" c + loadFixture "roles" c disconnect c hspec spec diff --git a/test/fixtures/roles.sql b/test/fixtures/roles.sql new file mode 100644 index 000000000..6fa61bf11 --- /dev/null +++ b/test/fixtures/roles.sql @@ -0,0 +1,3 @@ +select create_role_if_not_exists('dbapi'); +select create_role_if_not_exists('dbapi_anonymous'); +select create_role_if_not_exists('test_default_role'); diff --git a/test/fixtures/schema.sql b/test/fixtures/schema.sql index 2786e92ce..15fbc5314 100644 --- a/test/fixtures/schema.sql +++ b/test/fixtures/schema.sql @@ -4,7 +4,7 @@ -- Dumped from database version 9.3.4 -- Dumped by pg_dump version 9.3.4 --- Started on 2014-09-25 16:21:25 PDT +-- Started on 2014-09-26 16:36:21 PDT SET statement_timeout = 0; SET lock_timeout = 0; @@ -14,7 +14,7 @@ SET check_function_bodies = false; SET client_min_messages = warning; -- --- TOC entry 6 (class 2615 OID 46226) +-- TOC entry 6 (class 2615 OID 46679) -- Name: 1; Type: SCHEMA; Schema: -; Owner: - -- @@ -22,7 +22,7 @@ CREATE SCHEMA "1"; -- --- TOC entry 7 (class 2615 OID 46227) +-- TOC entry 7 (class 2615 OID 46680) -- Name: dbapi; Type: SCHEMA; Schema: -; Owner: - -- @@ -38,7 +38,7 @@ CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; -- --- TOC entry 2000 (class 0 OID 0) +-- TOC entry 2001 (class 0 OID 0) -- Dependencies: 181 -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - -- @@ -49,7 +49,7 @@ COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; SET search_path = dbapi, pg_catalog; -- --- TOC entry 194 (class 1255 OID 46295) +-- TOC entry 194 (class 1255 OID 46681) -- Name: check_role_exists(); Type: FUNCTION; Schema: dbapi; Owner: - -- @@ -66,6 +66,25 @@ end $$; +-- +-- TOC entry 195 (class 1255 OID 46740) +-- Name: create_role_if_not_exists(name); Type: FUNCTION; Schema: dbapi; Owner: - +-- + +CREATE FUNCTION create_role_if_not_exists(rolename name) RETURNS text + LANGUAGE plpgsql + AS $$ +BEGIN + IF NOT EXISTS (SELECT * FROM pg_roles WHERE rolname = rolename) THEN + EXECUTE format('CREATE ROLE %I', rolename); + RETURN 'CREATE ROLE'; + ELSE + RETURN format('ROLE ''%I'' ALREADY EXISTS', rolename); + END IF; +END; +$$; + + SET search_path = "1", pg_catalog; SET default_tablespace = ''; @@ -73,7 +92,7 @@ SET default_tablespace = ''; SET default_with_oids = false; -- --- TOC entry 172 (class 1259 OID 46228) +-- TOC entry 172 (class 1259 OID 46683) -- Name: auto_incrementing_pk; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -86,7 +105,7 @@ CREATE TABLE auto_incrementing_pk ( -- --- TOC entry 173 (class 1259 OID 46235) +-- TOC entry 173 (class 1259 OID 46690) -- Name: auto_incrementing_pk_id_seq; Type: SEQUENCE; Schema: 1; Owner: - -- @@ -99,7 +118,7 @@ CREATE SEQUENCE auto_incrementing_pk_id_seq -- --- TOC entry 2001 (class 0 OID 0) +-- TOC entry 2002 (class 0 OID 0) -- Dependencies: 173 -- Name: auto_incrementing_pk_id_seq; Type: SEQUENCE OWNED BY; Schema: 1; Owner: - -- @@ -108,7 +127,7 @@ ALTER SEQUENCE auto_incrementing_pk_id_seq OWNED BY auto_incrementing_pk.id; -- --- TOC entry 174 (class 1259 OID 46237) +-- TOC entry 174 (class 1259 OID 46692) -- Name: compound_pk; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -120,7 +139,7 @@ CREATE TABLE compound_pk ( -- --- TOC entry 175 (class 1259 OID 46240) +-- TOC entry 175 (class 1259 OID 46695) -- Name: items; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -130,7 +149,7 @@ CREATE TABLE items ( -- --- TOC entry 176 (class 1259 OID 46243) +-- TOC entry 176 (class 1259 OID 46698) -- Name: items_id_seq; Type: SEQUENCE; Schema: 1; Owner: - -- @@ -143,7 +162,7 @@ CREATE SEQUENCE items_id_seq -- --- TOC entry 2002 (class 0 OID 0) +-- TOC entry 2003 (class 0 OID 0) -- Dependencies: 176 -- Name: items_id_seq; Type: SEQUENCE OWNED BY; Schema: 1; Owner: - -- @@ -152,7 +171,7 @@ ALTER SEQUENCE items_id_seq OWNED BY items.id; -- --- TOC entry 177 (class 1259 OID 46245) +-- TOC entry 177 (class 1259 OID 46700) -- Name: menagerie; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -167,7 +186,7 @@ CREATE TABLE menagerie ( -- --- TOC entry 178 (class 1259 OID 46251) +-- TOC entry 178 (class 1259 OID 46706) -- Name: no_pk; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -178,7 +197,7 @@ CREATE TABLE no_pk ( -- --- TOC entry 179 (class 1259 OID 46257) +-- TOC entry 179 (class 1259 OID 46712) -- Name: simple_pk; Type: TABLE; Schema: 1; Owner: -; Tablespace: -- @@ -191,7 +210,7 @@ CREATE TABLE simple_pk ( SET search_path = dbapi, pg_catalog; -- --- TOC entry 180 (class 1259 OID 46284) +-- TOC entry 180 (class 1259 OID 46718) -- Name: auth; Type: TABLE; Schema: dbapi; Owner: -; Tablespace: -- @@ -204,7 +223,7 @@ CREATE TABLE auth ( SET search_path = "1", pg_catalog; -- --- TOC entry 1862 (class 2604 OID 46269) +-- TOC entry 1862 (class 2604 OID 46724) -- Name: id; Type: DEFAULT; Schema: 1; Owner: - -- @@ -212,7 +231,7 @@ ALTER TABLE ONLY auto_incrementing_pk ALTER COLUMN id SET DEFAULT nextval('auto_ -- --- TOC entry 1863 (class 2604 OID 46270) +-- TOC entry 1864 (class 2604 OID 46725) -- Name: id; Type: DEFAULT; Schema: 1; Owner: - -- @@ -220,7 +239,7 @@ ALTER TABLE ONLY items ALTER COLUMN id SET DEFAULT nextval('items_id_seq'::regcl -- --- TOC entry 1984 (class 0 OID 46228) +-- TOC entry 1985 (class 0 OID 46683) -- Dependencies: 172 -- Data for Name: auto_incrementing_pk; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -228,16 +247,16 @@ ALTER TABLE ONLY items ALTER COLUMN id SET DEFAULT nextval('items_id_seq'::regcl -- --- TOC entry 2003 (class 0 OID 0) +-- TOC entry 2004 (class 0 OID 0) -- Dependencies: 173 -- Name: auto_incrementing_pk_id_seq; Type: SEQUENCE SET; Schema: 1; Owner: - -- -SELECT pg_catalog.setval('auto_incrementing_pk_id_seq', 9, true); +SELECT pg_catalog.setval('auto_incrementing_pk_id_seq', 17, true); -- --- TOC entry 1986 (class 0 OID 46237) +-- TOC entry 1987 (class 0 OID 46692) -- Dependencies: 174 -- Data for Name: compound_pk; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -245,7 +264,7 @@ SELECT pg_catalog.setval('auto_incrementing_pk_id_seq', 9, true); -- --- TOC entry 1987 (class 0 OID 46240) +-- TOC entry 1988 (class 0 OID 46695) -- Dependencies: 175 -- Data for Name: items; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -268,7 +287,7 @@ INSERT INTO items (id) VALUES (15); -- --- TOC entry 2004 (class 0 OID 0) +-- TOC entry 2005 (class 0 OID 0) -- Dependencies: 176 -- Name: items_id_seq; Type: SEQUENCE SET; Schema: 1; Owner: - -- @@ -277,7 +296,7 @@ SELECT pg_catalog.setval('items_id_seq', 15, true); -- --- TOC entry 1989 (class 0 OID 46245) +-- TOC entry 1990 (class 0 OID 46700) -- Dependencies: 177 -- Data for Name: menagerie; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -285,7 +304,7 @@ SELECT pg_catalog.setval('items_id_seq', 15, true); -- --- TOC entry 1990 (class 0 OID 46251) +-- TOC entry 1991 (class 0 OID 46706) -- Dependencies: 178 -- Data for Name: no_pk; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -293,7 +312,7 @@ SELECT pg_catalog.setval('items_id_seq', 15, true); -- --- TOC entry 1991 (class 0 OID 46257) +-- TOC entry 1992 (class 0 OID 46712) -- Dependencies: 179 -- Data for Name: simple_pk; Type: TABLE DATA; Schema: 1; Owner: - -- @@ -303,7 +322,7 @@ SELECT pg_catalog.setval('items_id_seq', 15, true); SET search_path = dbapi, pg_catalog; -- --- TOC entry 1992 (class 0 OID 46284) +-- TOC entry 1993 (class 0 OID 46718) -- Dependencies: 180 -- Data for Name: auth; Type: TABLE DATA; Schema: dbapi; Owner: - -- @@ -314,7 +333,7 @@ INSERT INTO auth (id, rolname) VALUES ('me@me.com', 'adam'); SET search_path = "1", pg_catalog; -- --- TOC entry 1865 (class 2606 OID 46272) +-- TOC entry 1866 (class 2606 OID 46727) -- Name: auto_incrementing_pk_pkey; Type: CONSTRAINT; Schema: 1; Owner: -; Tablespace: -- @@ -323,7 +342,7 @@ ALTER TABLE ONLY auto_incrementing_pk -- --- TOC entry 1867 (class 2606 OID 46274) +-- TOC entry 1868 (class 2606 OID 46729) -- Name: compound_pk_pkey; Type: CONSTRAINT; Schema: 1; Owner: -; Tablespace: -- @@ -332,7 +351,7 @@ ALTER TABLE ONLY compound_pk -- --- TOC entry 1873 (class 2606 OID 46276) +-- TOC entry 1874 (class 2606 OID 46731) -- Name: contacts_pkey; Type: CONSTRAINT; Schema: 1; Owner: -; Tablespace: -- @@ -341,7 +360,7 @@ ALTER TABLE ONLY simple_pk -- --- TOC entry 1869 (class 2606 OID 46278) +-- TOC entry 1870 (class 2606 OID 46733) -- Name: items_pkey; Type: CONSTRAINT; Schema: 1; Owner: -; Tablespace: -- @@ -350,7 +369,7 @@ ALTER TABLE ONLY items -- --- TOC entry 1871 (class 2606 OID 46280) +-- TOC entry 1872 (class 2606 OID 46735) -- Name: menagerie_pkey; Type: CONSTRAINT; Schema: 1; Owner: -; Tablespace: -- @@ -361,7 +380,7 @@ ALTER TABLE ONLY menagerie SET search_path = dbapi, pg_catalog; -- --- TOC entry 1875 (class 2606 OID 46291) +-- TOC entry 1876 (class 2606 OID 46737) -- Name: auth_pkey; Type: CONSTRAINT; Schema: dbapi; Owner: -; Tablespace: -- @@ -370,7 +389,7 @@ ALTER TABLE ONLY auth -- --- TOC entry 1876 (class 2620 OID 46297) +-- TOC entry 1877 (class 2620 OID 46739) -- Name: ensure_auth_role_exists; Type: TRIGGER; Schema: dbapi; Owner: - -- @@ -378,7 +397,7 @@ CREATE CONSTRAINT TRIGGER ensure_auth_role_exists AFTER INSERT OR UPDATE ON auth -- --- TOC entry 1999 (class 0 OID 0) +-- TOC entry 2000 (class 0 OID 0) -- Dependencies: 8 -- Name: public; Type: ACL; Schema: -; Owner: - -- @@ -389,7 +408,7 @@ GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; --- Completed on 2014-09-25 16:21:25 PDT +-- Completed on 2014-09-26 16:36:21 PDT -- -- PostgreSQL database dump complete