From b1df0d7ebfe995d81c00dc09f9f6aa9caf0173d4 Mon Sep 17 00:00:00 2001 From: Porya Isfahani Date: Wed, 21 Jan 2026 08:47:25 -0500 Subject: [PATCH] add signing document tests --- tests/conftest.py | 7 +++ tests/media/sample_signing_document.pdf | Bin 0 -> 3164 bytes tests/test_signing_documents.py | 65 ++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 tests/media/sample_signing_document.pdf create mode 100644 tests/test_signing_documents.py diff --git a/tests/conftest.py b/tests/conftest.py index ab1b852..f8eb867 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -80,6 +80,13 @@ def upload_id_photo(onfido_api, applicant_id): ) +def upload_signing_document(onfido_api, applicant_id, file_path="tests/media/sample_signing_document.pdf"): + return onfido_api.upload_signing_document( + applicant_id=applicant_id, + file=file_path, + ) + + def create_check( onfido_api, check_builder=None, diff --git a/tests/media/sample_signing_document.pdf b/tests/media/sample_signing_document.pdf new file mode 100644 index 0000000000000000000000000000000000000000..aceafc9e522c019c5b5b9d49c8a8aaf34acf2a96 GIT binary patch literal 3164 zcmeH~(N4lJ6o&8n6z67%UdYzLh9qPcAjCwC1a?QbD6E?$(3-9@=u3Lx8|aI8x&b1- zfoZR{zyIku{ja`ylbi7sZFPwE`St!mCjVi#Ou!5HmqG1Y2 zLb%MV(f8XInBz z@f-@Mr8#u5ZxBG5!Np7zQpf@_wW_vuQh}2cni-)a7+xC4#m-ckx4>Cl0xkiUfJ?w7 z;1X~NxCH)b0+*1kVU$`X-qYirjxBs1Ftfqw8cqFKwKO$dTM-#~z)Ifi-15x}H)6$3 zV0EW?PLO^{a9j{aQ9FVhjvB>Yc7goSV#M4tjfRN$XIj|lo@-%`B5)skMl-SDx_%YR e#2begiCZa)_xsmCX_z+koMG=eAf7jR9FuPY>2c)% literal 0 HcmV?d00001 diff --git a/tests/test_signing_documents.py b/tests/test_signing_documents.py new file mode 100644 index 0000000..43baf5d --- /dev/null +++ b/tests/test_signing_documents.py @@ -0,0 +1,65 @@ +import pytest +from pydantic import ValidationError + +from onfido import ApiException, SigningDocument, SigningDocumentsList +from tests.conftest import create_applicant, upload_signing_document + +INEXISTENT_SIGNING_DOCUMENT_ID = "00000000-0000-0000-0000-000000000000" + + +@pytest.fixture(scope="function") +def applicant(onfido_api): + return create_applicant(onfido_api) + + +@pytest.fixture(scope="function") +def signing_document(onfido_api, applicant): + return upload_signing_document(onfido_api, applicant.id) + + +def test_upload_signing_document(signing_document, applicant): + assert isinstance(signing_document, SigningDocument) + assert signing_document.file_name == "sample_signing_document.pdf" + assert signing_document.file_type == "pdf" + assert signing_document.applicant_id == applicant.id + assert signing_document.href is not None + assert signing_document.download_href is not None + assert signing_document.file_size is not None and signing_document.file_size > 0 + assert signing_document.model_dump_json(by_alias=True, exclude_none=True) is not None + + +def test_download_signing_document(onfido_api, signing_document): + file_contents = onfido_api.download_signing_document(signing_document.id) + + assert len(file_contents) > 0 + assert bytes(file_contents[:4]) == b"%PDF" + + +def test_find_signing_document(onfido_api, signing_document, applicant): + found = onfido_api.find_signing_document(signing_document.id) + + assert isinstance(found, SigningDocument) + assert found.id == signing_document.id + assert found.file_name == "sample_signing_document.pdf" + assert found.file_type == "pdf" + assert found.applicant_id == applicant.id + assert found.download_href is not None + assert found.model_dump_json(by_alias=True, exclude_none=True) is not None + + +def test_list_signing_documents(onfido_api, applicant, signing_document): + documents = onfido_api.list_signing_documents(applicant.id) + + assert documents is not None + assert isinstance(documents, SigningDocumentsList) + assert any(doc.id == signing_document.id for doc in documents.signing_documents) + + +def test_upload_signing_document_with_null_params(onfido_api): + with pytest.raises(ValidationError): + onfido_api.upload_signing_document(None, None) + + +def test_download_inexistent_signing_document(onfido_api): + with pytest.raises(ApiException): + onfido_api.download_signing_document(INEXISTENT_SIGNING_DOCUMENT_ID)