Mailman: create a HK DB for unit testing

This commit is contained in:
Aurélien Bompard 2014-05-30 08:12:52 +00:00
parent 2f9b7871ea
commit 960d87f8ca
2 changed files with 19 additions and 6 deletions

View file

@ -99,6 +99,8 @@
- mailman - mailman
- hyperkitty - hyperkitty
- kittystore - kittystore
- name: test database creation
postgresql_db: name=test_hyperkitty owner=hyperkittyadmin encoding=UTF-8
# Real MM/HK-specific work # Real MM/HK-specific work

View file

@ -14,32 +14,34 @@ import yaml
import psycopg2 import psycopg2
def give_rights(dbhost, dbuser, dbpasswd, dbname): def give_rights(dbhost, dbuser, dbpasswd, dbname, dbreguser=None):
if dbreguser is None:
dbreguser = dbname + "app"
conn = psycopg2.connect(host=dbhost, user=dbuser, password=dbpasswd, conn = psycopg2.connect(host=dbhost, user=dbuser, password=dbpasswd,
database=dbname) database=dbname)
cur = conn.cursor() cur = conn.cursor()
# Database permissions # Database permissions
dbrightsquery = "GRANT CONNECT,TEMP ON DATABASE %s TO %sapp;" % (dbname, dbname) dbrightsquery = "GRANT CONNECT,TEMP ON DATABASE %s TO %s;" % (dbname, dbreguser)
print dbrightsquery print dbrightsquery
cur.execute(dbrightsquery) cur.execute(dbrightsquery)
# Table permissions # Table permissions
cur.execute(""" cur.execute("""
SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON "' || relname || '" TO %sapp;' SELECT 'GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON "' || relname || '" TO %s;'
FROM pg_class FROM pg_class
JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind IN ('r', 'v'); WHERE nspname = 'public' AND relkind IN ('r', 'v');
""" % dbname) """ % dbreguser)
queries = [ q[0] for q in cur ] queries = [ q[0] for q in cur ]
for query in queries: for query in queries:
print query print query
cur.execute(query) cur.execute(query)
# Sequence permissions # Sequence permissions
cur.execute(""" cur.execute("""
SELECT 'GRANT USAGE,SELECT,UPDATE ON ' || relname || ' TO %sapp;' SELECT 'GRANT USAGE,SELECT,UPDATE ON ' || relname || ' TO %s;'
FROM pg_class FROM pg_class
JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE nspname = 'public' AND relkind = 'S'; WHERE nspname = 'public' AND relkind = 'S';
""" % dbname) """ % dbreguser)
queries = [ q[0] for q in cur ] queries = [ q[0] for q in cur ]
for query in queries: for query in queries:
print query print query
@ -80,5 +82,14 @@ def main():
settings_admin.DATABASES["default"]["NAME"], settings_admin.DATABASES["default"]["NAME"],
) )
# HyperKitty unit test database
give_rights(
settings_admin.DATABASES["default"]["HOST"],
settings_admin.DATABASES["default"]["USER"],
settings_admin.DATABASES["default"]["PASSWORD"],
"test_" + settings_admin.DATABASES["default"]["NAME"],
settings_admin.DATABASES["default"]["NAME"] + "app",
)
if __name__ == "__main__": main() if __name__ == "__main__": main()