64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
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
|