43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import os
|
|
from unittest.mock import patch
|
|
import pytest
|
|
|
|
from rook.policy import is_approved_dir, confirm_spawn, backup_before_edit, check_allowlist
|
|
|
|
|
|
def test_is_approved_dir_true():
|
|
assert is_approved_dir(os.path.expanduser('~/dev/myproject')) == True
|
|
|
|
|
|
def test_is_approved_dir_false():
|
|
assert is_approved_dir('/tmp/evil') == False
|
|
|
|
|
|
def test_is_approved_dir_subpath():
|
|
assert is_approved_dir(os.path.expanduser('~/logs/app.log')) == True
|
|
|
|
|
|
def test_confirm_spawn_yes():
|
|
with patch('builtins.input', return_value='y'):
|
|
assert confirm_spawn('git push', 'origin main') == True
|
|
|
|
|
|
def test_confirm_spawn_no():
|
|
with patch('builtins.input', return_value='n'):
|
|
assert confirm_spawn('rm file', 'myfile.txt') == False
|
|
|
|
|
|
def test_backup_before_edit(tmp_path):
|
|
tmp_file = tmp_path / 'sample.txt'
|
|
tmp_file.write_text('hello')
|
|
backup_path = backup_before_edit(str(tmp_file))
|
|
assert os.path.exists(backup_path)
|
|
assert open(backup_path).read() == 'hello'
|
|
|
|
|
|
def test_check_allowlist():
|
|
assert check_allowlist('file', 'read') == True
|
|
assert check_allowlist('file', 'delete') == False
|
|
assert check_allowlist('git', 'push') == False
|
|
assert check_allowlist('git', 'commit') == True
|