mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-05 20:42:54 +00:00
Grant pg_monitor to neon_superuser (#6691)
## Problem The people want pg_monitor https://github.com/neondatabase/neon/issues/6682 ## Summary of changes Gives the people pg_monitor
This commit is contained in:
@@ -776,6 +776,7 @@ BEGIN
|
||||
END IF;
|
||||
END
|
||||
$$;"#,
|
||||
"GRANT pg_monitor TO neon_superuser WITH ADMIN OPTION",
|
||||
];
|
||||
|
||||
let mut query = "CREATE SCHEMA IF NOT EXISTS neon_migration";
|
||||
|
||||
@@ -15,7 +15,7 @@ def test_migrations(neon_simple_env: NeonEnv):
|
||||
|
||||
endpoint.wait_for_migrations()
|
||||
|
||||
num_migrations = 3
|
||||
num_migrations = 4
|
||||
|
||||
with endpoint.cursor() as cur:
|
||||
cur.execute("SELECT id FROM neon_migration.migration_id")
|
||||
@@ -24,7 +24,7 @@ def test_migrations(neon_simple_env: NeonEnv):
|
||||
|
||||
with open(log_path, "r") as log_file:
|
||||
logs = log_file.read()
|
||||
assert "INFO handle_migrations: Ran 3 migrations" in logs
|
||||
assert f"INFO handle_migrations: Ran {num_migrations} migrations" in logs
|
||||
|
||||
endpoint.stop()
|
||||
endpoint.start()
|
||||
|
||||
@@ -76,3 +76,21 @@ def test_neon_superuser(neon_simple_env: NeonEnv, pg_version: PgVersion):
|
||||
assert [r[0] for r in res] == [10, 20, 30, 40]
|
||||
|
||||
wait_until(10, 0.5, check_that_changes_propagated)
|
||||
|
||||
# Test that pg_monitor is working for neon_superuser role
|
||||
cur.execute("SELECT query from pg_stat_activity LIMIT 1")
|
||||
assert cur.fetchall()[0][0] != "<insufficient privilege>"
|
||||
# Test that pg_monitor is not working for non neon_superuser role without grant
|
||||
cur.execute("CREATE ROLE not_a_superuser LOGIN PASSWORD 'Password42!'")
|
||||
cur.execute("GRANT not_a_superuser TO neon_superuser WITH ADMIN OPTION")
|
||||
cur.execute("SET ROLE not_a_superuser")
|
||||
cur.execute("SELECT query from pg_stat_activity LIMIT 1")
|
||||
assert cur.fetchall()[0][0] == "<insufficient privilege>"
|
||||
cur.execute("RESET ROLE")
|
||||
# Test that pg_monitor is working for non neon_superuser role with grant
|
||||
cur.execute("GRANT pg_monitor TO not_a_superuser")
|
||||
cur.execute("SET ROLE not_a_superuser")
|
||||
cur.execute("SELECT query from pg_stat_activity LIMIT 1")
|
||||
assert cur.fetchall()[0][0] != "<insufficient privilege>"
|
||||
cur.execute("RESET ROLE")
|
||||
cur.execute("DROP ROLE not_a_superuser")
|
||||
|
||||
Reference in New Issue
Block a user