From 30773e042b3fa1551f624be29b6748be701f9bf6 Mon Sep 17 00:00:00 2001 From: cosmos <cosmos@onecluster.org> Date: Fri, 23 Aug 2024 11:03:38 -0500 Subject: [PATCH] Add test signartime - timezone America/Bogota --- .gitignore | 1 + Dockerfile | 3 +++ setup.py | 2 +- tests/test_fe.py | 17 +++++++++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 98f5b2d..40ff47c 100644 --- a/.gitignore +++ b/.gitignore @@ -215,3 +215,4 @@ tags pyvenv.cfg .venv pip-selfcheck.json +invoice.xml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 7894872..92b9c0b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,9 @@ # DERIVADO DE https://alextereshenkov.github.io/run-python-tests-with-tox-in-docker.html FROM ubuntu:24.04 +ENV TZ=America/Bogota +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + RUN apt-get -qq update RUN apt install software-properties-common -y \ diff --git a/setup.py b/setup.py index e3c5992..03ee28c 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ requirements = ['Click>=8.1.7', 'lxml==5.2.2', 'cryptography==42.0.8', 'pyOpenSSL==24.1.0', - 'xmlsig==1.0.1', + 'xmlsig==0.1.7', 'xades==1.0.0', 'xmlsec==1.3.14', # usamos esta dependencia en runtime diff --git a/tests/test_fe.py b/tests/test_fe.py index fc5ebcf..29aca4b 100644 --- a/tests/test_fe.py +++ b/tests/test_fe.py @@ -116,3 +116,20 @@ def test_xml_sign_dian_using_bytes(monkeypatch): xmlsigned = signer.sign_xml_string(xmlstring) assert "Signature" in xmlsigned + +def test_xml_signature_timestamp(monkeypatch): + xml = fe.FeXML( + 'Invoice', + 'http://www.dian.gov.co/contratos/facturaelectronica/v1') + xml.find_or_create_element( + '/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent') + ublextension = xml.fragment( + '/fe:Invoice/ext:UBLExtensions/ext:UBLExtension', append=True) + ublextension.find_or_create_element( + '/ext:UBLExtension/ext:ExtensionContent') + xmlstring = xml.tostring() + signer = fe.DianXMLExtensionSigner('./tests/example.p12') + xmlsigned = signer.sign_xml_string(xmlstring) + + with open('invoice.xml', 'w') as file_: + file_.write(xmlsigned) \ No newline at end of file