From 446cd24c7460b3af539b9a9bb64a7fc8133abf7c Mon Sep 17 00:00:00 2001 From: Luis Rodrigues Date: Sat, 26 Apr 2025 19:19:27 +0100 Subject: [PATCH] =?UTF-8?q?testes=20para=20fun=C3=A7=C3=A3o=20'gerar=5Fass?= =?UTF-8?q?inatura=5FSHA256=5Fficheiro()'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_utils.py | 63 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tests/test_utils.py diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..c671772 --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,63 @@ +import pytest +from modules.utils import gerar_assinatura_SHA256_ficheiro +import hashlib + + +def test_gerar_assinatura_SHA256_ficheiro(tmp_path): + # criar ficheiro temporario + ficheiro = tmp_path / "teste.txt" + conteudo = "Conteudo de teste" + ficheiro.write_text(conteudo) + # gerar assinatura usando a função 'gerar_assinatura_SHA256_ficheiro()' + assinatura_funcao = gerar_assinatura_SHA256_ficheiro(str(ficheiro)) + # gerar assinatura manualmente para comparar + with open(ficheiro, "rb") as f: + assinatura_manual = hashlib.sha256(f.read()).hexdigest() + # verificar se ambas as assinaturas coincidem + assert assinatura_funcao == assinatura_manual + + +def test_gerar_assinatura_SHA256_ficheiro_inexistente(): + # testar comportamento se ficheiro não existir + with pytest.raises(FileNotFoundError): + gerar_assinatura_SHA256_ficheiro("ficheiro_que_nao_existe.txt") + + +def test_gerar_assinatura_SHA256_ficheiro_grande(tmp_path): + ficheiro_grande = tmp_path / "grande.txt" + conteudo = "ABCDE" * 10**5 # muito conteudo + ficheiro_grande.write_text(conteudo) + + assinatura_funcao = gerar_assinatura_SHA256_ficheiro(str(ficheiro_grande)) + + with open(ficheiro_grande, "rb") as f: + assinatura_manual = hashlib.sha256(f.read()).hexdigest() + + assert assinatura_funcao == assinatura_manual + + +def test_gerar_assinatura_SHA256_ficheiro_binario(tmp_path): + ficheiro_binario = tmp_path / "ficheiro.bin" + conteudo_binario = bytes(range(256)) # cria bytes de 0 a 255 + ficheiro_binario.write_bytes(conteudo_binario) + + assinatura_funcao = gerar_assinatura_SHA256_ficheiro(str(ficheiro_binario)) + + with open(ficheiro_binario, "rb") as f: + assinatura_manual = hashlib.sha256(f.read()).hexdigest() + + assert assinatura_funcao == assinatura_manual + + +def test_gerar_assinatura_SHA256_ficheiros_iguais(tmp_path): + ficheiro1 = tmp_path / "ficheiro1.txt" + ficheiro2 = tmp_path / "ficheiro2.txt" + conteudo = "Conteudo igual nos dois ficheiros" + + ficheiro1.write_text(conteudo) + ficheiro2.write_text(conteudo) + + assinatura1 = gerar_assinatura_SHA256_ficheiro(str(ficheiro1)) + assinatura2 = gerar_assinatura_SHA256_ficheiro(str(ficheiro2)) + + assert assinatura1 == assinatura2