#![allow(unused_variables)]
#[path = "testutils/mod.rs"]
mod testutils;
use testutils::test_fixture::TestFixture;
#[test]
fn test_grant_revoke_basic_functionality() {
let fixture = TestFixture::empty().expect("Failed to create test fixture");
fixture.assert_query_succeeds("CREATE ROLE 'test_role'");
fixture.assert_query_succeeds("CREATE USER 'test_user' PASSWORD 'password'");
let grant_result = fixture.assert_query_succeeds("GRANT ROLE 'test_role' TO 'test_user'");
let duplicate_grant = fixture.assert_query_succeeds("GRANT ROLE 'test_role' TO 'test_user'");
let revoke_result = fixture.assert_query_succeeds("REVOKE ROLE 'test_role' FROM 'test_user'");
let revoke_missing = fixture.assert_query_succeeds("REVOKE ROLE 'test_role' FROM 'test_user'");
}
#[test]
fn test_role_error_scenarios() {
let fixture = TestFixture::empty().expect("Failed to create test fixture");
fixture.assert_query_succeeds("CREATE ROLE 'existing_role'");
fixture.assert_query_succeeds("CREATE USER 'existing_user' PASSWORD 'password'");
fixture.assert_query_fails(
"GRANT ROLE 'nonexistent_role' TO 'existing_user'",
"does not exist",
);
fixture.assert_query_fails(
"GRANT ROLE 'existing_role' TO 'nonexistent_user'",
"does not exist",
);
fixture.assert_query_fails(
"REVOKE ROLE 'nonexistent_role' FROM 'existing_user'",
"does not exist",
);
fixture.assert_query_fails(
"REVOKE ROLE 'existing_role' FROM 'nonexistent_user'",
"does not exist",
);
}
#[test]
fn test_system_role_protection() {
let fixture = TestFixture::empty().expect("Failed to create test fixture");
fixture.assert_query_succeeds("CREATE USER 'protected_user' PASSWORD 'password'");
fixture.assert_query_fails(
"REVOKE ROLE 'user' FROM 'protected_user'",
"Cannot revoke system role 'user'",
);
fixture.assert_query_fails(
"REVOKE ROLE 'admin' FROM 'admin'",
"Cannot revoke 'admin' role from 'admin' user",
);
}