openTARS / app /tests /test_comando_perigoso.py
ProjectOpenTARS4's picture
Mirror of openTARS 5.2 Ranger (revision 2026110101)
2695555 verified
Raw History Blame Contribute Delete
1.73 kB
from _util import carregar_tars
import builtins
tars = carregar_tars()
casos_perigosos = ["rm -rf /", "rm -rf ~/projeto", "sudo dd if=/dev/zero of=/dev/sda", "mkfs.ext4 /dev/sdb1", "shutdown now", ":(){ :|:& };:"]
casos_seguros = ["ls -la", "echo oi", "rm arquivo.txt", "df -h", "cat README.md"]
for cmd in casos_perigosos:
assert tars._comando_e_perigoso(cmd), f"deveria ser perigoso: {cmd}"
print("OK: todos os comandos perigosos foram detectados")
for cmd in casos_seguros:
assert not tars._comando_e_perigoso(cmd), f"nao deveria ser perigoso: {cmd}"
print("OK: comandos seguros nao disparam confirmacao")
# mv que some com o arquivo ou tira a raiz/a pasta pessoal do lugar (o padrão antigo não pegava nada útil)
for cmd in ["mv ~/projeto /dev/null", "mv -f dados.db /dev/null", "mv / /tmp/x", "mv ~ /tmp/casa", "mv $HOME /mnt/x"]:
assert tars._comando_e_perigoso(cmd), f"deveria ser perigoso: {cmd}"
for cmd in ["mv a.txt b.txt", "mv ~/a.txt ~/b.txt", "mv relatorio.pdf ~/Documentos/", "ls /dev/null"]:
assert not tars._comando_e_perigoso(cmd), f"nao deveria ser perigoso: {cmd}"
print("OK: mv pra /dev/null e mv da raiz/da casa pedem confirmação; mv comum não")
# Simula usuario recusando -> comando nao roda
builtins.input = lambda *a, **k: "n"
r = tars.executar_terminal("rm -rf /tmp/teste")
assert r["sucesso"] is False
assert "cancelled" in r["mensagem"].lower()
print("OK: recusa cancela o comando:", r["mensagem"])
# Simula usuario confirmando -> comando roda de fato
builtins.input = lambda *a, **k: "s"
r = tars.executar_terminal("echo teste_perigoso_confirmado")
print("resultado apos confirmar (comando inofensivo usado so p/ nao mexer no disco de verdade):", r)
print("\nTUDO OK.")