From 84a8a522e31cbe65cb1909f319f362a72d7e91b7 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Wed, 22 Jan 2025 19:40:13 +0530 Subject: [PATCH] 1) Fixed an issue where Default Privileges and Privileges not working correctly. #8369 2) Fixed
tag visible issue. --- docs/en_US/release_notes_9_0.rst | 4 +- .../servers/databases/__init__.py | 3 +- .../templates/catalog/pg/9.1_plus/sql/acl.sql | 23 - .../catalog/pg/9.1_plus/sql/create.sql | 17 - .../catalog/pg/9.1_plus/sql/get_name.sql | 1 - .../catalog/pg/9.1_plus/sql/is_catalog.sql | 9 - .../templates/catalog/pg/9.2_plus/sql/acl.sql | 23 - .../catalog/pg/9.2_plus/sql/get_name.sql | 1 - .../catalog/pg/9.2_plus/sql/is_catalog.sql | 9 - .../catalog/pg/default/allowed_privs.json | 2 +- .../catalog/ppas/9.1_plus/sql/acl.sql | 23 - .../catalog/ppas/9.1_plus/sql/get_name.sql | 1 - .../catalog/ppas/9.1_plus/sql/is_catalog.sql | 9 - .../catalog/ppas/9.1_plus/sql/update.sql | 30 - .../catalog/ppas/9.2_plus/sql/acl.sql | 23 - .../catalog/ppas/9.2_plus/sql/create.sql | 17 - .../catalog/ppas/9.2_plus/sql/get_name.sql | 1 - .../catalog/ppas/9.2_plus/sql/is_catalog.sql | 9 - .../catalog/ppas/9.2_plus/sql/update.sql | 30 - .../catalog/ppas/default/allowed_privs.json | 2 +- .../schemas/pg/default/allowed_privs.json | 2 +- .../schemas/ppas/default/allowed_privs.json | 2 +- .../databases/sql/17_plus/allowed_privs.json | 4 + .../databases/sql/default/allowed_privs.json | 6 +- .../databases/sql/default/alter_online.sql | 30 +- .../alter_default_db_privileges_add_all.sql | 26 + .../alter_default_db_privileges_all.sql | 28 + ...efault_db_privileges_newuser_reset_all.sql | 14 + .../alter_default_db_privileges_types.sql | 1 + .../pg/15_plus/create_database_icu_msql.sql | 2 + .../create_database_new_options_libc_msql.sql | 2 + .../tests/pg/15_plus/test_database.json | 73 +- .../create_database_icu_rules_msql.sql | 2 + .../tests/pg/16_plus/test_database.json | 73 +- .../alter_default_db_privileges_add_all.sql | 31 + .../alter_default_db_privileges_add_msql.sql | 12 + .../alter_default_db_privileges_all.sql | 33 + .../alter_default_db_privileges_all_msql.sql | 27 + ...efault_db_privileges_newuser_reset_all.sql | 19 + .../alter_default_db_privileges_reset_all.sql | 19 + .../17_plus/create_database_builtin_msql.sql | 2 + .../tests/pg/17_plus/test_database.json | 1237 +++++++++-------- .../alter_default_db_privileges_add_all.sql | 25 + .../alter_default_db_privileges_add_msql.sql | 12 + .../alter_default_db_privileges_all.sql | 27 + .../alter_default_db_privileges_all_msql.sql | 27 + ...efault_db_privileges_newuser_reset_all.sql | 13 + ...r_default_db_privileges_sequences_msql.sql | 2 +- ...lter_default_db_privileges_tables_msql.sql | 2 +- .../alter_default_db_privileges_types.sql | 1 + ...alter_default_db_privileges_types_msql.sql | 4 + .../tests/pg/default/test_database.json | 73 +- .../alter_default_db_privileges_add_all.sql | 26 + .../alter_default_db_privileges_all.sql | 28 + ...efault_db_privileges_newuser_reset_all.sql | 14 + .../alter_default_db_privileges_types.sql | 2 + .../ppas/15_plus/create_database_icu_msql.sql | 2 + .../create_database_new_options_libc_msql.sql | 2 + .../tests/ppas/15_plus/test_database.json | 77 +- .../create_database_icu_rules_msql.sql | 2 + .../tests/ppas/16_plus/test_database.json | 77 +- .../alter_default_db_privileges_add_all.sql | 31 + .../alter_default_db_privileges_add_msql.sql | 12 + .../alter_default_db_privileges_all.sql | 33 + .../alter_default_db_privileges_all_msql.sql | 27 + ...efault_db_privileges_newuser_reset_all.sql | 19 + .../alter_default_db_privileges_reset_all.sql | 19 + .../17_plus/create_database_builtin_msql.sql | 2 + .../tests/ppas/17_plus/test_database.json | 1236 ++++++++-------- .../alter_default_db_privileges_add_all.sql | 25 + .../alter_default_db_privileges_add_msql.sql | 12 + .../alter_default_db_privileges_all.sql | 27 + .../alter_default_db_privileges_all_msql.sql | 27 + ...efault_db_privileges_newuser_reset_all.sql | 13 + ...r_default_db_privileges_sequences_msql.sql | 2 +- ...lter_default_db_privileges_tables_msql.sql | 2 +- .../alter_default_db_privileges_types.sql | 2 + ...alter_default_db_privileges_types_msql.sql | 4 + .../tests/ppas/default/test_database.json | 77 +- .../templates/macros/default_privilege.macros | 12 +- .../static/js/components/FormComponents.jsx | 1 + .../static/js/helpers/ModalProvider.jsx | 2 +- .../utils/driver/psycopg3/connection.py | 2 - web/regression/re_sql/tests/test_resql.py | 33 + 84 files changed, 2456 insertions(+), 1462 deletions(-) delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all_msql.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_newuser_reset_all.sql create mode 100644 web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types_msql.sql diff --git a/docs/en_US/release_notes_9_0.rst b/docs/en_US/release_notes_9_0.rst index e3161b9ca..08b507f7f 100644 --- a/docs/en_US/release_notes_9_0.rst +++ b/docs/en_US/release_notes_9_0.rst @@ -33,6 +33,7 @@ Bug fixes ********* | `Issue #5204 `_ - Fixed an issue where pgadmin cannot install into path with non ASCII characters. + | `Issue #6044 `_ - Fixed an issue where filter dialog save fails when the PostgreSQL server/database connection is lost. | `Issue #6968 `_ - Fixed an issue where option key was not registering in PSQL tool. | `Issue #8072 `_ - Fixed an issue where Schema Diff not produce difference script for Index definition with where condition. | `Issue #8142 `_ - Correct the documentation for the MFA configuration. @@ -47,4 +48,5 @@ Bug fixes | `Issue #8299 `_ - Ensure master password pop up is not shown on setting MASTER_PASSWORD_REQUIRED to false. | `Issue #8309 `_ - Remove the option "With no data (concurrently)" from Refresh MATERIALIZED VIEW context menu. | `Issue #8320 `_ - Fix an issue where wrong information is shown after using the filter on the Dashboard> State tab. - | `Issue #8365 `_ - Fixed an issue where PSQL tool is not opening if database name have HTML characters in the name. \ No newline at end of file + | `Issue #8365 `_ - Fixed an issue where PSQL tool is not opening if database name have HTML characters in the name. + | `Issue #8369 `_ - Fixed an issue where Default Privileges and Privileges not working correctly. \ No newline at end of file diff --git a/web/pgadmin/browser/server_groups/servers/databases/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/__init__.py index c72a78662..2a47cd131 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/__init__.py +++ b/web/pgadmin/browser/server_groups/servers/databases/__init__.py @@ -34,6 +34,7 @@ from pgadmin.tools.sqleditor.utils.query_history import QueryHistory from pgadmin.tools.schema_diff.node_registry import SchemaDiffRegistry from pgadmin.model import db, Server, Database +from pgadmin.browser.utils import underscore_escape from pgadmin.utils.constants import TWO_PARAM_STRING @@ -1073,7 +1074,7 @@ class DatabaseView(PGChildNodeView): status, errmsg = conn.connect() return internal_server_error( - errormsg=msg) + errormsg=underscore_escape(msg)) return make_json_response(success=1) diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql deleted file mode 100644 index c41e31373..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/acl.sql +++ /dev/null @@ -1,23 +0,0 @@ -{# Fetch privileges for schema #} -SELECT - 'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee, - g.rolname AS grantor, pg_catalog.array_agg(b.privilege_type) AS privileges, - pg_catalog.array_agg(b.is_grantable) AS grantable -FROM - (SELECT - (d).grantee AS grantee, (d).grantor AS grantor, - (d).is_grantable AS is_grantable, - CASE (d).privilege_type - WHEN 'CREATE' THEN 'C' - WHEN 'USAGE' THEN 'U' - ELSE 'UNKNOWN - ' || (d).privilege_type - END AS privilege_type - FROM - (SELECT pg_catalog.aclexplode(nsp.nspacl) as d - FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID - ) a - ) b - LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) - LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid) -GROUP BY g.rolname, gt.rolname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql deleted file mode 100644 index 7cd2aaa4e..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/create.sql +++ /dev/null @@ -1,17 +0,0 @@ -{% import 'macros/privilege.macros' as PRIVILEGE %} -{% if data %} -CREATE SCHEMA {{ conn|qtIdent(data.name) }} -{% if data.namespaceowner %} - AUTHORIZATION {{ conn|qtIdent(data.namespaceowner) }}; - -{% endif %} -{% if data.description %} -COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral(conn) }}; - -{% endif %} -{% if data.nspacl %} -{% for priv in data.nspacl %} -{{ PRIVILEGE.APPLY(conn, 'SCHEMA', priv.grantee, data.name, priv.without_grant, priv.with_grant) }}{% endfor %} -{% endif %} -{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql deleted file mode 100644 index 5f5612c02..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/get_name.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql deleted file mode 100644 index f15d3c177..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.1_plus/sql/is_catalog.sql +++ /dev/null @@ -1,9 +0,0 @@ -{% import 'catalog/pg/macros/catalogs.sql' as CATALOGS %} -SELECT - nsp.nspname as schema_name, - {{ CATALOGS.LIST('nsp') }} AS is_catalog, - {{ CATALOGS.DB_SUPPORT('nsp') }} AS db_support -FROM - pg_catalog.pg_namespace nsp -WHERE - nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql deleted file mode 100644 index c41e31373..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/acl.sql +++ /dev/null @@ -1,23 +0,0 @@ -{# Fetch privileges for schema #} -SELECT - 'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee, - g.rolname AS grantor, pg_catalog.array_agg(b.privilege_type) AS privileges, - pg_catalog.array_agg(b.is_grantable) AS grantable -FROM - (SELECT - (d).grantee AS grantee, (d).grantor AS grantor, - (d).is_grantable AS is_grantable, - CASE (d).privilege_type - WHEN 'CREATE' THEN 'C' - WHEN 'USAGE' THEN 'U' - ELSE 'UNKNOWN - ' || (d).privilege_type - END AS privilege_type - FROM - (SELECT pg_catalog.aclexplode(nsp.nspacl) as d - FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID - ) a - ) b - LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) - LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid) -GROUP BY g.rolname, gt.rolname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql deleted file mode 100644 index 5f5612c02..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/get_name.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql deleted file mode 100644 index f15d3c177..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/9.2_plus/sql/is_catalog.sql +++ /dev/null @@ -1,9 +0,0 @@ -{% import 'catalog/pg/macros/catalogs.sql' as CATALOGS %} -SELECT - nsp.nspname as schema_name, - {{ CATALOGS.LIST('nsp') }} AS is_catalog, - {{ CATALOGS.DB_SUPPORT('nsp') }} AS db_support -FROM - pg_catalog.pg_namespace nsp -WHERE - nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/allowed_privs.json index 1253e87dc..0c92d0ceb 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/pg/default/allowed_privs.json @@ -13,7 +13,7 @@ }, "deftblacl": { "type": "TABLE", - "acl": ["r", "a", "w", "d", "D", "x", "t"] + "acl": ["a", "r", "w", "d", "D", "x", "t"] }, "defseqacl": { "type": "SEQUENCE", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql deleted file mode 100644 index c41e31373..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/acl.sql +++ /dev/null @@ -1,23 +0,0 @@ -{# Fetch privileges for schema #} -SELECT - 'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee, - g.rolname AS grantor, pg_catalog.array_agg(b.privilege_type) AS privileges, - pg_catalog.array_agg(b.is_grantable) AS grantable -FROM - (SELECT - (d).grantee AS grantee, (d).grantor AS grantor, - (d).is_grantable AS is_grantable, - CASE (d).privilege_type - WHEN 'CREATE' THEN 'C' - WHEN 'USAGE' THEN 'U' - ELSE 'UNKNOWN - ' || (d).privilege_type - END AS privilege_type - FROM - (SELECT pg_catalog.aclexplode(nsp.nspacl) as d - FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID - ) a - ) b - LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) - LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid) -GROUP BY g.rolname, gt.rolname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql deleted file mode 100644 index 5f5612c02..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/get_name.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql deleted file mode 100644 index 1fd2f207e..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/is_catalog.sql +++ /dev/null @@ -1,9 +0,0 @@ -{% import 'catalog/ppas/macros/catalogs.sql' as CATALOGS %} -SELECT - nsp.nspname as schema_name, - {{ CATALOGS.LIST('nsp') }} AS is_catalog, - {{ CATALOGS.DB_SUPPORT('nsp') }} AS db_support -FROM - pg_catalog.pg_namespace nsp -WHERE - nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql deleted file mode 100644 index 510adf5dd..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.1_plus/sql/update.sql +++ /dev/null @@ -1,30 +0,0 @@ -{% import 'macros/security.macros' as SECLABEL %} -{% if data %} -{# ==== To update catalog comments ==== #} -{% if data.description and data.description != o_data.description %} -COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral(conn) }}; - -{% endif %} -{# ==== To update catalog securitylabel ==== #} -{# The SQL generated below will change Security Label #} -{% if data.seclabels and data.seclabels|length > 0 %} -{% set seclabels = data.seclabels %} -{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %} -{% for r in seclabels.deleted %} -{{ SECLABEL.DROP(conn, 'SCHEMA', o_data.name, r.provider) }} -{% endfor %} -{% endif %} -{% if 'added' in seclabels and seclabels.added|length > 0 %} -{% for r in seclabels.added %} -{{ SECLABEL.APPLY(conn, 'SCHEMA', o_data.name, r.provider, r.label) }} -{% endfor %} -{% endif %} -{% if 'changed' in seclabels and seclabels.changed|length > 0 %} -{% for r in seclabels.changed %} -{{ SECLABEL.APPLY(conn, 'SCHEMA', o_data.name, r.provider, r.label) }} -{% endfor %} -{% endif %} - -{% endif %} -{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql deleted file mode 100644 index c41e31373..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/acl.sql +++ /dev/null @@ -1,23 +0,0 @@ -{# Fetch privileges for schema #} -SELECT - 'nspacl' as deftype, COALESCE(gt.rolname, 'PUBLIC') AS grantee, - g.rolname AS grantor, pg_catalog.array_agg(b.privilege_type) AS privileges, - pg_catalog.array_agg(b.is_grantable) AS grantable -FROM - (SELECT - (d).grantee AS grantee, (d).grantor AS grantor, - (d).is_grantable AS is_grantable, - CASE (d).privilege_type - WHEN 'CREATE' THEN 'C' - WHEN 'USAGE' THEN 'U' - ELSE 'UNKNOWN - ' || (d).privilege_type - END AS privilege_type - FROM - (SELECT pg_catalog.aclexplode(nsp.nspacl) as d - FROM pg_catalog.pg_namespace nsp - WHERE nsp.oid = {{ scid|qtLiteral(conn) }}::OID - ) a - ) b - LEFT JOIN pg_catalog.pg_roles g ON (b.grantor = g.oid) - LEFT JOIN pg_catalog.pg_roles gt ON (b.grantee = gt.oid) -GROUP BY g.rolname, gt.rolname; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql deleted file mode 100644 index 811955ad9..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/create.sql +++ /dev/null @@ -1,17 +0,0 @@ -{% import 'macros/privilege.macros' as PRIVILEGE %} -{% if data %} -CREATE SCHEMA {{ conn|qtIdent(data.name) }} -{% if data.namespaceowner %} - AUTHORIZATION {{ conn|qtIdent(data.namespaceowner) }}; - -{% endif %} -{% if data.description %} -COMMENT ON SCHEMA {{ conn|qtIdent(data.name) }} - IS {{ data.description|qtLiteral(conn) }}; - -{% endif %} -{% if data.nspacl %} -{% for priv in data.nspacl %} -{{ PRIVILEGE.APPLY(conn, 'SCHEMA', priv.grantee, data.name, priv.without_grant, priv.with_grant) }}{% endfor %} -{% endif %} -{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql deleted file mode 100644 index 5f5612c02..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/get_name.sql +++ /dev/null @@ -1 +0,0 @@ -SELECT nsp.nspname FROM pg_catalog.pg_namespace nsp WHERE nsp.oid = {{ scid|qtLiteral(conn) }}; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql deleted file mode 100644 index 1fd2f207e..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/is_catalog.sql +++ /dev/null @@ -1,9 +0,0 @@ -{% import 'catalog/ppas/macros/catalogs.sql' as CATALOGS %} -SELECT - nsp.nspname as schema_name, - {{ CATALOGS.LIST('nsp') }} AS is_catalog, - {{ CATALOGS.DB_SUPPORT('nsp') }} AS db_support -FROM - pg_catalog.pg_namespace nsp -WHERE - nsp.oid = {{ scid|qtLiteral(conn) }}::OID; diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql deleted file mode 100644 index 510adf5dd..000000000 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/9.2_plus/sql/update.sql +++ /dev/null @@ -1,30 +0,0 @@ -{% import 'macros/security.macros' as SECLABEL %} -{% if data %} -{# ==== To update catalog comments ==== #} -{% if data.description and data.description != o_data.description %} -COMMENT ON SCHEMA {{ conn|qtIdent(o_data.name) }} - IS {{ data.description|qtLiteral(conn) }}; - -{% endif %} -{# ==== To update catalog securitylabel ==== #} -{# The SQL generated below will change Security Label #} -{% if data.seclabels and data.seclabels|length > 0 %} -{% set seclabels = data.seclabels %} -{% if 'deleted' in seclabels and seclabels.deleted|length > 0 %} -{% for r in seclabels.deleted %} -{{ SECLABEL.DROP(conn, 'SCHEMA', o_data.name, r.provider) }} -{% endfor %} -{% endif %} -{% if 'added' in seclabels and seclabels.added|length > 0 %} -{% for r in seclabels.added %} -{{ SECLABEL.APPLY(conn, 'SCHEMA', o_data.name, r.provider, r.label) }} -{% endfor %} -{% endif %} -{% if 'changed' in seclabels and seclabels.changed|length > 0 %} -{% for r in seclabels.changed %} -{{ SECLABEL.APPLY(conn, 'SCHEMA', o_data.name, r.provider, r.label) }} -{% endfor %} -{% endif %} - -{% endif %} -{% endif %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/allowed_privs.json index 0d0b305e2..5c7d1dbab 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/catalog/ppas/default/allowed_privs.json @@ -13,7 +13,7 @@ }, "deftblacl": { "type": "TABLE", - "acl": ["r", "a", "w", "d", "D", "x", "t"] + "acl": ["a", "r", "w", "d", "D", "x", "t"] }, "defseqacl": { "type": "SEQUENCE", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/allowed_privs.json index 0c1784a5b..98607db6d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/pg/default/allowed_privs.json @@ -13,7 +13,7 @@ }, "deftblacl": { "type": "TABLE", - "acl": ["r", "a", "w", "d", "D", "x", "t"] + "acl": ["a", "r", "w", "d", "D", "x", "t"] }, "defseqacl": { "type": "SEQUENCE", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/allowed_privs.json index b014f5798..82ab3c4f5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/templates/schemas/ppas/default/allowed_privs.json @@ -13,7 +13,7 @@ }, "deftblacl": { "type": "TABLE", - "acl": ["r", "a", "w", "d", "D", "x", "t"] + "acl": ["a", "r", "w", "d", "D", "x", "t"] }, "defseqacl": { "type": "SEQUENCE", diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/17_plus/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/17_plus/allowed_privs.json index 0d0c6c64c..bd915a469 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/17_plus/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/17_plus/allowed_privs.json @@ -22,5 +22,9 @@ "deffuncacl": { "type": "FUNCTION", "acl": ["X"] + }, + "deftypeacl": { + "type": "TYPE", + "acl": ["U"] } } diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/allowed_privs.json b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/allowed_privs.json index dc91e9974..150bd17a2 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/allowed_privs.json +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/allowed_privs.json @@ -13,7 +13,7 @@ }, "deftblacl": { "type": "TABLE", - "acl": ["r", "a", "w", "d", "D", "x", "t"] + "acl": ["a", "r", "w", "d", "D", "x", "t"] }, "defseqacl": { "type": "SEQUENCE", @@ -22,5 +22,9 @@ "deffuncacl": { "type": "FUNCTION", "acl": ["X"] + }, + "deftypeacl": { + "type": "TYPE", + "acl": ["U"] } } diff --git a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql index b8a8c2c0d..6535c1d2d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/templates/databases/sql/default/alter_online.sql @@ -13,7 +13,7 @@ {% endif %} {% if 'changed' in data.deffuncacl %} {% for priv in data.deffuncacl.changed %} -{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'FUNCTIONS', priv.grantee) }} +{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'FUNCTIONS', priv.grantee, priv.grantor) }} {{ DEFAULT_PRIVILEGE.APPLY(conn, 'FUNCTIONS', priv.grantee, priv.without_grant, priv.with_grant, priv.grantor) }} {% endfor %} {% endif %} @@ -24,7 +24,6 @@ {% endif %} {% endif %} - {# Change the variables/options #} {% if data.variables and data.variables|length > 0 %} {% set variables = data.variables %} @@ -86,7 +85,8 @@ {% endif %} {% if 'changed' in data.deftblacl %} {% for priv in data.deftblacl.changed %} -{{ DEFAULT_PRIVILEGE.APPLY(conn, 'TABLES', priv.grantee, priv.without_grant, priv.with_grant) }} +{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'TABLES', priv.grantee, priv.grantor) }} +{{ DEFAULT_PRIVILEGE.APPLY(conn, 'TABLES', priv.grantee, priv.without_grant, priv.with_grant, priv.grantor) }} {% endfor %} {% endif %} {% if 'added' in data.deftblacl %} @@ -97,7 +97,6 @@ {% endif %} {# Change the default priviledges for the sequences #} -{% if data.deftblacl %} {% if data.defseqacl %} {% if 'deleted' in data.defseqacl %} {% for priv in data.defseqacl.deleted %} @@ -106,7 +105,7 @@ {% endif %} {% if 'changed' in data.defseqacl %} {% for priv in data.defseqacl.changed %} -{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'SEQUENCES', priv.grantee) }} +{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'SEQUENCES', priv.grantee, priv.grantor) }} {{ DEFAULT_PRIVILEGE.APPLY(conn, 'SEQUENCES', priv.grantee, priv.without_grant, priv.with_grant, priv.grantor) }} {% endfor %} {% endif %} @@ -117,9 +116,26 @@ {% endif %} {% endif %} - - +{# Change the default priviledges/ACLs for types #} +{% if data.deftypeacl %} +{% if 'deleted' in data.deftypeacl %} +{% for priv in data.deftypeacl.deleted %} +{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'TYPES', priv.grantee, priv.grantor) }} +{% endfor %} {% endif %} +{% if 'changed' in data.deftypeacl %} +{% for priv in data.deftypeacl.changed %} +{{ DEFAULT_PRIVILEGE.RESETALL(conn, 'TYPES', priv.grantee, priv.grantor) }} +{{ DEFAULT_PRIVILEGE.APPLY(conn, 'TYPES', priv.grantee, priv.without_grant, priv.with_grant, priv.grantor) }} +{% endfor %} +{% endif %} +{% if 'added' in data.deftypeacl %} +{% for priv in data.deftypeacl.added %} +{{ DEFAULT_PRIVILEGE.APPLY(conn, 'TYPES', priv.grantee, priv.without_grant, priv.with_grant, priv.grantor) }} +{% endfor %} +{% endif %} +{% endif %} + {# Change the security labels #} {% if data.seclabels and data.seclabels|length > 0 %} {% set seclabels = data.seclabels %} diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..886b20e21 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_add_all.sql @@ -0,0 +1,26 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..ef6a1129b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_all.sql @@ -0,0 +1,28 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..87745cf94 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,14 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_types.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_types.sql index a69c5b5c1..3d0f6de53 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_types.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/alter_default_db_privileges_types.sql @@ -22,3 +22,4 @@ GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_icu_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_icu_msql.sql index 5fef1e633..de655f762 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_icu_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_icu_msql.sql @@ -11,3 +11,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_new_options_libc_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_new_options_libc_msql.sql index 20ea61ab5..d7dcb7603 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_new_options_libc_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/create_database_new_options_libc_msql.sql @@ -8,3 +8,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/test_database.json index 1ae6ee301..12a578039 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/15_plus/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -96,14 +98,15 @@ }, "deftblacl": {"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,11 +141,70 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, - "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, { "type": "create", "name": "Create Database with new options and libc", diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/create_database_icu_rules_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/create_database_icu_rules_msql.sql index 61b522bf7..f60a44ee4 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/create_database_icu_rules_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/create_database_icu_rules_msql.sql @@ -12,3 +12,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/test_database.json index f03174dd7..1eee94b0e 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/16_plus/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -96,14 +98,15 @@ }, "deftblacl": {"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,11 +141,70 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, - "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, { "type": "create", "name": "Create Database with new options and libc", diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..63ee525ee --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_all.sql @@ -0,0 +1,31 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, MAINTAIN, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_msql.sql new file mode 100644 index 000000000..0d9605316 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_add_msql.sql @@ -0,0 +1,12 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, MAINTAIN, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..d006ba0da --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all.sql @@ -0,0 +1,33 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT MAINTAIN ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all_msql.sql new file mode 100644 index 000000000..08264a963 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_all_msql.sql @@ -0,0 +1,27 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON FUNCTIONS FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT MAINTAIN ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT TRUNCATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TYPES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..b16d8caf5 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,19 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_reset_all.sql new file mode 100644 index 000000000..b16d8caf5 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/alter_default_db_privileges_reset_all.sql @@ -0,0 +1,19 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM postgres; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO postgres; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/create_database_builtin_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/create_database_builtin_msql.sql index 366ba5adb..fb7fdc549 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/create_database_builtin_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/create_database_builtin_msql.sql @@ -11,3 +11,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/test_database.json index 1bacac234..7e36723ec 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/17_plus/test_database.json @@ -1,600 +1,663 @@ { - "scenarios": [ - { - "type": "alter", - "name": "Alert default priviliges for functions", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deffuncacl": { - "deleted": [ - { - "grantor": "postgres", - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "X", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ] - } - }, - "expected_sql_file": "alter_default_db_privileges_function.sql", - "expected_msql_file": "alter_default_db_privileges_function_msql.sql" + "scenarios": [ + { + "type": "alter", + "name": "Alert default privileges for functions", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": { + "deleted": [ + { + "grantor": "postgres", + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ] + } }, - { - "type": "alter", - "name": "Alert default privileges for tables", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deftblacl": { - "deleted": [ - { - "grantor": "postgres", - "grantee": "postgres", - "privileges": [ - {"privilege_type":"D","privilege":true,"with_grant":false}, - {"privilege_type":"w","privilege":true,"with_grant":false} - ], - "acltype": "deftblacl" - } - ], - "added": [ - { - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "r", - "privilege": true, - "with_grant": false - } - ], - "grantor": "postgres" - } - ] - } - }, - "expected_sql_file": "alter_default_db_privileges_tables.sql" + "expected_sql_file": "alter_default_db_privileges_function.sql", + "expected_msql_file": "alter_default_db_privileges_function_msql.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for tables", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deftblacl": { + "deleted": [ + { + "grantor": "postgres", + "grantee": "postgres", + "privileges": [ + {"privilege_type":"D","privilege":true,"with_grant":false}, + {"privilege_type":"w","privilege":true,"with_grant":false} + ], + "acltype": "deftblacl" + } + ], + "added": [ + { + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "r", + "privilege": true, + "with_grant": false + } + ], + "grantor": "postgres" + } + ] + } }, - { - "type": "alter", - "name": "Alert default privileges for sequences", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "defseqacl": { - "deleted": [ - { - "grantor": "postgres", - "grantee": "postgres", - "privileges": [ - { - "privilege_type": "w", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ], - "added":[ - {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, - {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"postgres"}] - }, - "deftblacl": {"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", + "expected_sql_file": "alter_default_db_privileges_tables.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for sequences", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "defseqacl": { + "deleted": [ + { + "grantor": "postgres", + "grantee": "postgres", + "privileges": [ + { + "privilege_type": "w", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ], + "added":[ + {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, + {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"postgres"}] }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "deftblacl": {"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - { - "type": "alter", - "name": "Alert default privileges for types", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deftypeacl": { - "deleted": [ - { - "grantor": "postgres", - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "U", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ] - } + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for types", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deftypeacl": { + "deleted": [ + { + "grantor": "postgres", + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "U", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ] + } + }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", + "expected_sql_file": "alter_default_db_privileges_types.sql" + }, + { + "type": "alter", + "name": "Alert default privileges reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - "expected_sql_file": "alter_default_db_privileges_types.sql" - }, - { - "type": "alter", - "name": "Alert default privileges reset all", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, - "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, - "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false},{"privilege_type":"m","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} - }, - "expected_sql_file": "alter_default_db_privileges_reset_all.sql" - }, - { - "type": "create", - "name": "Create Database with new options and libc", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "encoding": "UTF8", - "schema_res": [], - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + "expected_sql_file": "alter_default_db_privileges_reset_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"m","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"m","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, + { + "type": "create", + "name": "Create Database with new options and libc", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "encoding": "UTF8", + "schema_res": [], + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_new_options_libc.sql", - "expected_msql_file": "create_database_new_options_libc_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with icu options", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "icu", - "daticulocale": "en-US", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_icu.sql", - "expected_msql_file": "create_database_icu_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with icu rules options", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "icu", - "daticulocale": "und", - "daticurules": "&V << w <<< W", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_icu_rules.sql", - "expected_msql_file": "create_database_icu_rules_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with builtin option", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "builtin", - "datbuiltinlocale": "C.UTF-8", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "postgres", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_builtin.sql", - "expected_msql_file": "create_database_builtin_msql.sql" + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } + "expected_sql_file": "create_database_new_options_libc.sql", + "expected_msql_file": "create_database_new_options_libc_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#" } - ] - } + }, + { + "type": "create", + "name": "Create Database with icu options", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "icu", + "daticulocale": "en-US", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_icu.sql", + "expected_msql_file": "create_database_icu_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + }, + { + "type": "create", + "name": "Create Database with icu rules options", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "icu", + "daticulocale": "und", + "daticurules": "&V << w <<< W", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_icu_rules.sql", + "expected_msql_file": "create_database_icu_rules_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + }, + { + "type": "create", + "name": "Create Database with builtin option", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "builtin", + "datbuiltinlocale": "C.UTF-8", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "postgres", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_builtin.sql", + "expected_msql_file": "create_database_builtin_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..164845af0 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_all.sql @@ -0,0 +1,25 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_msql.sql new file mode 100644 index 000000000..0a1acefbf --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_add_msql.sql @@ -0,0 +1,12 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..880d95c88 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all.sql @@ -0,0 +1,27 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all_msql.sql new file mode 100644 index 000000000..9e112d637 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_all_msql.sql @@ -0,0 +1,27 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON FUNCTIONS FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT TRUNCATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TYPES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..15768fa0b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,13 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = postgres + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_sequences_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_sequences_msql.sql index 21fa758f5..5bd720963 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_sequences_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_sequences_msql.sql @@ -6,4 +6,4 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE ALL ON SEQUENCES FROM postgres; ALTER DEFAULT PRIVILEGES FOR ROLE postgres -GRANT USAGE, SELECT ON SEQUENCES TO PUBLIC; +GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_tables_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_tables_msql.sql index c0847b51c..997157f58 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_tables_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_tables_msql.sql @@ -1,6 +1,6 @@ ALTER DEFAULT PRIVILEGES FOR ROLE postgres - REVOKE ALL ON TABLES FROM PUBLIC; + REVOKE ALL ON TABLES FROM postgres; ALTER DEFAULT PRIVILEGES FOR ROLE postgres GRANT SELECT ON TABLES TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types.sql index b17d0774f..e9726d559 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types.sql @@ -21,3 +21,4 @@ GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; +ALTER DEFAULT PRIVILEGES FOR ROLE postgres REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types_msql.sql new file mode 100644 index 000000000..22bfbd6e9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/alter_default_db_privileges_types_msql.sql @@ -0,0 +1,4 @@ + + +ALTER DEFAULT PRIVILEGES FOR ROLE postgres + REVOKE ALL ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/test_database.json index 4e77d666c..0ef370ea3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/pg/default/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -96,14 +98,15 @@ }, "deftblacl": {"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,10 +141,69 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, - "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"postgres","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}],"deleted":[{"grantor":"postgres","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"postgres"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"postgres"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"postgres"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"postgres"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" } ] } diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..ac1c3b5f7 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_add_all.sql @@ -0,0 +1,26 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..1cca30e9a --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_all.sql @@ -0,0 +1,28 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..231a35c83 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,14 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_types.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_types.sql index fff9ffc15..151e84cd3 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_types.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/alter_default_db_privileges_types.sql @@ -21,3 +21,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_icu_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_icu_msql.sql index 868a440d2..c7e425bc5 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_icu_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_icu_msql.sql @@ -11,3 +11,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_new_options_libc_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_new_options_libc_msql.sql index 2fb3b2202..3e6c6e42d 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_new_options_libc_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/create_database_new_options_libc_msql.sql @@ -8,3 +8,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/test_database.json index b9e57fa03..3dd16a8b0 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/15_plus/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -90,20 +92,21 @@ "acltype": "defaultacls" } ], - "added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, + "added":[ + {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}] }, "deftblacl": {"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} - }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,11 +141,70 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, - "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, { "type": "create", "name": "Create Database with new options and libc", diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/create_database_icu_rules_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/create_database_icu_rules_msql.sql index 5259f3921..49f6b6a40 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/create_database_icu_rules_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/create_database_icu_rules_msql.sql @@ -12,3 +12,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/test_database.json index d6c54d7d3..e3a5ee697 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/16_plus/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -90,20 +92,21 @@ "acltype": "defaultacls" } ], - "added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, + "added":[ + {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}] }, "deftblacl": {"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} - }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,11 +141,70 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, - "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, { "type": "create", "name": "Create Database with new options and libc", diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..e241810a9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_all.sql @@ -0,0 +1,31 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, MAINTAIN, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_msql.sql new file mode 100644 index 000000000..d06a1858b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_add_msql.sql @@ -0,0 +1,12 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, MAINTAIN, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..3a839e343 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all.sql @@ -0,0 +1,33 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT MAINTAIN ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all_msql.sql new file mode 100644 index 000000000..b6f50b265 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_all_msql.sql @@ -0,0 +1,27 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON FUNCTIONS FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT MAINTAIN ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT TRUNCATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TYPES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..732b4b0de --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,19 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_reset_all.sql new file mode 100644 index 000000000..732b4b0de --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/alter_default_db_privileges_reset_all.sql @@ -0,0 +1,19 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + LOCALE_PROVIDER = 'libc' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM enterprisedb; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON TABLES TO enterprisedb; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/create_database_builtin_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/create_database_builtin_msql.sql index 09025cee1..be2099808 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/create_database_builtin_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/create_database_builtin_msql.sql @@ -11,3 +11,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON TABLES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON SEQUENCES FROM PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/test_database.json index 55968694f..efd331503 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/17_plus/test_database.json @@ -1,599 +1,663 @@ { - "scenarios": [ - { - "type": "alter", - "name": "Alert default priviliges for functions", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deffuncacl": { - "deleted": [ - { - "grantor": "enterprisedb", - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "X", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ] - } - }, - "expected_sql_file": "alter_default_db_privileges_function.sql", - "expected_msql_file": "alter_default_db_privileges_function_msql.sql" + "scenarios": [ + { + "type": "alter", + "name": "Alert default privileges for functions", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": { + "deleted": [ + { + "grantor": "enterprisedb", + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "X", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ] + } }, - { - "type": "alter", - "name": "Alert default privileges for tables", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deftblacl": { - "deleted": [ - { - "grantor": "enterprisedb", - "grantee": "enterprisedb", - "privileges": [ - {"privilege_type":"D","privilege":true,"with_grant":false}, - {"privilege_type":"w","privilege":true,"with_grant":false} - ], - "acltype": "deftblacl" - } - ], - "added": [ - { - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "r", - "privilege": true, - "with_grant": false - } - ], - "grantor": "enterprisedb" - } - ] - } - }, - "expected_sql_file": "alter_default_db_privileges_tables.sql" + "expected_sql_file": "alter_default_db_privileges_function.sql", + "expected_msql_file": "alter_default_db_privileges_function_msql.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for tables", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deftblacl": { + "deleted": [ + { + "grantor": "enterprisedb", + "grantee": "enterprisedb", + "privileges": [ + {"privilege_type":"D","privilege":true,"with_grant":false}, + {"privilege_type":"w","privilege":true,"with_grant":false} + ], + "acltype": "deftblacl" + } + ], + "added": [ + { + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "r", + "privilege": true, + "with_grant": false + } + ], + "grantor": "enterprisedb" + } + ] + } }, - { - "type": "alter", - "name": "Alert default privileges for sequences", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "defseqacl": { - "deleted": [ - { - "grantor": "enterprisedb", - "grantee": "enterprisedb", - "privileges": [ - { - "privilege_type": "w", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ], - "added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, - {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}] - }, - "deftblacl": {"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", + "expected_sql_file": "alter_default_db_privileges_tables.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for sequences", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "defseqacl": { + "deleted": [ + { + "grantor": "enterprisedb", + "grantee": "enterprisedb", + "privileges": [ + { + "privilege_type": "w", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ], + "added":[ + {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, + {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}] }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "deftblacl": {"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - { - "type": "alter", - "name": "Alert default privileges for types", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deftypeacl": { - "deleted": [ - { - "grantor": "enterprisedb", - "grantee": "PUBLIC", - "privileges": [ - { - "privilege_type": "U", - "privilege": true, - "with_grant": false - } - ], - "acltype": "defaultacls" - } - ] - } + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" + }, + { + "type": "alter", + "name": "Alert default privileges for types", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deftypeacl": { + "deleted": [ + { + "grantor": "enterprisedb", + "grantee": "PUBLIC", + "privileges": [ + { + "privilege_type": "U", + "privilege": true, + "with_grant": false + } + ], + "acltype": "defaultacls" + } + ] + } + }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", + "expected_sql_file": "alter_default_db_privileges_types.sql" + }, + { + "type": "alter", + "name": "Alert default privileges reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, - "expected_sql_file": "alter_default_db_privileges_types.sql" - }, - { - "type": "alter", - "name": "Alert default privileges reset all", - "endpoint": "NODE-database.obj_id", - "sql_endpoint": "NODE-database.sql_id", - "TEST_DB_NAME": "", - "REPLACE_LOCALE": true, - "data": { - "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, - "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, - "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false},{"privilege_type":"m","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} - }, - "expected_sql_file": "alter_default_db_privileges_reset_all.sql" - }, - { - "type": "create", - "name": "Create Database with new options and libc", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "encoding": "UTF8", - "schema_res": [], - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + "expected_sql_file": "alter_default_db_privileges_reset_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"m","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"m","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" + }, + { + "type": "create", + "name": "Create Database with new options and libc", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "encoding": "UTF8", + "schema_res": [], + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_new_options_libc.sql", - "expected_msql_file": "create_database_new_options_libc_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with icu options", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "icu", - "daticulocale": "en-US", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_icu.sql", - "expected_msql_file": "create_database_icu_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with icu rules options", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "icu", - "daticulocale": "und", - "daticurules": "&V << w <<< W", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_icu_rules.sql", - "expected_msql_file": "create_database_icu_rules_msql.sql" - }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } - }, - { - "type": "create", - "name": "Create Database with builtin option", - "endpoint": "NODE-database.obj", - "sql_endpoint": "NODE-database.sql_id", - "msql_endpoint": "NODE-database.msql", - "REPLACE_LOCALE": true, - "data": { - "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#", - "description": "This is a test comment", - "is_template": false, - "template": "template0", - "encoding": "UTF8", - "schema_res": [], - "datlocaleprovider": "builtin", - "datbuiltinlocale": "C.UTF-8", - "nspacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "C", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "seclabels": [], - "deftblacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "a", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "d", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "D", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "x", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "t", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "m", - "privilege": true, - "with_grant": false - }] - }], - "defseqacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "r", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "w", - "privilege": true, - "with_grant": false - }, { - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] - }], - "deffuncacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "X", - "privilege": true, - "with_grant": false - }] - }], - "deftypeacl": [{ - "grantee": "PUBLIC", - "grantor": "enterprisedb", - "privileges": [{ - "privilege_type": "U", - "privilege": true, - "with_grant": false - }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false }] - }, - "expected_sql_file": "create_database_builtin.sql", - "expected_msql_file": "create_database_builtin_msql.sql" + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] }, - { - "type": "delete", - "name": "Drop Database", - "endpoint": "NODE-database.delete_id", - "data": { - "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#" - } + "expected_sql_file": "create_database_new_options_libc.sql", + "expected_msql_file": "create_database_new_options_libc_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_$%{}[]()&*^!@\"\"\"\"'`\\/#" } - ] - } + }, + { + "type": "create", + "name": "Create Database with icu options", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "icu", + "daticulocale": "en-US", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_icu.sql", + "expected_msql_file": "create_database_icu_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_icu_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + }, + { + "type": "create", + "name": "Create Database with icu rules options", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "icu", + "daticulocale": "und", + "daticurules": "&V << w <<< W", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_icu_rules.sql", + "expected_msql_file": "create_database_icu_rules_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_icu_rules_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + }, + { + "type": "create", + "name": "Create Database with builtin option", + "endpoint": "NODE-database.obj", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql", + "REPLACE_LOCALE": true, + "data": { + "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#", + "description": "This is a test comment", + "is_template": false, + "template": "template0", + "encoding": "UTF8", + "schema_res": [], + "datlocaleprovider": "builtin", + "datbuiltinlocale": "C.UTF-8", + "nspacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "C", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "seclabels": [], + "deftblacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "a", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "d", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "D", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "x", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "t", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "m", + "privilege": true, + "with_grant": false + }] + }], + "defseqacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "r", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "w", + "privilege": true, + "with_grant": false + }, { + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }], + "deffuncacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "X", + "privilege": true, + "with_grant": false + }] + }], + "deftypeacl": [{ + "grantee": "PUBLIC", + "grantor": "enterprisedb", + "privileges": [{ + "privilege_type": "U", + "privilege": true, + "with_grant": false + }] + }] + }, + "expected_sql_file": "create_database_builtin.sql", + "expected_msql_file": "create_database_builtin_msql.sql" + }, + { + "type": "delete", + "name": "Drop Database", + "endpoint": "NODE-database.delete_id", + "data": { + "name": "test_database_builtin_$%{}[]()&*^!@\"\"\"\"'`\\/#" + } + } + ] +} diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_all.sql new file mode 100644 index 000000000..203097280 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_all.sql @@ -0,0 +1,25 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_msql.sql new file mode 100644 index 000000000..7a8ebd6be --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_add_msql.sql @@ -0,0 +1,12 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE, INSERT, UPDATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT SELECT, UPDATE ON SEQUENCES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all.sql new file mode 100644 index 000000000..8b53e1915 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all.sql @@ -0,0 +1,27 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = 'C' + LC_CTYPE = 'C' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT TRUNCATE ON TABLES TO test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all_msql.sql new file mode 100644 index 000000000..f3805a20c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_all_msql.sql @@ -0,0 +1,27 @@ + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON FUNCTIONS FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT EXECUTE ON FUNCTIONS TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TABLES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT DELETE ON TABLES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT TRUNCATE ON TABLES TO test_default_priv_user; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON SEQUENCES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT UPDATE ON SEQUENCES TO test_default_priv_user WITH GRANT OPTION; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TYPES FROM test_default_priv_user; +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb +GRANT USAGE ON TYPES TO test_default_priv_user WITH GRANT OPTION; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_newuser_reset_all.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_newuser_reset_all.sql new file mode 100644 index 000000000..776d9f3d6 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_newuser_reset_all.sql @@ -0,0 +1,13 @@ +-- Database: + +-- DROP DATABASE IF EXISTS ; + +CREATE DATABASE + WITH + OWNER = enterprisedb + ENCODING = 'UTF8' + LC_COLLATE = '' + LC_CTYPE = '' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_sequences_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_sequences_msql.sql index 87538766f..5d1828b01 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_sequences_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_sequences_msql.sql @@ -6,4 +6,4 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE ALL ON SEQUENCES FROM enterprisedb; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb -GRANT USAGE, SELECT ON SEQUENCES TO PUBLIC; +GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_tables_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_tables_msql.sql index b6a451d03..91353938b 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_tables_msql.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_tables_msql.sql @@ -1,6 +1,6 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb - REVOKE ALL ON TABLES FROM PUBLIC; + REVOKE ALL ON TABLES FROM enterprisedb; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb GRANT SELECT ON TABLES TO PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types.sql index 69312eb6d..c8ddc5d44 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types.sql +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types.sql @@ -20,3 +20,5 @@ ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb GRANT SELECT, USAGE ON SEQUENCES TO PUBLIC; ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb REVOKE USAGE ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types_msql.sql b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types_msql.sql new file mode 100644 index 000000000..68d8c305b --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/alter_default_db_privileges_types_msql.sql @@ -0,0 +1,4 @@ + + +ALTER DEFAULT PRIVILEGES FOR ROLE enterprisedb + REVOKE ALL ON TYPES FROM PUBLIC; diff --git a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/test_database.json b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/test_database.json index f537c7647..9221df0f7 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/test_database.json +++ b/web/pgadmin/browser/server_groups/servers/databases/tests/ppas/default/test_database.json @@ -2,7 +2,7 @@ "scenarios": [ { "type": "alter", - "name": "Alert default priviliges for functions", + "name": "Alert default privileges for functions", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", "msql_endpoint": "NODE-database.msql_id", @@ -34,6 +34,7 @@ "name": "Alert default privileges for tables", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -64,6 +65,7 @@ ] } }, + "expected_msql_file": "alter_default_db_privileges_tables_msql.sql", "expected_sql_file": "alter_default_db_privileges_tables.sql" }, { @@ -90,20 +92,21 @@ "acltype": "defaultacls" } ], - "added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, + "added":[ + {"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}, {"privilege_type":"r","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}] }, "deftblacl": {"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} - }, - "expected_sql_file": "alter_default_db_privileges_sequences.sql", - "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql" + "expected_msql_file": "alter_default_db_privileges_sequences_msql.sql", + "expected_sql_file": "alter_default_db_privileges_sequences.sql" }, { "type": "alter", "name": "Alert default privileges for types", "endpoint": "NODE-database.obj_id", "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", "TEST_DB_NAME": "", "REPLACE_LOCALE": true, "data": { @@ -125,6 +128,7 @@ } }, + "expected_msql_file": "alter_default_db_privileges_types_msql.sql", "expected_sql_file": "alter_default_db_privileges_types.sql" }, { @@ -137,10 +141,69 @@ "data": { "deffuncacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, "deftypeacl": {"added":[{"grantee":"PUBLIC","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, - "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false,"cid":"nn626"},{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn627"},{"privilege_type":"w","privilege":true,"with_grant":false,"cid":"nn628"},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, - "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false,"cid":"nn673"},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} + "deftblacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false},{"privilege_type":"D","privilege":true,"with_grant":false},{"privilege_type":"x","privilege":true,"with_grant":false},{"privilege_type":"t","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]}, + "defseqacl":{"added":[{"grantee":"enterprisedb","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}],"deleted":[{"grantor":"enterprisedb","grantee":"PUBLIC","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"U","privilege":true,"with_grant":false}],"acltype":"defaultacls"}]} }, "expected_sql_file": "alter_default_db_privileges_reset_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user add for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "deftblacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"a","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false},{"privilege_type":"d","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]}, + "defseqacl":{"added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false},{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_add_msql.sql", + "expected_sql_file": "alter_default_db_privileges_add_all.sql", + "pre_scenario_sql": "CREATE ROLE test_default_priv_user WITH NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;" + }, + { + "type": "alter", + "name": "Alert default privileges with new user for function, table, sequence and type", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "added":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":false}],"grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"r","privilege":true,"with_grant":false}], "grantor":"enterprisedb"}], + "changed":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_msql_file": "alter_default_db_privileges_all_msql.sql", + "expected_sql_file": "alter_default_db_privileges_all.sql" + }, + { + "type": "alter", + "name": "Alert default privileges with new user reset all", + "endpoint": "NODE-database.obj_id", + "sql_endpoint": "NODE-database.sql_id", + "msql_endpoint": "NODE-database.msql_id", + "TEST_DB_NAME": "", + "REPLACE_LOCALE": true, + "data": { + "deffuncacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"X","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftypeacl": {"deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"U","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "deftblacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"D","privilege":true,"with_grant":false}, {"privilege_type":"d","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]}, + "defseqacl":{ + "deleted":[{"grantee":"test_default_priv_user","privileges":[{"privilege_type":"w","privilege":true,"with_grant":true}],"grantor":"enterprisedb"}]} + }, + "expected_sql_file": "alter_default_db_privileges_newuser_reset_all.sql", + "post_scenario_sql": "DROP ROLE IF EXISTS test_default_priv_user;" } ] } diff --git a/web/pgadmin/browser/server_groups/servers/templates/macros/default_privilege.macros b/web/pgadmin/browser/server_groups/servers/templates/macros/default_privilege.macros index fc564f72d..3ffeb45a0 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/macros/default_privilege.macros +++ b/web/pgadmin/browser/server_groups/servers/templates/macros/default_privilege.macros @@ -1,11 +1,11 @@ {% macro APPLY(conn, type, role, privs, with_grant_privs, grantor) -%} {% if privs %} ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} -GRANT {{ privs|join(', ') }} ON {{ type }} TO {{ role }}; +GRANT {{ privs|sort|join(', ') }} ON {{ type }} TO {{ role }}; {% endif %} {% if with_grant_privs %} ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} -GRANT {{ with_grant_privs|join(', ') }} ON {{ type }} TO {{ role }} WITH GRANT OPTION; +GRANT {{ with_grant_privs|sort|join(', ') }} ON {{ type }} TO {{ role }} WITH GRANT OPTION; {% endif %} {%- endmacro %} {% macro RESETALL(conn, type, role, grantor) -%} @@ -16,11 +16,11 @@ ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} {% macro SET(conn, db_object_type, db_object_name, type, role, privs, with_grant_privs, grantor) -%} {% if privs %} ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} IN {{ db_object_type }} {{ conn|qtIdent(db_object_name) }} -GRANT {{ privs|join(', ') }} ON {{ type }} TO {{ role }}; +GRANT {{ privs|sort|join(', ') }} ON {{ type }} TO {{ role }}; {% endif %} {% if with_grant_privs %} ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} IN {{ db_object_type }} {{ conn|qtIdent(db_object_name) }} -GRANT {{ with_grant_privs|join(', ') }} ON {{ type }} TO {{ role }} WITH GRANT OPTION; +GRANT {{ with_grant_privs|sort|join(', ') }} ON {{ type }} TO {{ role }} WITH GRANT OPTION; {% endif %} {%- endmacro %} {% macro UNSET(conn, db_object_type, db_object_name, type, role, grantor) -%} @@ -30,9 +30,9 @@ ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} IN {{ db_object_type }} {{ conn|qt {% macro REMOVE(conn, type, role, privs, with_grant_privs, grantor) -%} {% if privs %} -ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} REVOKE {{ privs|join(', ') }} ON {{ type }} FROM {{ role }}; +ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} REVOKE {{ privs|sort|join(', ') }} ON {{ type }} FROM {{ role }}; {% endif %} {% if with_grant_privs %} -ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} REVOKE {{ with_grant_privs|join(', ') }} ON {{ type }} FROM {{ role }} WITH GRANT OPTION; +ALTER DEFAULT PRIVILEGES FOR ROLE {{grantor}} REVOKE {{ with_grant_privs|sort|join(', ') }} ON {{ type }} FROM {{ role }} WITH GRANT OPTION; {% endif %} {%- endmacro %} diff --git a/web/pgadmin/static/js/components/FormComponents.jsx b/web/pgadmin/static/js/components/FormComponents.jsx index 1f06a4f1a..752287428 100644 --- a/web/pgadmin/static/js/components/FormComponents.jsx +++ b/web/pgadmin/static/js/components/FormComponents.jsx @@ -1280,6 +1280,7 @@ const StyledNotifierMessageBox = styled(Box)(({theme}) => ({ '& .FormFooter-message': { color: theme.palette.text.primary, marginLeft: theme.spacing(0.5), + whiteSpace: 'pre-line' }, '& .FormFooter-messageCenter': { color: theme.palette.text.primary, diff --git a/web/pgadmin/static/js/helpers/ModalProvider.jsx b/web/pgadmin/static/js/helpers/ModalProvider.jsx index fdf48cc7b..d01d90e08 100644 --- a/web/pgadmin/static/js/helpers/ModalProvider.jsx +++ b/web/pgadmin/static/js/helpers/ModalProvider.jsx @@ -50,7 +50,7 @@ export function useModal() { function AlertContent({ text, confirm, okLabel = gettext('OK'), cancelLabel = gettext('Cancel'), onOkClick, onCancelClick, okIcon = 'default'}) { return ( - {typeof (text) == 'string' ? HTMLReactParser(text) : text} + {typeof (text) == 'string' ? HTMLReactParser(text) : text} {confirm && } onClick={onCancelClick}>{cancelLabel} diff --git a/web/pgadmin/utils/driver/psycopg3/connection.py b/web/pgadmin/utils/driver/psycopg3/connection.py index 019cff944..ee14af52a 100644 --- a/web/pgadmin/utils/driver/psycopg3/connection.py +++ b/web/pgadmin/utils/driver/psycopg3/connection.py @@ -40,7 +40,6 @@ from pgadmin.utils.master_password import get_crypt_key from io import StringIO from pgadmin.utils.locker import ConnectionLocker from pgadmin.utils.driver import get_driver -from pgadmin.browser.utils import underscore_escape # On Windows, Psycopg is not compatible with the default ProactorEventLoop. @@ -1689,7 +1688,6 @@ Failed to reset the connection to the server due to following error: # if formatted_msg is false then return from the function if not formatted_msg: notices = self.get_notices() - errmsg = underscore_escape(errmsg).replace('\n', '
') return errmsg if notices == '' else notices + '\n' + errmsg # Do not append if error starts with `ERROR:` as most pg related diff --git a/web/regression/re_sql/tests/test_resql.py b/web/regression/re_sql/tests/test_resql.py index d76a01ffe..18d0cc28e 100644 --- a/web/regression/re_sql/tests/test_resql.py +++ b/web/regression/re_sql/tests/test_resql.py @@ -21,6 +21,7 @@ from pgadmin.browser.server_groups.servers.databases.tests import \ from pgadmin.utils.versioned_template_loader import \ get_version_mapping_directories from pgadmin.utils.constants import DBMS_JOB_SCHEDULER_ID +from regression.python_test_utils.test_utils import set_isolation_level def create_resql_module_list(all_modules, exclude_pkgs, for_modules): @@ -255,6 +256,10 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): # Check precondition for schema self.check_schema_precondition(scenario) + if 'pre_scenario_sql' in scenario: + self.execute_prepost_sql( + scenario['pre_scenario_sql'], False) + # Preprocessed data to replace any place holder if available if 'preprocess_data' in scenario and \ scenario['preprocess_data'] and 'data' in scenario: @@ -363,6 +368,10 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): traceback.print_exc() continue + if 'post_scenario_sql' in scenario: + self.execute_prepost_sql( + scenario['post_scenario_sql'], False) + print(scenario['name'] + "... ok") except Exception as _: print(scenario['name'] + "... FAIL") @@ -599,6 +608,30 @@ class ReverseEngineeredSQLTestCases(BaseTestGenerator): pg_cursor.close() return precondition_flag + def execute_prepost_sql(self, sql, use_test_config_db_conn): + """ + This method executes post_condition_sql + :param post_condition_sql: SQL query + :param use_test_config_db_conn + """ + if use_test_config_db_conn: + conn = self.test_config_db_conn + pg_cursor = self.test_config_db_conn.cursor() + else: + self.get_db_connection() + conn = self.connection + pg_cursor = self.connection.cursor() + + try: + old_isolation_level = conn.isolation_level + set_isolation_level(conn, 0) + pg_cursor.execute(sql) + set_isolation_level(conn, old_isolation_level) + conn.commit() + except Exception as e: + traceback.print_exc() + pg_cursor.close() + def check_schema_precondition(self, scenario): """ This function will check the given schema is exist or not. If exist