Adiciona testes do conector com fixtures offline

Cobre o caminho completo sem depender da VPS estar no ar: cifra com uma
chave de teste descartavel, troca a chave do app por monkeypatch e exercita
a rota.

8 casos: recusa sem token e com token errado; caminho feliz; envelope
adulterado (o GCM tem que estourar, nao passar); cifrado com outra chave;
payload fora do contrato (422, nao 200 nem 500); e dois travando o contrato
com a API da VPS — se o PayloadCompras dos dois lados divergir, quebra aqui
em vez de em producao.

Fixtures em tests/fixtures/: par de chaves so pra teste, o payload real do
Holmes e o payload ja tratado. O .gitignore abre excecao estreita pra
tests/fixtures/*.pem — chave real continua barrada.

Tambem:
- 422 passa a usar HTTP_422_UNPROCESSABLE_CONTENT (o _ENTITY deprecou)
- app/services/holmes.py removido: o conector nao fala com o Holmes
- app/utils/cesar.py entra como veio

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ricardo 2026-08-18 06:13:13 -03:00
parent f902ccbecb
commit 7a9b0f8aa5
9 changed files with 283 additions and 705 deletions

21
tests/fixtures/payload_tratado.json vendored Normal file
View file

@ -0,0 +1,21 @@
{
"id_processo": "6a6a59266f8555a6725125a7",
"protocolo": "protocolo",
"cnpj": "28482230000153",
"pedido_linx": "345",
"fornecedor": "ACIMAQ EQUIPAMENTOS INDUSTRIAIS E COMERCIAIS LTDA",
"tipo": "COMPRA INTERNA - DESPESAS",
"nf_entrada": null,
"aprovador": "Acrisio Dos Santos",
"valor_total": 202340.52,
"parcelas": {
"1": {
"valor": 100.0,
"vencimento": null
},
"2": {
"valor": 100.0,
"vencimento": null
}
}
}