MCPcopy Create free account
hub / github.com/erans/pgsqlite / test_privilege_functions

Function test_privilege_functions

src/functions/system_functions.rs:578–661  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

576
577 #[test]
578 fn test_privilege_functions() {
579 let conn = Connection::open_in_memory().unwrap();
580 register_system_functions(&conn).unwrap();
581
582 // Test pg_has_role - 2 parameter version (current user)
583 let has_role_2p: i32 = conn.query_row(
584 "SELECT pg_has_role('pg_read_all_data', 'USAGE')",
585 [],
586 |row| row.get(0)
587 ).unwrap();
588 assert_eq!(has_role_2p, 1); // true
589
590 // Test pg_has_role - 3 parameter version
591 let has_role_3p: i32 = conn.query_row(
592 "SELECT pg_has_role('postgres', 'pg_read_all_data', 'USAGE')",
593 [],
594 |row| row.get(0)
595 ).unwrap();
596 assert_eq!(has_role_3p, 1); // true
597
598 // Test pg_has_role - security-sensitive role should return false
599 let has_sensitive_role: i32 = conn.query_row(
600 "SELECT pg_has_role('pg_read_server_files', 'USAGE')",
601 [],
602 |row| row.get(0)
603 ).unwrap();
604 assert_eq!(has_sensitive_role, 0); // false
605
606 // Test has_database_privilege
607 let has_db_priv: i32 = conn.query_row(
608 "SELECT has_database_privilege('postgres', 'main', 'CREATE')",
609 [],
610 |row| row.get(0)
611 ).unwrap();
612 assert_eq!(has_db_priv, 1); // true
613
614 // Test has_schema_privilege
615 let has_schema_priv: i32 = conn.query_row(
616 "SELECT has_schema_privilege('postgres', 'public', 'CREATE')",
617 [],
618 |row| row.get(0)
619 ).unwrap();
620 assert_eq!(has_schema_priv, 1); // true
621
622 // Test has_table_privilege - 2 parameter version (current user)
623 let has_table_priv_2p: i32 = conn.query_row(
624 "SELECT has_table_privilege('pg_class', 'SELECT')",
625 [],
626 |row| row.get(0)
627 ).unwrap();
628 assert_eq!(has_table_priv_2p, 1); // true - can read system catalogs
629
630 // Test has_table_privilege - 3 parameter version
631 let has_table_priv_3p: i32 = conn.query_row(
632 "SELECT has_table_privilege('postgres', 'pg_class', 'SELECT')",
633 [],
634 |row| row.get(0)
635 ).unwrap();

Callers

nothing calls this directly

Calls 2

getMethod · 0.45

Tested by

no test coverage detected