changeset 224:57dfab80973c

By convention, prefix all test users with 'test' This allows to DROP them without having to fixup run_tests.sh always after adding a new test user. Further fixup of rev. cfde876fbaf9: Remove obsolete comment.
author Tom Gottfried <tom@intevation.de>
date Wed, 25 Jul 2018 13:34:46 +0200
parents e9382dccb331
children 8b9cae6d3a21
files schema/auth_tests.sql schema/manage_users_tests.sql schema/run_tests.sh schema/tap_tests_data.sql
diffstat 4 files changed, 19 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/schema/auth_tests.sql	Wed Jul 25 12:37:03 2018 +0200
+++ b/schema/auth_tests.sql	Wed Jul 25 13:34:46 2018 +0200
@@ -5,7 +5,7 @@
 --
 -- Run tests as unprivileged user
 --
-SET SESSION AUTHORIZATION user_at;
+SET SESSION AUTHORIZATION test_user_at;
 
 SELECT throws_ok('CREATE TABLE test()', 42501, NULL,
                  'No objects can be created');
@@ -31,7 +31,7 @@
 --
 -- Run tests as waterway administrator
 --
-SET SESSION AUTHORIZATION admin_at;
+SET SESSION AUTHORIZATION test_admin_at;
 
 PREPARE bn_insert (varchar, geometry(POLYGON, 4326)) AS
     INSERT INTO waterway.bottlenecks (
@@ -66,7 +66,7 @@
 SELECT lives_ok('INSERT INTO users.templates (template_name, template_data)
                  VALUES (''New AT'', ''\x'');
                  INSERT INTO users.user_templates
-                 VALUES (''user_at'', ''New AT'')',
+                 VALUES (''test_user_at'', ''New AT'')',
                 'Waterway admin can add templates for users in his country');
 
 SELECT throws_ok('INSERT INTO users.user_templates
--- a/schema/manage_users_tests.sql	Wed Jul 25 12:37:03 2018 +0200
+++ b/schema/manage_users_tests.sql	Wed Jul 25 13:34:46 2018 +0200
@@ -4,7 +4,7 @@
 
 SET search_path TO public, gemma, gemma_waterway, gemma_fairway;
 
-SET SESSION AUTHORIZATION admin_at;
+SET SESSION AUTHORIZATION test_admin_at;
 
 SELECT throws_ok($$
     SELECT sys_admin.create_user(
@@ -13,7 +13,7 @@
     42501, NULL,
     'Less privileged user cannot call function in schema sys_admin');
 
-SET SESSION AUTHORIZATION sys_admin1;
+SET SESSION AUTHORIZATION test_sys_admin1;
 
 SELECT lives_ok($$
     SELECT sys_admin.create_user(
@@ -45,7 +45,7 @@
 
 SELECT throws_ok($$
     SELECT sys_admin.create_user(
-        'waterway_user', 'user_at', 'secret', 'AT', NULL, 'test4')
+        'waterway_user', 'test_user_at', 'secret', 'AT', NULL, 'test4')
     $$,
     23505, NULL,
     'No duplicate user name is allowed');
--- a/schema/run_tests.sh	Wed Jul 25 12:37:03 2018 +0200
+++ b/schema/run_tests.sh	Wed Jul 25 13:34:46 2018 +0200
@@ -9,10 +9,15 @@
     -f auth.sql \
     -f manage_users.sql
 
-# Add test data, run tests and ROLLBACK to prevent test roles to stay
-# in cluster, which would prevent tests from being repeatable
+# Collect test roles to be dropped
+# Concatenate with dummy role to prevent syntax error if there is no test role
+TEST_ROLES=$(psql -qtc \
+    "SELECT concat_ws(',', 'test', string_agg(rolname, ',')) FROM pg_roles
+         WHERE rolname LIKE 'test%'")
+
+# Drop test roles, add test data and run tests
 psql -qXv ON_ERROR_STOP= -v -d gemma_test \
-    -c 'DROP ROLE IF EXISTS user_at, user_ro, admin_at, sys_admin1, test1' \
+    -c "DROP ROLE IF EXISTS $TEST_ROLES" \
     -f tap_tests_data.sql \
     -c 'SELECT plan(23)' \
     -f auth_tests.sql \
--- a/schema/tap_tests_data.sql	Wed Jul 25 12:37:03 2018 +0200
+++ b/schema/tap_tests_data.sql	Wed Jul 25 13:34:46 2018 +0200
@@ -9,13 +9,13 @@
     ('RO', ST_geomfromtext('MULTIPOLYGON(((1 0, 1 1, 2 1, 2 0, 1 0)))', 4326));
 
 SELECT sys_admin.create_user(
-    'waterway_user', 'user_at', 'user_at', 'AT', NULL, 'xxx');
+    'waterway_user', 'test_user_at', 'user_at', 'AT', NULL, 'xxx');
 SELECT sys_admin.create_user(
-    'waterway_user', 'user_ro', 'user_ro', 'RO', NULL, 'xxy');
+    'waterway_user', 'test_user_ro', 'user_ro', 'RO', NULL, 'xxy');
 SELECT sys_admin.create_user(
-    'waterway_admin', 'admin_at', 'admin_at', 'AT', NULL, 'yyy');
+    'waterway_admin', 'test_admin_at', 'admin_at', 'AT', NULL, 'yyy');
 SELECT sys_admin.create_user(
-    'sys_admin', 'sys_admin1', 'sys_admin1', 'AT', NULL, 'zzz');
+    'sys_admin', 'test_sys_admin1', 'sys_admin1', 'AT', NULL, 'zzz');
 
 INSERT INTO limiting_factors VALUES ('depth'), ('width');
 
@@ -54,4 +54,4 @@
 INSERT INTO users.templates (template_name, template_data)
     VALUES ('AT', '\x'), ('RO', '\x');
 INSERT INTO users.user_templates
-    VALUES ('user_at', 'AT'), ('user_ro', 'RO');
+    VALUES ('test_user_at', 'AT'), ('test_user_ro', 'RO');