pgsql-test 2.11.0 → 2.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin.js +33 -0
- package/esm/admin.js +33 -0
- package/package.json +4 -4
package/admin.js
CHANGED
|
@@ -105,17 +105,50 @@ class DbAdmin {
|
|
|
105
105
|
const sql = `GRANT CONNECT ON DATABASE "${db}" TO ${role};`;
|
|
106
106
|
await this.streamSql(sql, db);
|
|
107
107
|
}
|
|
108
|
+
// TODO: make adminRole a configurable option
|
|
109
|
+
// ONLY granting admin role for testing purposes, normally the db connection for apps won't have admin role
|
|
110
|
+
// DO NOT USE THIS FOR PRODUCTION
|
|
108
111
|
async createUserRole(user, password, dbName) {
|
|
109
112
|
const anonRole = (0, roles_1.getRoleName)('anonymous', this.roleConfig);
|
|
110
113
|
const authRole = (0, roles_1.getRoleName)('authenticated', this.roleConfig);
|
|
114
|
+
const adminRole = (0, roles_1.getRoleName)('administrator', this.roleConfig);
|
|
111
115
|
const sql = `
|
|
112
116
|
DO $$
|
|
113
117
|
BEGIN
|
|
118
|
+
-- Create role if it doesn't exist
|
|
114
119
|
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '${user}') THEN
|
|
115
120
|
CREATE ROLE ${user} LOGIN PASSWORD '${password}';
|
|
121
|
+
END IF;
|
|
122
|
+
|
|
123
|
+
-- Grant anonymous role if not already granted
|
|
124
|
+
IF NOT EXISTS (
|
|
125
|
+
SELECT 1 FROM pg_auth_members am
|
|
126
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
127
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
128
|
+
WHERE r1.rolname = '${anonRole}' AND r2.rolname = '${user}'
|
|
129
|
+
) THEN
|
|
116
130
|
GRANT ${anonRole} TO ${user};
|
|
131
|
+
END IF;
|
|
132
|
+
|
|
133
|
+
-- Grant authenticated role if not already granted
|
|
134
|
+
IF NOT EXISTS (
|
|
135
|
+
SELECT 1 FROM pg_auth_members am
|
|
136
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
137
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
138
|
+
WHERE r1.rolname = '${authRole}' AND r2.rolname = '${user}'
|
|
139
|
+
) THEN
|
|
117
140
|
GRANT ${authRole} TO ${user};
|
|
118
141
|
END IF;
|
|
142
|
+
|
|
143
|
+
-- Grant administrator role if not already granted
|
|
144
|
+
IF NOT EXISTS (
|
|
145
|
+
SELECT 1 FROM pg_auth_members am
|
|
146
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
147
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
148
|
+
WHERE r1.rolname = '${adminRole}' AND r2.rolname = '${user}'
|
|
149
|
+
) THEN
|
|
150
|
+
GRANT ${adminRole} TO ${user};
|
|
151
|
+
END IF;
|
|
119
152
|
END $$;
|
|
120
153
|
`.trim();
|
|
121
154
|
await this.streamSql(sql, dbName);
|
package/esm/admin.js
CHANGED
|
@@ -102,17 +102,50 @@ export class DbAdmin {
|
|
|
102
102
|
const sql = `GRANT CONNECT ON DATABASE "${db}" TO ${role};`;
|
|
103
103
|
await this.streamSql(sql, db);
|
|
104
104
|
}
|
|
105
|
+
// TODO: make adminRole a configurable option
|
|
106
|
+
// ONLY granting admin role for testing purposes, normally the db connection for apps won't have admin role
|
|
107
|
+
// DO NOT USE THIS FOR PRODUCTION
|
|
105
108
|
async createUserRole(user, password, dbName) {
|
|
106
109
|
const anonRole = getRoleName('anonymous', this.roleConfig);
|
|
107
110
|
const authRole = getRoleName('authenticated', this.roleConfig);
|
|
111
|
+
const adminRole = getRoleName('administrator', this.roleConfig);
|
|
108
112
|
const sql = `
|
|
109
113
|
DO $$
|
|
110
114
|
BEGIN
|
|
115
|
+
-- Create role if it doesn't exist
|
|
111
116
|
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = '${user}') THEN
|
|
112
117
|
CREATE ROLE ${user} LOGIN PASSWORD '${password}';
|
|
118
|
+
END IF;
|
|
119
|
+
|
|
120
|
+
-- Grant anonymous role if not already granted
|
|
121
|
+
IF NOT EXISTS (
|
|
122
|
+
SELECT 1 FROM pg_auth_members am
|
|
123
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
124
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
125
|
+
WHERE r1.rolname = '${anonRole}' AND r2.rolname = '${user}'
|
|
126
|
+
) THEN
|
|
113
127
|
GRANT ${anonRole} TO ${user};
|
|
128
|
+
END IF;
|
|
129
|
+
|
|
130
|
+
-- Grant authenticated role if not already granted
|
|
131
|
+
IF NOT EXISTS (
|
|
132
|
+
SELECT 1 FROM pg_auth_members am
|
|
133
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
134
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
135
|
+
WHERE r1.rolname = '${authRole}' AND r2.rolname = '${user}'
|
|
136
|
+
) THEN
|
|
114
137
|
GRANT ${authRole} TO ${user};
|
|
115
138
|
END IF;
|
|
139
|
+
|
|
140
|
+
-- Grant administrator role if not already granted
|
|
141
|
+
IF NOT EXISTS (
|
|
142
|
+
SELECT 1 FROM pg_auth_members am
|
|
143
|
+
JOIN pg_roles r1 ON am.roleid = r1.oid
|
|
144
|
+
JOIN pg_roles r2 ON am.member = r2.oid
|
|
145
|
+
WHERE r1.rolname = '${adminRole}' AND r2.rolname = '${user}'
|
|
146
|
+
) THEN
|
|
147
|
+
GRANT ${adminRole} TO ${user};
|
|
148
|
+
END IF;
|
|
116
149
|
END $$;
|
|
117
150
|
`.trim();
|
|
118
151
|
await this.streamSql(sql, dbName);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pgsql-test",
|
|
3
|
-
"version": "2.11.
|
|
3
|
+
"version": "2.11.2",
|
|
4
4
|
"author": "Dan Lynch <pyramation@gmail.com>",
|
|
5
5
|
"description": "pgsql-test offers isolated, role-aware, and rollback-friendly PostgreSQL environments for integration tests — giving developers realistic test coverage without external state pollution",
|
|
6
6
|
"main": "index.js",
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
"@types/pg-copy-streams": "^1.2.5"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@launchql/core": "^2.11.
|
|
63
|
+
"@launchql/core": "^2.11.2",
|
|
64
64
|
"@launchql/env": "^2.4.1",
|
|
65
65
|
"@launchql/server-utils": "^2.4.1",
|
|
66
66
|
"@launchql/types": "^2.6.0",
|
|
67
67
|
"pg": "^8.16.0",
|
|
68
|
-
"pg-cache": "^1.3.
|
|
68
|
+
"pg-cache": "^1.3.2",
|
|
69
69
|
"pg-copy-streams": "^6.0.6",
|
|
70
70
|
"pg-env": "^1.1.0"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "1501868e8481d151c3f44ac54dd16e111a1b5093"
|
|
73
73
|
}
|