Skip to content

Commit

Permalink
Test the privilege serialization doesn't write empty databases (#6701)
Browse files Browse the repository at this point in the history
  • Loading branch information
macneale4 authored Sep 25, 2023
1 parent d83e6b4 commit 2174001
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions integration-tests/bats/sql-privs.bats
Original file line number Diff line number Diff line change
Expand Up @@ -700,3 +700,45 @@ behavior:
run dolt sql-client -P $PORT -u test --use-db test_db -q "show tables"
[ $status -ne 0 ]
}

# Don't run this test with a server - we want to ensure that the privileges file
# is being serialized, persisted, and loaded
@test "sql-privs: revoking last privilege doesn't result in corrupted privileges file" {
make_test_repo

dolt sql -q "CREATE USER tester@localhost"
dolt sql -q "GRANT SELECT ON test_db.* TO tester@localhost"
dolt sql -q "REVOKE SELECT ON test_db.* FROM tester@localhost"

run dolt sql -q "SHOW GRANTS FOR tester@localhost"
[ $status -eq 0 ]
[[ $output =~ "GRANT USAGE ON *.* TO \`tester\`@\`localhost\`" ]] || false
! [[ $output =~ "SELECT" ]] || false

dolt sql -q "GRANT SELECT ON test_db.* TO tester@localhost"
dolt sql -q "GRANT UPDATE ON test_db.* TO tester@localhost"
run dolt sql -q "SHOW GRANTS FOR tester@localhost"
[ $status -eq 0 ]
[[ $output =~ "GRANT USAGE ON *.* TO \`tester\`@\`localhost\`" ]] || false
[[ $output =~ "GRANT SELECT, UPDATE ON \`test_db\`.* TO \`tester\`@\`localhost\`" ]] || false

dolt sql -q "REVOKE UPDATE ON test_db.* FROM tester@localhost"
run dolt sql -q "SHOW GRANTS FOR tester@localhost"
[ $status -eq 0 ]
[[ $output =~ "GRANT USAGE ON *.* TO \`tester\`@\`localhost\`" ]] || false
[[ $output =~ "GRANT SELECT ON \`test_db\`.* TO \`tester\`@\`localhost\`" ]] || false
! [[ $output =~ "UPDATE" ]] || false
}

@test "sql-privs: revoking all privleges doesn't result in a corrupted privileges file" {
make_test_repo

dolt sql -q "CREATE USER tester@localhost"
dolt sql -q "GRANT SELECT ON test_db.* TO tester@localhost"
dolt sql -q "REVOKE ALL ON test_db.* FROM tester@localhost"

run dolt sql -q "SHOW GRANTS FOR tester@localhost"
[ $status -eq 0 ]
[[ $output =~ "GRANT USAGE ON *.* TO \`tester\`@\`localhost\`" ]] || false
! [[ $output =~ "SELECT" ]] || false
}

0 comments on commit 2174001

Please sign in to comment.