From 6a307981242f21e75baeafdeca7cf3bea673fb0d Mon Sep 17 00:00:00 2001 From: Maxson Almeida Date: Fri, 31 Oct 2025 09:00:15 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20build=5Furl=5Ftech=5Ffloripa=20aceita?= =?UTF-8?q?=20solana=5Fresponse=20e=20adiciona=20metadados;=20ajusta=20Cer?= =?UTF-8?q?tifiedBuilder=20e=20conftest=20para=20URL=20de=20valida=C3=A7?= =?UTF-8?q?=C3=A3o=20mock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- certified_builder/build_url_tech_floripa.py | 22 ++++++++++++++++++--- certified_builder/certified_builder.py | 9 ++------- tests/conftest.py | 3 ++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/certified_builder/build_url_tech_floripa.py b/certified_builder/build_url_tech_floripa.py index 6ad600d..41ffece 100644 --- a/certified_builder/build_url_tech_floripa.py +++ b/certified_builder/build_url_tech_floripa.py @@ -1,9 +1,25 @@ from config import config -def build_url_tech_floripa(url_service_solona: str, validation_code: str, order_id: str) -> str: + +def build_url_tech_floripa(solana_response: dict, validation_code: str, order_id: str) -> str: try: - txid_solana = url_service_solona.split('/')[-1] - full_url = f"{config.TECH_FLORIPA_CERTIFICATE_VALIDATE_URL}?validate_code={validation_code}&hash={txid_solana}&order_id={order_id}" + base_url = config.TECH_FLORIPA_CERTIFICATE_VALIDATE_URL + + url_service_solona = solana_response.get("blockchain", {}).get("verificacao_url", "") + registered_time = solana_response.get("certificado", {}).get("time", "") + registered_uuid = solana_response.get("certificado", {}).get("uuid", "") + registered_name = solana_response.get("certificado", {}).get("name", "") + + txid_solana = url_service_solona.rsplit("/", 1)[-1] if url_service_solona else "" + + full_url = ( + f"{base_url}?validate_code={validation_code}" + f"&hash={txid_solana}" + f"&order_id={order_id}" + f"®istered_time={registered_time}" + f"®istered_uuid={registered_uuid}" + f"®istered_name={registered_name}" + ) return full_url except Exception as e: raise ValueError(f"Error building Tech Floripa URL: {str(e)}") \ No newline at end of file diff --git a/certified_builder/certified_builder.py b/certified_builder/certified_builder.py index bab342a..542d81a 100644 --- a/certified_builder/certified_builder.py +++ b/certified_builder/certified_builder.py @@ -57,14 +57,9 @@ def build_certificates(self, participants: List[Participant]): "certificate_code": participant.formated_validation_code() } ) - # solana_response = { - # "blockchain": { - # "verificacao_url": "https://www.google.com" - # } - # } - + participant.authenticity_verification_url = build_url_tech_floripa( - url_service_solona=solana_response.get("blockchain", {}).get("verificacao_url", ""), + solana_response=solana_response, validation_code=participant.formated_validation_code(), order_id=participant.event.order_id ) diff --git a/tests/conftest.py b/tests/conftest.py index c1cd86c..967d1ec 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,7 +20,8 @@ class MockConfig: QUEUE_URL = "https://sqs.us-east-1.amazonaws.com/000000000000/test" SERVICE_URL_REGISTRATION_API_SOLANA = "https://example.test/solana/register" SERVICE_API_KEY_REGISTRATION_API_SOLANA = "test-api-key" - TECH_FLORIPA_CERTIFICATE_VALIDATE_URL = "https://example.test/validate/certificate" + # comentário: URL de validação mockada para o Tech Floripa usada nos testes + TECH_FLORIPA_CERTIFICATE_VALIDATE_URL = "https://example.test/certificate-validate/" # comentário: expõe tanto a classe quanto a instância, como o módulo real faria mock_module.Config = MockConfig