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