From ee30ad276a0ab1e47dd74e75580fce6427e50fae Mon Sep 17 00:00:00 2001 From: "bit4bit@riseup.net" Date: Thu, 28 May 2020 15:03:21 +0000 Subject: [PATCH] facho/facho.py (FachoXML.attach_extension): se retira FossilOrigin-Name: 5e1a1e394fe0b3d5387a58dbc6c00cff03903718aeb5ff367d71c777ef9baa45 --- facho/facho.py | 20 ++++++++------------ tests/test_fe.py | 9 ++++----- tests/test_fe_form.py | 9 +++------ 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/facho/facho.py b/facho/facho.py index 123972c..3300049 100644 --- a/facho/facho.py +++ b/facho/facho.py @@ -124,21 +124,17 @@ class FachoXML: self.extensions = [] def add_extension(self, extension): - self.extensions.append(extension) - - def attach_extensions(self): root_tag = self.builder.get_tag(self.root) # construir las extensiones o adicionar en caso de indicar - for extension in self.extensions: - xpath, elements = extension.build(self) - if isinstance(elements, str): - elem = self.set_element('/'+ root_tag + xpath, elements) - else: - for new_element in elements: - elem = self.find_or_create_element('/' + root_tag + xpath) - self.builder.append(elem, new_element) - + xpath, elements = extension.build(self) + if isinstance(elements, str): + elem = self.set_element('/'+ root_tag + xpath, elements) + else: + for new_element in elements: + elem = self.find_or_create_element('/' + root_tag + xpath) + self.builder.append(elem, new_element) + def fragment(self, xpath, append=False): nodes = xpath.split('/') nodes.pop() diff --git a/tests/test_fe.py b/tests/test_fe.py index 806663f..74f9bb9 100644 --- a/tests/test_fe.py +++ b/tests/test_fe.py @@ -17,11 +17,11 @@ def test_xmlsigned_build(monkeypatch): xml = fe.FeXML('Invoice', 'http://www.dian.gov.co/contratos/facturaelectronica/v1') - xml.add_extension(signer) + with monkeypatch.context() as m: helpers.mock_urlopen(m) - xml.attach_extensions() + xml.add_extension(signer) elem = xml.find_or_create_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/ds:Signature') assert elem is not None @@ -35,11 +35,11 @@ def test_xmlsigned_with_passphrase_build(monkeypatch): xml = fe.FeXML('Invoice', 'http://www.dian.gov.co/contratos/facturaelectronica/v1') - xml.add_extension(signer) with monkeypatch.context() as m: helpers.mock_urlopen(m) - xml.attach_extensions() + xml.add_extension(signer) + elem = xml.find_or_create_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/ds:Signature') assert elem is not None @@ -51,6 +51,5 @@ def test_dian_extension_software_security_code(): xml = fe.FeXML('Invoice', 'http://www.dian.gov.co/contratos/facturaelectronica/v1') xml.add_extension(security_code) - xml.attach_extensions() content = xml.get_element_text('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/sts:DianExtensions/sts:SoftwareSecurityCode') assert content is not None diff --git a/tests/test_fe_form.py b/tests/test_fe_form.py index 4217613..a8f7b87 100644 --- a/tests/test_fe_form.py +++ b/tests/test_fe_form.py @@ -96,7 +96,6 @@ def test_invoicesimple_build_with_cufe(simple_invoice): xml = form.DIANInvoiceXML(simple_invoice) cufe_extension = fe.DianXMLExtensionCUFE(simple_invoice) xml.add_extension(cufe_extension) - xml.attach_extensions() cufe = xml.get_element_text('/fe:Invoice/cbc:UUID') assert cufe != '' @@ -108,13 +107,13 @@ def test_invoicesimple_xml_signed(monkeypatch, simple_invoice): xml = form.DIANInvoiceXML(simple_invoice) signer = fe.DianXMLExtensionSigner('./tests/example.p12') - xml.add_extension(signer) + with monkeypatch.context() as m: import helpers helpers.mock_urlopen(m) - xml.attach_extensions() - + xml.add_extension(signer) + elem = xml.find_or_create_element('/fe:Invoice/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/ds:Signature') assert elem.text is not None @@ -144,7 +143,6 @@ def test_invoice_profileexecutionid(simple_invoice): xml_invoice = form.DIANInvoiceXML(simple_invoice) cufe_extension = fe.DianXMLExtensionCUFE(simple_invoice) xml_invoice.add_extension(cufe_extension) - xml_invoice.attach_extensions() id_ = xml_invoice.get_element_text('/fe:Invoice/cbc:ProfileExecutionID', format_=int) assert id_ == 2 @@ -204,7 +202,6 @@ def test_invoice_cufe(simple_invoice_without_lines): clave_tecnica = '693ff6f2a553c3646a063436fd4dd9ded0311471' ) xml_invoice.add_extension(cufe_extension) - xml_invoice.attach_extensions() cufe = xml_invoice.get_element_text('/fe:Invoice/cbc:UUID') # RESOLUCION 004: pagina 689 assert cufe == '8bb918b19ba22a694f1da11c643b5e9de39adf60311cf179179e9b33381030bcd4c3c3f156c506ed5908f9276f5bd9b4'