testes para função 'gerar_assinatura_SHA256_ficheiro()'
This commit is contained in:
63
tests/test_utils.py
Normal file
63
tests/test_utils.py
Normal file
@ -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
|
||||||
Reference in New Issue
Block a user