From 0c89b3e957cbceb8eb5c862d04c0d2e92d075631 Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Mon, 11 Sep 2017 23:38:06 -0300 Subject: [PATCH] =?UTF-8?q?Modifica=C3=A7=C3=A3o=20na=20estrutura=20do=20p?= =?UTF-8?q?rojeto=20-=20Movendo=20testes=20para=20fora=20do=20pacote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pytrustnfe/test/XMLs/NFe00000857.xml | 46 ----- pytrustnfe/test/XMLs/jinja_remove_empty.xml | 1 - pytrustnfe/test/XMLs/jinja_result.xml | 1 - pytrustnfe/test/XMLs/jinja_template.xml | 6 - pytrustnfe/test/XMLs/paulistana_canc.xml | 1 - pytrustnfe/test/XMLs/paulistana_canc_errado.xml | 17 -- pytrustnfe/test/XMLs/paulistana_canc_ok.xml | 8 - pytrustnfe/test/XMLs/paulistana_resultado.xml | 1 - pytrustnfe/test/XMLs/paulistana_signature.xml | 33 ---- pytrustnfe/test/XMLs/recibo_envio_1.xml | 13 -- pytrustnfe/test/XMLs/recibo_envio_2.xml | 13 -- .../test/XMLs/recibo_protocolo_sucesso_1.xml | 21 --- .../test/XMLs/recibo_protocolo_sucesso_2.xml | 21 --- pytrustnfe/test/__init__.py | 0 pytrustnfe/test/test_add_qr_code.py | 34 ---- pytrustnfe/test/test_assinatura.py | 55 ------ pytrustnfe/test/test_certificado.py | 82 --------- pytrustnfe/test/test_comunicacao.py | 20 --- pytrustnfe/test/test_consulta_cadastro.py | 19 --- pytrustnfe/test/test_danfe.py | 26 --- pytrustnfe/test/test_ginfes.py | 24 --- pytrustnfe/test/test_nfse_paulistana.py | 143 ---------------- pytrustnfe/test/test_servidores.py | 48 ------ pytrustnfe/test/test_utils.py | 119 ------------- pytrustnfe/test/test_xml.py | 30 ---- pytrustnfe/test/test_xml_serializacao.py | 37 ---- pytrustnfe/test/teste.pfx | Bin 1764 -> 0 bytes pytrustnfe/test/xml_assinado.xml | 13 -- pytrustnfe/test/xml_com_qrcode.xml | 189 -------------------- pytrustnfe/test/xml_sem_qrcode.xml | 190 --------------------- pytrustnfe/test/xml_valido_assinado.xml | 13 -- tests/XMLs/NFe00000857.xml | 46 +++++ tests/XMLs/jinja_remove_empty.xml | 1 + tests/XMLs/jinja_result.xml | 1 + tests/XMLs/jinja_template.xml | 6 + tests/XMLs/paulistana_canc.xml | 1 + tests/XMLs/paulistana_canc_errado.xml | 17 ++ tests/XMLs/paulistana_canc_ok.xml | 8 + tests/XMLs/paulistana_resultado.xml | 1 + tests/XMLs/paulistana_signature.xml | 33 ++++ tests/XMLs/recibo_envio_1.xml | 13 ++ tests/XMLs/recibo_envio_2.xml | 13 ++ tests/XMLs/recibo_protocolo_sucesso_1.xml | 21 +++ tests/XMLs/recibo_protocolo_sucesso_2.xml | 21 +++ tests/__init__.py | 0 tests/test_add_qr_code.py | 34 ++++ tests/test_assinatura.py | 55 ++++++ tests/test_certificado.py | 82 +++++++++ tests/test_comunicacao.py | 20 +++ tests/test_consulta_cadastro.py | 19 +++ tests/test_danfe.py | 26 +++ tests/test_ginfes.py | 24 +++ tests/test_nfse_paulistana.py | 143 ++++++++++++++++ tests/test_servidores.py | 48 ++++++ tests/test_utils.py | 119 +++++++++++++ tests/test_xml.py | 30 ++++ tests/test_xml_serializacao.py | 37 ++++ tests/teste.pfx | Bin 0 -> 1764 bytes tests/xml_assinado.xml | 13 ++ tests/xml_com_qrcode.xml | 189 ++++++++++++++++++++ tests/xml_sem_qrcode.xml | 190 +++++++++++++++++++++ tests/xml_valido_assinado.xml | 13 ++ 62 files changed, 1224 insertions(+), 1224 deletions(-) delete mode 100644 pytrustnfe/test/XMLs/NFe00000857.xml delete mode 100644 pytrustnfe/test/XMLs/jinja_remove_empty.xml delete mode 100644 pytrustnfe/test/XMLs/jinja_result.xml delete mode 100644 pytrustnfe/test/XMLs/jinja_template.xml delete mode 100644 pytrustnfe/test/XMLs/paulistana_canc.xml delete mode 100644 pytrustnfe/test/XMLs/paulistana_canc_errado.xml delete mode 100644 pytrustnfe/test/XMLs/paulistana_canc_ok.xml delete mode 100644 pytrustnfe/test/XMLs/paulistana_resultado.xml delete mode 100644 pytrustnfe/test/XMLs/paulistana_signature.xml delete mode 100644 pytrustnfe/test/XMLs/recibo_envio_1.xml delete mode 100644 pytrustnfe/test/XMLs/recibo_envio_2.xml delete mode 100644 pytrustnfe/test/XMLs/recibo_protocolo_sucesso_1.xml delete mode 100644 pytrustnfe/test/XMLs/recibo_protocolo_sucesso_2.xml delete mode 100644 pytrustnfe/test/__init__.py delete mode 100644 pytrustnfe/test/test_add_qr_code.py delete mode 100644 pytrustnfe/test/test_assinatura.py delete mode 100644 pytrustnfe/test/test_certificado.py delete mode 100644 pytrustnfe/test/test_comunicacao.py delete mode 100644 pytrustnfe/test/test_consulta_cadastro.py delete mode 100644 pytrustnfe/test/test_danfe.py delete mode 100644 pytrustnfe/test/test_ginfes.py delete mode 100644 pytrustnfe/test/test_nfse_paulistana.py delete mode 100644 pytrustnfe/test/test_servidores.py delete mode 100644 pytrustnfe/test/test_utils.py delete mode 100644 pytrustnfe/test/test_xml.py delete mode 100644 pytrustnfe/test/test_xml_serializacao.py delete mode 100644 pytrustnfe/test/teste.pfx delete mode 100644 pytrustnfe/test/xml_assinado.xml delete mode 100644 pytrustnfe/test/xml_com_qrcode.xml delete mode 100644 pytrustnfe/test/xml_sem_qrcode.xml delete mode 100644 pytrustnfe/test/xml_valido_assinado.xml create mode 100644 tests/XMLs/NFe00000857.xml create mode 100644 tests/XMLs/jinja_remove_empty.xml create mode 100644 tests/XMLs/jinja_result.xml create mode 100644 tests/XMLs/jinja_template.xml create mode 100644 tests/XMLs/paulistana_canc.xml create mode 100644 tests/XMLs/paulistana_canc_errado.xml create mode 100644 tests/XMLs/paulistana_canc_ok.xml create mode 100644 tests/XMLs/paulistana_resultado.xml create mode 100644 tests/XMLs/paulistana_signature.xml create mode 100644 tests/XMLs/recibo_envio_1.xml create mode 100644 tests/XMLs/recibo_envio_2.xml create mode 100644 tests/XMLs/recibo_protocolo_sucesso_1.xml create mode 100644 tests/XMLs/recibo_protocolo_sucesso_2.xml create mode 100644 tests/__init__.py create mode 100644 tests/test_add_qr_code.py create mode 100644 tests/test_assinatura.py create mode 100644 tests/test_certificado.py create mode 100644 tests/test_comunicacao.py create mode 100644 tests/test_consulta_cadastro.py create mode 100644 tests/test_danfe.py create mode 100644 tests/test_ginfes.py create mode 100644 tests/test_nfse_paulistana.py create mode 100644 tests/test_servidores.py create mode 100644 tests/test_utils.py create mode 100644 tests/test_xml.py create mode 100644 tests/test_xml_serializacao.py create mode 100644 tests/teste.pfx create mode 100644 tests/xml_assinado.xml create mode 100644 tests/xml_com_qrcode.xml create mode 100644 tests/xml_sem_qrcode.xml create mode 100644 tests/xml_valido_assinado.xml diff --git a/pytrustnfe/test/XMLs/NFe00000857.xml b/pytrustnfe/test/XMLs/NFe00000857.xml deleted file mode 100644 index d431ac3..0000000 --- a/pytrustnfe/test/XMLs/NFe00000857.xml +++ /dev/null @@ -1,46 +0,0 @@ -3513416577Venda Não Contribuintes15518572017-02-24T11:39:30-00:002017-02-24T11:39:30-00:0012355030811721100Odoo Brasil 1021332917000163TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDATrustcodeRua Vinicius de Moraes42Córrego Grande3550308FlorianópolisSC880372401058Brasil1135302850144013873114111370685000184NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCALAV AMAZONAS1193Centro4314902Porto AlegreRS902405421058Brasil9VTS-L123110090339FIU32898EDSDKJ23JK4K2JLKJ4LK23234234KLJ3L3VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAOVENTIS PRETO- O2 CO H2S2902710006108UN1.0100.00100.00UN1.03562.2695.0010.000102999493657.260.000.0007070.000.000.000.000.003562.2695.000.000.000.000.000.000.000.003657.260.001SEDEXFalse - False, FalseINV/2017/01263562.263657.26012017-03-161828.63022017-04-151828.63PERMITE O APROVEITAMENTO DO CRÉDITO DE ICMS NO VALOR CORRESPONDENTE À ALÍQUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 >>IMPORTANTE<< P/ LIQUIDACAO DESTA NF, EFETUE DEPOSITO IDENTIFICADO NO BANCO BRADESCO AG: PEDIDO DE COMPRAS: OC 0045-05/2017 (Orçamento SO176) **VENCIMENTO: 15/04/2017 ==> .OC 0045-05/2017 N/S 16122WZ-021bNLOBxpMk5J6rrz37coB8/pvTBE=Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 -MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj -cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD -VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw -OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw -CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh -cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU -DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z -aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw -MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz -0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt -sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u -v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin -nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 -Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx -c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw -NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg -IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO -MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA -emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp -djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo -BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y -ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu -X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz -aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S -RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy -YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 -ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n -b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j -cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB -jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv -bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H -NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw -DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN -zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY -PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ -dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 -MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO -RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa -JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ -QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT -TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ -j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl -8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 -Fbux -2SP_NFE_PL_008i2351702213329170001635500100000085711341657772017-02-24T08:39:31-03:00135170000807903bNLOBxpMk5J6rrz37coB8/pvTBE=100Autorizado o uso da NF-e diff --git a/pytrustnfe/test/XMLs/jinja_remove_empty.xml b/pytrustnfe/test/XMLs/jinja_remove_empty.xml deleted file mode 100644 index 631bac8..0000000 --- a/pytrustnfe/test/XMLs/jinja_remove_empty.xml +++ /dev/null @@ -1 +0,0 @@ -oiolacomovai diff --git a/pytrustnfe/test/XMLs/jinja_result.xml b/pytrustnfe/test/XMLs/jinja_result.xml deleted file mode 100644 index ace8e28..0000000 --- a/pytrustnfe/test/XMLs/jinja_result.xml +++ /dev/null @@ -1 +0,0 @@ -oiolacomovai diff --git a/pytrustnfe/test/XMLs/jinja_template.xml b/pytrustnfe/test/XMLs/jinja_template.xml deleted file mode 100644 index 369517c..0000000 --- a/pytrustnfe/test/XMLs/jinja_template.xml +++ /dev/null @@ -1,6 +0,0 @@ - - {{ tag1 }} - {{ tag2 }} - - {{ tag3 }} - diff --git a/pytrustnfe/test/XMLs/paulistana_canc.xml b/pytrustnfe/test/XMLs/paulistana_canc.xml deleted file mode 100644 index 8aa75ea..0000000 --- a/pytrustnfe/test/XMLs/paulistana_canc.xml +++ /dev/null @@ -1 +0,0 @@ -false1305Assinatura de cancelamento da NFS-e incorreta.512382446APRMJR diff --git a/pytrustnfe/test/XMLs/paulistana_canc_errado.xml b/pytrustnfe/test/XMLs/paulistana_canc_errado.xml deleted file mode 100644 index 4fd39b4..0000000 --- a/pytrustnfe/test/XMLs/paulistana_canc_errado.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - false - - - 1305 - Assinatura de cancelamento da NFS-e incorreta. - - 512382 - 446 - APR9QMJR - - - diff --git a/pytrustnfe/test/XMLs/paulistana_canc_ok.xml b/pytrustnfe/test/XMLs/paulistana_canc_ok.xml deleted file mode 100644 index 74e27fe..0000000 --- a/pytrustnfe/test/XMLs/paulistana_canc_ok.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - true - - diff --git a/pytrustnfe/test/XMLs/paulistana_resultado.xml b/pytrustnfe/test/XMLs/paulistana_resultado.xml deleted file mode 100644 index 3e66f99..0000000 --- a/pytrustnfe/test/XMLs/paulistana_resultado.xml +++ /dev/null @@ -1 +0,0 @@ -true265436451212213329001632016-08-29T10:52:15101.3552382446APR9MJR5128216 diff --git a/pytrustnfe/test/XMLs/paulistana_signature.xml b/pytrustnfe/test/XMLs/paulistana_signature.xml deleted file mode 100644 index c4f8cbc..0000000 --- a/pytrustnfe/test/XMLs/paulistana_signature.xml +++ /dev/null @@ -1,33 +0,0 @@ -12345678901234false2016-08-292016-08-291E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=12345611RPS2016-08-29NT0.000.000.000.000.00074985.00false123456Trustcode1Vinicius de Moraes, 4242CorregoFloripaSC88037240Venda de servico - - - - - - - - - -ePJnD6hyDvlJo08PFX8h2TXk0ZM= - - -GbaQaTEtxuKdRRaadginWPFH5K65ywqEikkwChWO3xX5Kglq8RPm4+LjnpJmuTcE -9I2BVon3GJFh+c/6RKzJPose6FXog2xnCpTOgwA/rks/gKsUAaRlXCPsLcKMKaOj -3eH21RHEyrxBAbdpEUdlEgQWaWzmGq009EiQ544sD6c= - - -MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX -MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA -RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx -NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF -ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy -AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G -nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 -mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl -AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF -AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm -QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 -d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== - - - \ No newline at end of file diff --git a/pytrustnfe/test/XMLs/recibo_envio_1.xml b/pytrustnfe/test/XMLs/recibo_envio_1.xml deleted file mode 100644 index db93561..0000000 --- a/pytrustnfe/test/XMLs/recibo_envio_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 2 - SVRS20140728145415 - 103 - Lote recebido com sucesso - 42 - 2014-08-18T10:32:32 - - 423002149000085 - 1 - - \ No newline at end of file diff --git a/pytrustnfe/test/XMLs/recibo_envio_2.xml b/pytrustnfe/test/XMLs/recibo_envio_2.xml deleted file mode 100644 index 57c6c9c..0000000 --- a/pytrustnfe/test/XMLs/recibo_envio_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - 2 - SVRS20140728145415 - 103 - Lote recebido com sucesso - 42 - 2014-08-18T17:33:28 - - 423002149008908 - 1 - - \ No newline at end of file diff --git a/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_1.xml b/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_1.xml deleted file mode 100644 index d528f95..0000000 --- a/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 2 - SVRS20140729095237 - 423002149000085 - 104 - Lote processado - 42 - - - 2 - SVRS20140729095237 - 42140803657739000169550020000000011000000018 - 2014-08-18T10:32:32 - 342140000660576 - ladI/iyYJbQx6QW5ihtlBMR1UUY= - 100 - Autorizado o uso da NF-e - - - \ No newline at end of file diff --git a/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_2.xml b/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_2.xml deleted file mode 100644 index 29a10d1..0000000 --- a/pytrustnfe/test/XMLs/recibo_protocolo_sucesso_2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 2 - SVRS20140729095237 - 423002149008908 - 104 - Lote processado - 42 - - - 2 - SVRS20140729095237 - 42140803657739000169550020000000021000000023 - 2014-08-18T17:33:28 - 342140000666829 - oQsitGdZl1I66NNzpMn8Wf6mI7c= - 100 - Autorizado o uso da NF-e - - - \ No newline at end of file diff --git a/pytrustnfe/test/__init__.py b/pytrustnfe/test/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/pytrustnfe/test/test_add_qr_code.py b/pytrustnfe/test/test_add_qr_code.py deleted file mode 100644 index da9e381..0000000 --- a/pytrustnfe/test/test_add_qr_code.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf-8-*- -# © 2016 Alessandro Fernandes Martini -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -import unittest -# from lxml import etree -from pytrustnfe.nfe import _add_qrCode - - -class TestAddQRCode(unittest.TestCase): - def setUp(self): - self.xml_sem_qrcode = open('pytrustnfe/test/xml_sem_qrcode.xml', 'r') - self.xml_com_qrcode = open('pytrustnfe/test/xml_com_qrcode.xml', 'r') - dhEmi = '2016-11-09T16:03:25-00:00' - chave_nfe = 'NFe35161121332917000163650010000000011448875034' - ambiente = 2 - valor_total = '324.00' - icms_total = '61.56' - cid_token = '000001' - csc = '123456789' - estado = '35' - total = {'vNF': valor_total, 'vICMS': icms_total} - infnfe = {'ide': {'dhEmi': dhEmi}, 'Id': chave_nfe, 'total': total, - 'codigo_seguranca': {'cid_token': cid_token, 'csc': csc}} - infnfe = {'infNFe': infnfe} - self.kwargs = {} - self.kwargs['ambiente'] = ambiente - self.kwargs['estado'] = estado - self.kwargs['NFes'] = [infnfe] - - def test_add_qrCode(self): - xml_init = self.xml_sem_qrcode.read() - xml_end = _add_qrCode(xml_init, **self.kwargs) - self.assertEqual(xml_end, self.xml_com_qrcode.read()) diff --git a/pytrustnfe/test/test_assinatura.py b/pytrustnfe/test/test_assinatura.py deleted file mode 100644 index f13b851..0000000 --- a/pytrustnfe/test/test_assinatura.py +++ /dev/null @@ -1,55 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 14, 2015 - -@author: danimar -''' -import os -import os.path -import unittest -from lxml import etree -from pytrustnfe.nfe.assinatura import Assinatura - - -XML_ASSINAR = '' \ - ' '\ - ' Hello, World!' \ - ' ' \ - '' - - -XML_ERRADO = '' \ - ' ' \ - ' Hello, World!' \ - ' ' \ - '' - - -class test_assinatura(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def test_assinar_xml_senha_invalida(self): - pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - signer = Assinatura(pfx, '123') - self.assertRaises(Exception, signer.assina_xml, signer, - etree.fromstring(XML_ASSINAR), - 'NFe43150602261542000143550010000000761792265342') - - def test_assinar_xml_invalido(self): - pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - signer = Assinatura(pfx, '123456') - self.assertRaises(Exception, signer.assina_xml, signer, - etree.fromstring(XML_ERRADO), - 'NFe43150602261542000143550010000000761792265342') - - def test_assinar_xml_valido(self): - pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - signer = Assinatura(pfx, '123456') - xml = signer.assina_xml( - etree.fromstring(XML_ASSINAR), - 'NFe43150602261542000143550010000000761792265342') - xml_assinado = open(os.path.join(self.caminho, - 'xml_valido_assinado.xml'), - 'r').read() - self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido') diff --git a/pytrustnfe/test/test_certificado.py b/pytrustnfe/test/test_certificado.py deleted file mode 100644 index e05a8f0..0000000 --- a/pytrustnfe/test/test_certificado.py +++ /dev/null @@ -1,82 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 14, 2015 - -@author: danimar -''' -import unittest -import os -import os.path -from pytrustnfe.certificado import Certificado -from pytrustnfe.certificado import save_cert_key -from pytrustnfe.certificado import extract_cert_and_key_from_pfx - -CHAVE = '-----BEGIN PRIVATE KEY-----\n' \ - 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJONRp6l1y2ojgv8\n' \ - 'tP3AOLW0vjWQqiPseBLM7YAxbzz5R7LYlWHC0ZJ4uIvd4Cvc6AuoNJoeuhzFcwHx\n' \ - 'PL0TcFuW+5up1ktUohwaJ+/zKrMODCKt0gvif302yqasMnwLh9mGZQIkLkHPOX8p\n' \ - 'ZQDC4dlqwOyYDi0f+bRd5C7aWx3RAgMBAAECgYADqASP+dwTLZIXifOSNikxl4D/\n' \ - 'Is6UhU+UZ6+a9Z6kDClSrTtGaOV4k7U/AgiEDb1STKDBEPHbtKjc63Vt2gV2teem\n' \ - 'ohU0Giv+gD42uuwy2DM31OfYrpR46mzOK9JrpQc78b36ealL3AWJ1gyBbbcOWbAb\n' \ - 'KmP742V7pcD07EEp4QJBAM/e7M8VdLgOyaQzH9KHekU6fJlI4vy1UwgRUwx3/1W6\n' \ - 'zlBYo1qXfc7NSVG8ZaSrJwW4rPn393u31CpXv+oc/OMCQQC1txS6nxM9+p/641HX\n' \ - 'CHXiWJRn0Wv7rT1FyF2dHO+OQOkCCnHCsGDMf3bacTNb7iyaPbXEDac8od5uF/3h\n' \ - 'aUy7AkBDPGoAeYItXqseL2Mlp6iG5+oRcp/o+YWH4IKqT84JHslI98KutL1+vKvw\n'\ - 'gi2mW63djeR1Xh1wqP85SvTKduHdAkAIJLlIF8Lr/yRWQQO06EsoJqIX+Pmm4L+j\n'\ - 'NfSECvztWhlXHxK0D+V2pKu15GbR0t2q1+Micx4wiGyIcIjPJkHrAkAvlbXGFcGT\n'\ - 'pk9bQ8nl7EYqlvVn1TejzTLfBhBYOse/xT/NI4Kwjkan9R+EJ1cOc9EE8gm1W3jv\n'\ - 'fMw/Bh2wC5kj\n'\ - '-----END PRIVATE KEY-----\n' - -CERTIFICADO = '-----BEGIN CERTIFICATE-----\n'\ - 'MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX\n'\ - 'MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA\n'\ - 'RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx\n'\ - 'NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF\n'\ - 'ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy\n'\ - 'AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G\n'\ - 'nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0\n'\ - 'mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl\n'\ - 'AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF\n'\ - 'AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm\n'\ - 'QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86\n'\ - 'd126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw==\n'\ - '-----END CERTIFICATE-----\n' - - -class test_assinatura(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def test_preparar_pfx(self): - dir_pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - cert, key = extract_cert_and_key_from_pfx(dir_pfx, '123456') - self.assertEqual(key, CHAVE, 'Chave gerada inválida') - self.assertEqual(cert, CERTIFICADO, 'Certificado inválido') - - def test_save_pfx(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123') - path = pfx.save_pfx() - saved = open(path, 'rb').read() - self.assertEqual(pfx_source, saved, - 'Arquivo pfx salvo não bate com arquivo lido') - - def test_save_cert_and_key(self): - dir_pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - cert, key = extract_cert_and_key_from_pfx(dir_pfx, '123456') - cert_path, key_path = save_cert_key(cert, key) - cert_saved = open(cert_path, 'r').read() - key_saved = open(key_path, 'r').read() - self.assertEqual( - cert, cert_saved, 'Certificado não corresponde ao original') - self.assertEqual(key, key_saved, 'Chave não corresponde ao original') - - def test_pfx_nao_existe(self): - self.assertRaises(Exception, extract_cert_and_key_from_pfx, - 'file.pfx', '123456') - - def test_pfx_senha_invalida(self): - dir_pfx = os.path.join(self.caminho, 'teste.pfx') - self.assertRaises(Exception, extract_cert_and_key_from_pfx, - dir_pfx, '123') diff --git a/pytrustnfe/test/test_comunicacao.py b/pytrustnfe/test/test_comunicacao.py deleted file mode 100644 index b47c3a1..0000000 --- a/pytrustnfe/test/test_comunicacao.py +++ /dev/null @@ -1,20 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 16, 2015 - -@author: danimar -''' -import unittest -import os.path - - -XML_RETORNO = '103' \ - '42' - - -class test_comunicacao(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def test_envio_nfe(self): - pass diff --git a/pytrustnfe/test/test_consulta_cadastro.py b/pytrustnfe/test/test_consulta_cadastro.py deleted file mode 100644 index a284b56..0000000 --- a/pytrustnfe/test/test_consulta_cadastro.py +++ /dev/null @@ -1,19 +0,0 @@ -# coding=utf-8 - -import mock -import os.path -import unittest -from pytrustnfe.certificado import Certificado -from pytrustnfe.nfe import consulta_cadastro - - -class test_consulta_cadastro(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def test_conta_de_cadastro(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123456') - - obj = {'cnpj': '12345678901234', 'estado': '42'} - consulta_cadastro(pfx, obj=obj, ambiente=1, estado='42') diff --git a/pytrustnfe/test/test_danfe.py b/pytrustnfe/test/test_danfe.py deleted file mode 100644 index a854858..0000000 --- a/pytrustnfe/test/test_danfe.py +++ /dev/null @@ -1,26 +0,0 @@ -# coding=utf-8 - -import tempfile -import os.path -import unittest -from lxml import etree -from pytrustnfe.nfe.danfe import danfe - - -class test_danfe(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def test_can_generate_danfe(self): - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_string = open(os.path.join(path, 'NFe00000857.xml'), "r").read() - # xml_string = open('/home/danimar/Downloads/NFe (5).xml', "r").read() - - xml_element = etree.fromstring(xml_string) - - oDanfe = danfe(list_xml=[xml_element]) - - # Para testar localmente o Danfe - # with open('/home/danimar/danfe.pdf', 'w') as oFile: - with tempfile.TemporaryFile(mode='wb') as oFile: - oDanfe.writeto_pdf(oFile) diff --git a/pytrustnfe/test/test_ginfes.py b/pytrustnfe/test/test_ginfes.py deleted file mode 100644 index 6d23e5e..0000000 --- a/pytrustnfe/test/test_ginfes.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2016 Danimar Ribeiro, Trustcode -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -import os.path -import unittest -from pytrustnfe.certificado import Certificado -from pytrustnfe.nfse.ginfes import consultar_situacao_lote - - -class test_nfse_ginfes(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - @unittest.skip - def test_consulta_situacao_lote(self): - pfx_source = open('/home/danimar/Downloads/machado.pfx', 'rb').read() - pfx = Certificado(pfx_source, '123456789') - - dados = {'ambiente': 'homologacao'} - retorno = consultar_situacao_lote( - pfx, consulta=dados, ambiente='homologacao') - - self.assertNotEqual(retorno['received_xml'], '') - self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) diff --git a/pytrustnfe/test/test_nfse_paulistana.py b/pytrustnfe/test/test_nfse_paulistana.py deleted file mode 100644 index 06d4200..0000000 --- a/pytrustnfe/test/test_nfse_paulistana.py +++ /dev/null @@ -1,143 +0,0 @@ -# coding=utf-8 - -import mock -import os.path -import unittest -from pytrustnfe.certificado import Certificado -from pytrustnfe.nfse.paulistana import envio_lote_rps -from pytrustnfe.nfse.paulistana import cancelamento_nfe -from pytrustnfe.nfse.assinatura import Assinatura -from pytrustnfe.nfse.paulistana import sign_tag - - -class test_nfse_paulistana(unittest.TestCase): - - caminho = os.path.dirname(__file__) - - def _get_nfse(self): - rps = [ - { - 'assinatura': '123', - 'serie': '1', - 'numero': '1', - 'data_emissao': '2016-08-29', - 'codigo_atividade': '07498', - 'total_servicos': '2.00', - 'total_deducoes': '3.00', - 'prestador': { - 'inscricao_municipal': '123456' - }, - 'tomador': { - 'tipo_cpfcnpj': '1', - 'cpf_cnpj': '12345678923256', - 'inscricao_municipal': '123456', - 'razao_social': 'Trustcode', - 'tipo_logradouro': '1', - 'logradouro': 'Vinicius de Moraes, 42', - 'numero': '42', - 'bairro': 'Corrego', - 'cidade': 'Floripa', - 'uf': 'SC', - 'cep': '88037240', - }, - 'codigo_atividade': '07498', - 'aliquota_atividade': '5.00', - 'descricao': 'Venda de servico' - } - ] - nfse = { - 'cpf_cnpj': '12345678901234', - 'data_inicio': '2016-08-29', - 'data_fim': '2016-08-29', - 'lista_rps': rps - } - return nfse - - def test_envio_nfse(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123456') - - nfse = self._get_nfse() - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_return = open(os.path.join( - path, 'paulistana_resultado.xml'), 'r').read() - - with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: - retorno = mock.MagicMock() - client.return_value = retorno - retorno.service.EnvioLoteRPS.return_value = xml_return - - retorno = envio_lote_rps(pfx, nfse=nfse) - - self.assertEqual(retorno['received_xml'], xml_return) - self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) - self.assertEqual( - retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446) - self.assertEqual( - retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6) - - def test_nfse_signature(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123456') - - nfse = self._get_nfse() - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_sent = open(os.path.join( - path, 'paulistana_signature.xml'), 'r').read() - - with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: - retorno = mock.MagicMock() - client.return_value = retorno - retorno.service.EnvioLoteRPS.return_value = '' - - retorno = envio_lote_rps(pfx, nfse=nfse) - self.assertEqual(retorno['sent_xml'], xml_sent) - - def _get_cancelamento(self): - return { - 'cnpj_remetente': '123', - 'assinatura': 'assinatura', - 'numero_nfse': '456', - 'inscricao_municipal': '654', - 'codigo_verificacao': '789', - } - - def test_cancelamento_nfse_ok(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123456') - cancelamento = self._get_cancelamento() - - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_return = open(os.path.join( - path, 'paulistana_canc_ok.xml'), 'r').read() - - with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: - retorno = mock.MagicMock() - client.return_value = retorno - retorno.service.CancelamentoNFe.return_value = xml_return - - retorno = cancelamento_nfe(pfx, cancelamento=cancelamento) - - self.assertEqual(retorno['received_xml'], xml_return) - self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) - - def test_cancelamento_nfse_com_erro(self): - pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() - pfx = Certificado(pfx_source, '123456') - cancelamento = self._get_cancelamento() - - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_return = open(os.path.join( - path, 'paulistana_canc_errado.xml'), 'r').read() - - with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: - retorno = mock.MagicMock() - client.return_value = retorno - retorno.service.CancelamentoNFe.return_value = xml_return - - retorno = cancelamento_nfe(pfx, cancelamento=cancelamento) - - self.assertEqual(retorno['received_xml'], xml_return) - self.assertEqual(retorno['object'].Cabecalho.Sucesso, False) - self.assertEqual( - retorno['object'].Erro.ChaveNFe.NumeroNFe, 446) diff --git a/pytrustnfe/test/test_servidores.py b/pytrustnfe/test/test_servidores.py deleted file mode 100644 index 2083f2c..0000000 --- a/pytrustnfe/test/test_servidores.py +++ /dev/null @@ -1,48 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 14, 2015 - -@author: danimar -''' -import unittest -from pytrustnfe.Servidores import localizar_url, localizar_qrcode - -url_ba = 'https://nfe.sefaz.ba.gov.br/webservices/NfeAutorizacao/NfeAutoriza\ -cao.asmx' - -url_sp = 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx' - -url_qrcode_homologacao_sp = 'https://homologacao.nfce.fazenda.sp.gov.br/NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx' - -url_sc = 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao.asmx' - -url_rs = 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx' - -url_cad_rs = 'https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadcon\ -sultacadastro2.asmx' - -url_cad_sc = 'https://cad.svrs.rs.gov.br/ws/CadConsultaCadastro/CadConsult\ -aCadastro2.asmx' - - -class test_servidores(unittest.TestCase): - - def test_localizar_url(self): - url = localizar_url('NfeAutorizacao', '29', ambiente=1) - self.assertEqual(url, url_ba) - url = localizar_url('NfeAutorizacao', '35', ambiente=1) - self.assertEqual(url, url_sp) - url = localizar_url('NfeAutorizacao', '42', ambiente=1) - self.assertEqual(url, url_sc) - url = localizar_url('NfeAutorizacao', '43', ambiente=1) - self.assertEqual(url, url_rs) - - url = localizar_url('NfeConsultaCadastro', '43', ambiente=2) - self.assertEqual(url, url_cad_rs) - - url = localizar_url('NfeConsultaCadastro', '42', ambiente=2) - self.assertEqual(url, url_cad_sc) - - def test_localizar_qrcode(self): - url = localizar_qrcode('35') - self.assertEqual(url, url_qrcode_homologacao_sp) diff --git a/pytrustnfe/test/test_utils.py b/pytrustnfe/test/test_utils.py deleted file mode 100644 index 247327d..0000000 --- a/pytrustnfe/test/test_utils.py +++ /dev/null @@ -1,119 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 16, 2015 - -@author: danimar -''' -import unittest -import datetime -from pytrustnfe.utils import date_tostring, datetime_tostring, \ - gerar_chave -from pytrustnfe.utils import ChaveNFe, CabecalhoSoap - - -class test_utils(unittest.TestCase): - kwargs = { - 'cnpj': '33009911002506', 'estado': '52', 'emissao': '0604', - 'modelo': '55', 'serie': '012', 'numero': 780, - 'tipo': 0, 'codigo': '26730161' - } - - def test_cabecalho_soap(self): - head = CabecalhoSoap(versao=1, estado='SC', soap_action='Autorizacao') - self.assertEqual(head.versao, 1) - self.assertEqual(head.estado, 'SC') - self.assertEqual(head.soap_action, 'Autorizacao') - - def test_date_tostring(self): - hoje = datetime.date.today() - data = date_tostring(hoje) - self.assertEqual(data, hoje.strftime("%d-%m-%y"), - "Não convertido corretamente") - self.assertRaises(Exception, date_tostring, "Not a date") - - def test_datetime_tostring(self): - hoje = datetime.datetime.now() - data = datetime_tostring(hoje) - self.assertEqual(data, hoje.strftime("%d-%m-%y %H:%M:%S"), - "Não convertido corretamente") - self.assertRaises(Exception, datetime_tostring, "Not a date") - - def test_geracao_chave(self): - chave = ChaveNFe(**self.kwargs) - str_chave = gerar_chave(chave) - chave_correta = '52060433009911002506550120000007800267301615' - self.assertEqual(str_chave, chave_correta, - "Geração de chave nf-e incorreta") - - str_chave = gerar_chave(chave, prefix='NFe') - chave_correta = 'NFe52060433009911002506550120000007800267301615' - self.assertEqual(str_chave, chave_correta, - "Geração de chave nf-e com prefixo incorreta") - - self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object") - self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object") - - def test_chave_nfe(self): - chave = ChaveNFe(**self.kwargs) - with self.assertRaises(AssertionError) as cm: - chave.cnpj = '' - chave.validar() - chave.cnpj = '1234567891011' - self.assertEqual('CNPJ necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.estado = '' - chave.validar() - chave.estado = '42' - self.assertEqual('Estado necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.emissao = '' - chave.validar() - chave.emissao = '0' - self.assertEqual('Emissão necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.modelo = '' - chave.validar() - chave.modelo = '55' - self.assertEqual('Modelo necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.serie = '' - chave.validar() - chave.serie = '012' - self.assertEqual('Série necessária para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.numero = '' - chave.validar() - chave.numero = '000000780' - self.assertEqual('Número necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.tipo = '' - chave.validar() - chave.tipo = '42' - self.assertEqual('Tipo necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') - - with self.assertRaises(AssertionError) as cm: - chave.codigo = '' - chave.validar() - self.assertEqual('Código necessário para criar chave NF-e', - str(cm.exception), - 'Validação da chave nf-e incorreta') diff --git a/pytrustnfe/test/test_xml.py b/pytrustnfe/test/test_xml.py deleted file mode 100644 index 45b70b7..0000000 --- a/pytrustnfe/test/test_xml.py +++ /dev/null @@ -1,30 +0,0 @@ -# coding=utf-8 -''' -Created on Jun 14, 2015 - -@author: danimar -''' -import unittest -from datetime import datetime -from pytrustnfe.xml.filters import normalize_str -from pytrustnfe.xml.filters import strip_line_feed -from pytrustnfe.xml.filters import format_percent -from pytrustnfe.xml.filters import format_date -from pytrustnfe.xml.filters import format_datetime - - -class test_xmlfilters(unittest.TestCase): - - def test_xmlfilters(self): - word = normalize_str('ação café pó pá veêm') - self.assertEqual(word, 'acao cafe po pa veem') - self.assertEqual(1.5, format_percent(150)) - self.assertEqual('aa', format_date('aa')) - self.assertEqual('aa', format_datetime('aa')) - - dt = datetime(2016, 9, 17, 12, 12, 12) - self.assertEqual('2016-09-17', format_date(dt.date())) - self.assertEqual('2016-09-17T12:12:12', format_datetime(dt)) - - word = strip_line_feed("olá\ncomo vai\r senhor ") - self.assertEqual(word, "olá como vai senhor") diff --git a/pytrustnfe/test/test_xml_serializacao.py b/pytrustnfe/test/test_xml_serializacao.py deleted file mode 100644 index 82f3dbc..0000000 --- a/pytrustnfe/test/test_xml_serializacao.py +++ /dev/null @@ -1,37 +0,0 @@ -# coding=utf-8 - -import os.path -import unittest -from lxml import etree -from pytrustnfe.xml import render_xml -from pytrustnfe.xml import sanitize_response - - -class test_xml_serializacao(unittest.TestCase): - - def test_serializacao_default(self): - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml = render_xml(path, 'jinja_template.xml', False, tag1='oi', - tag2='ola', tag3='comovai') - - result = open(os.path.join(path, 'jinja_result.xml'), 'r').read() - self.assertEqual(xml + "\n", result) - - def test_serializacao_remove_empty(self): - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xmlElem = render_xml(path, 'jinja_template.xml', True, tag1='oi', - tag2='ola', tag3='comovai') - xml = etree.tostring(xmlElem, encoding=str) - result = open(os.path.join(path, 'jinja_remove_empty.xml'), 'r').read() - self.assertEqual(xml + '\n', result) - - def test_sanitize_response(self): - path = os.path.join(os.path.dirname(__file__), 'XMLs') - xml_to_clear = open(os.path.join(path, 'jinja_result.xml'), 'r').read() - xml, obj = sanitize_response(xml_to_clear) - print(type(xml)) - self.assertEqual(xml, xml_to_clear) - self.assertEqual(obj.tpAmb, 'oi') - self.assertEqual(obj.CNPJ, 'ola') - self.assertEqual(obj.indNFe, '') - self.assertEqual(obj.indEmi, 'comovai') diff --git a/pytrustnfe/test/teste.pfx b/pytrustnfe/test/teste.pfx deleted file mode 100644 index bb326abdd505200a18d4540c606db1052fc220f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 zcmY+DdpOkj7so&IH3nnI-Ihy~OY1U?yJC?jk=r2KGQVkDo6OIMVPmq)kfCgoOH^b= z+Q*PI387z_ni9%wHg`ozuB8^^64`G(``dl?InVi=b6)3jKF{Zm^TshzV-P|D$3zvQ zWQ;Q0GM42KQV1>+^(&Hz%7XD398;qHUoDApBvYac#vIs-P_lnbVbBPO%Y^E2OsEE@ zi9-J$!;i}&rDYU-9M*2`HH9FlZX^@B;H&p0B%{;h3A5F|u*_;}QPi|BrKH$V=Y6K@ zH6CL})I7~_UNT2LYpt(B)|H=oQGdAm7DX7ZK@3~Z+EV))!4t32nwIP=MF@!uP1Mh^ z^)F=mZSxcxR;@+E)HSS&;*X?EVCH^#Gf9YNF0iDf-w|Teef)n@iqS$IDIQ99n|3%S zU8lv!)r+;}U%{%it-L%|>+as;Ld)dHHPI_IOV?M-pE+&)p&%VG9+e=~oGNgY3}{&B z5~qs`66Pe|pBd39qOgx<25I4YSmesqKj?@4n5?%MpGh#|jXg%AOfSPYqz;Qi!Sk=*1975 zq$zHwG+y18)Z;Q4UGQ%>?LOZC;Y_w$-Mb#Ha;y zbHlE&h-~zOHiiD^YA^F_!T1KH>thu$N=_Xibl&!C;XY?*Ox>@Jph@W9#=9lV3Ue(e z$;Jx=!h^$n!YsUz;=# zx1-dI(SuX|d(CB3%}_`r0sw#u`Uk3*d1)U8bYKPcfCIn`xB^RH4M$Vp0-Gz$O=02! z%;Byn*avWMZy%i50t?v8VcQ2!x&r5K#1Eslv48~U$G=VK0H1I765uKfgo9XEiBJFjy%Y)- zX9J9CAq0TK&3`(Gf5{c~Rj$!WPZYzq9$fh<*Hk8yTAu#m#fe?=MbPEf!CtD~YqrNb z>+Y#Y&LSPI0~TJDyxQ!jCcHtK*i@*XKQBD`WhDB|)pGtomBG2=7sPqWSS5k|n1RA` z8-cubI>vK)L2&e z;Ds5#`2w!VLQ!4vPl<5`EBYacqQN-}+<`v~z~HV_Wpxt0N`Or&B!19R2)KHdp!5U_op^cW_*U zv6jy(=RSD|-@lQAv&IYZQN`4X&R$EJCT=$(Yo%R?2&Ay;0`VE#WKCQ{d(^-?~=Qo?(Yn{@1t(cBfS_`jc(+HNGj7Pk4cZ~NL%tZ z_9trWtVlHTCubHmDVn^R$TI#=mStgb@5hUa$yQ%HO^LG%=` Hello, World! Ux0WbUl0+Ck1vAlonmbcqD+iO0o=VxL/QhVQPqrQg6x+21ZEbRFExzKXswgnaxJDp3ynMKHDrboX60O7RRssoy4m7AK3LkJwgdoPj0+1ZFvHTAt/6yaAvKZSulToQWiLQ6hrofJv9ofrnKnuvGPj2tcVrdKxZWZGck+gWN/hI/AwIcTp6s89rLeRnYaFP8q+TAIfRdM=MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX -MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA -RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx -NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF -ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy -AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G -nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 -mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl -AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF -AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm -QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 -d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== - \ No newline at end of file diff --git a/pytrustnfe/test/xml_com_qrcode.xml b/pytrustnfe/test/xml_com_qrcode.xml deleted file mode 100644 index 22cf1ef..0000000 --- a/pytrustnfe/test/xml_com_qrcode.xml +++ /dev/null @@ -1,189 +0,0 @@ - - 103 - 1 - - - - 35 - 44887503 - Venda POS - 0 - 65 - 1 - 1 - 2016-11-09T16:03:58-00:00 - 1 - 1 - 3550308 - 4 - 1 - 4 - 2 - 1 - 1 - 1 - 0 - Odoo Brasil 10 - - - 21332917000163 - LEL AMBIENTAL LTDA - EPP - Zell Ambiental - - Rua Padre João - 444 - Penha de França - 3550308 - São Paulo - SP - 03637000 - 1058 - Brasil - 3425323750 - - 244694180116 - 3 - - - - MISC - - NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL - 28431000 - 2806300 - 5101 - Unit(s - 18.0 - 18.00 - 324.00 - - Unit(s - 18.0 - 18.00 - 1 - - - 0.00 - - - 0 - 00 - 3 - 324.00 - 19.00 - 61.56 - - - - - 01 - 324.00 - 0.00 - 2.11 - - - - - 01 - 324.00 - 0.00 - 9.72 - - - - - - - 324.00 - 61.56 - 0.00 - 0.00 - 0.00 - 324.00 - 0.00 - 0.00 - 0.00 - 0.00 - 0.00 - 2.11 - 9.72 - 0.00 - 324.00 - 0.00 - - - - 9 - - - 01 - 324.00 - - - - - - - - - - - - - ffJZ+04jmHN3uLx08huykyBs2r4= - - - u42y8bBqNM336yc7r0+5YWiePmCerKu3cFcp2J+lmQzIK6snba7txyeBtwVos8jQxrYLsnfWtKb5P6FxmhDeqAB41o2aoSIcnxc0yxdFn2ZDTquwU+AurH6E4hGclz8D/5qapv2+g3y+VpXMZFNNCqZSm2vJpvXBmPEY/7oO2cPB13N7WDhDRmI9H4kRDsPuxeeJetr2Bf1ThGJ0EUA4DXC7My0kl/Bw0rYwoPDhoqhxinr9Wocw1UyQ1vprLF0JVHXOtSq39Uqfqmj5QUDwUvvh4YL9bFZ8lvZZ0CZDmILaFGvr1XH3CwJ2Ws3RLlb12Arj5OT4vS8ZKhJtr/dpfA== - - - MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 -MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj -cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD -VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw -OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw -CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh -cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU -DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z -aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw -MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz -0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt -sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u -v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin -nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 -Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx -c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw -NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg -IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO -MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA -emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp -djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo -BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y -ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu -X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz -aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S -RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy -YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 -ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n -b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j -cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB -jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv -bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H -NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw -DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN -zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY -PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ -dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 -MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO -RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa -JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ -QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT -TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ -j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl -8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 -Fbux - - - - - - \ No newline at end of file diff --git a/pytrustnfe/test/xml_sem_qrcode.xml b/pytrustnfe/test/xml_sem_qrcode.xml deleted file mode 100644 index 3352a22..0000000 --- a/pytrustnfe/test/xml_sem_qrcode.xml +++ /dev/null @@ -1,190 +0,0 @@ - - - 103 - 1 - - - - 35 - 44887503 - Venda POS - 0 - 65 - 1 - 1 - 2016-11-09T16:03:58-00:00 - 1 - 1 - 3550308 - 4 - 1 - 4 - 2 - 1 - 1 - 1 - 0 - Odoo Brasil 10 - - - 21332917000163 - LEL AMBIENTAL LTDA - EPP - Zell Ambiental - - Rua Padre João - 444 - Penha de França - 3550308 - São Paulo - SP - 03637000 - 1058 - Brasil - 3425323750 - - 244694180116 - 3 - - - - MISC - - NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL - 28431000 - 2806300 - 5101 - Unit(s - 18.0 - 18.00 - 324.00 - - Unit(s - 18.0 - 18.00 - 1 - - - 0.00 - - - 0 - 00 - 3 - 324.00 - 19.00 - 61.56 - - - - - 01 - 324.00 - 0.00 - 2.11 - - - - - 01 - 324.00 - 0.00 - 9.72 - - - - - - - 324.00 - 61.56 - 0.00 - 0.00 - 0.00 - 324.00 - 0.00 - 0.00 - 0.00 - 0.00 - 0.00 - 2.11 - 9.72 - 0.00 - 324.00 - 0.00 - - - - 9 - - - 01 - 324.00 - - - - - - - - - - - - - ffJZ+04jmHN3uLx08huykyBs2r4= - - - u42y8bBqNM336yc7r0+5YWiePmCerKu3cFcp2J+lmQzIK6snba7txyeBtwVos8jQxrYLsnfWtKb5P6FxmhDeqAB41o2aoSIcnxc0yxdFn2ZDTquwU+AurH6E4hGclz8D/5qapv2+g3y+VpXMZFNNCqZSm2vJpvXBmPEY/7oO2cPB13N7WDhDRmI9H4kRDsPuxeeJetr2Bf1ThGJ0EUA4DXC7My0kl/Bw0rYwoPDhoqhxinr9Wocw1UyQ1vprLF0JVHXOtSq39Uqfqmj5QUDwUvvh4YL9bFZ8lvZZ0CZDmILaFGvr1XH3CwJ2Ws3RLlb12Arj5OT4vS8ZKhJtr/dpfA== - - - MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 -MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj -cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD -VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw -OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw -CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh -cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU -DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z -aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw -MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz -0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt -sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u -v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin -nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 -Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx -c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw -NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg -IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO -MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA -emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp -djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo -BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y -ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu -X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz -aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S -RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy -YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 -ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n -b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j -cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB -jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv -bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H -NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw -DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN -zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY -PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ -dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 -MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO -RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa -JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ -QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT -TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ -j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl -8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 -Fbux - - - - - - diff --git a/pytrustnfe/test/xml_valido_assinado.xml b/pytrustnfe/test/xml_valido_assinado.xml deleted file mode 100644 index 8a4f3d9..0000000 --- a/pytrustnfe/test/xml_valido_assinado.xml +++ /dev/null @@ -1,13 +0,0 @@ - Hello, World! Ux0WbUl0+Ck1vAlonmbcqD+iO0o=Df47e1lipDN9NM33YtjVqLHbeQFdQFy4T5VnJqEqHUlVb1EcphVPEDjyJLQmrsp93JRBTFrhzBjgNz643RMzYd00rOgH7ZN/zD4fp/WphLZyzT+8DqsleajxW4y9RgGjI5ceUdFCF16JATjTzvlBgi6jWBbtJArOqL1pKrQdlVk=MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX -MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA -RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx -NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF -ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy -AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G -nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 -mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl -AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF -AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm -QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 -d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== - \ No newline at end of file diff --git a/tests/XMLs/NFe00000857.xml b/tests/XMLs/NFe00000857.xml new file mode 100644 index 0000000..d431ac3 --- /dev/null +++ b/tests/XMLs/NFe00000857.xml @@ -0,0 +1,46 @@ +3513416577Venda Não Contribuintes15518572017-02-24T11:39:30-00:002017-02-24T11:39:30-00:0012355030811721100Odoo Brasil 1021332917000163TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDATrustcodeRua Vinicius de Moraes42Córrego Grande3550308FlorianópolisSC880372401058Brasil1135302850144013873114111370685000184NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCALAV AMAZONAS1193Centro4314902Porto AlegreRS902405421058Brasil9VTS-L123110090339FIU32898EDSDKJ23JK4K2JLKJ4LK23234234KLJ3L3VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAOVENTIS PRETO- O2 CO H2S2902710006108UN1.0100.00100.00UN1.03562.2695.0010.000102999493657.260.000.0007070.000.000.000.000.003562.2695.000.000.000.000.000.000.000.003657.260.001SEDEXFalse - False, FalseINV/2017/01263562.263657.26012017-03-161828.63022017-04-151828.63PERMITE O APROVEITAMENTO DO CRÉDITO DE ICMS NO VALOR CORRESPONDENTE À ALÍQUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 >>IMPORTANTE<< P/ LIQUIDACAO DESTA NF, EFETUE DEPOSITO IDENTIFICADO NO BANCO BRADESCO AG: PEDIDO DE COMPRAS: OC 0045-05/2017 (Orçamento SO176) **VENCIMENTO: 15/04/2017 ==> .OC 0045-05/2017 N/S 16122WZ-021bNLOBxpMk5J6rrz37coB8/pvTBE=Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 +MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj +cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD +VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw +OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw +CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh +cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU +DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z +aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw +MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz +0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt +sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u +v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin +nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 +Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx +c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw +NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg +IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO +MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA +emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp +djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo +BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y +ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu +X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz +aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S +RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy +YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 +ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n +b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j +cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB +jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv +bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H +NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw +DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN +zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY +PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ +dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 +MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO +RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa +JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ +QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT +TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ +j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl +8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 +Fbux +2SP_NFE_PL_008i2351702213329170001635500100000085711341657772017-02-24T08:39:31-03:00135170000807903bNLOBxpMk5J6rrz37coB8/pvTBE=100Autorizado o uso da NF-e diff --git a/tests/XMLs/jinja_remove_empty.xml b/tests/XMLs/jinja_remove_empty.xml new file mode 100644 index 0000000..631bac8 --- /dev/null +++ b/tests/XMLs/jinja_remove_empty.xml @@ -0,0 +1 @@ +oiolacomovai diff --git a/tests/XMLs/jinja_result.xml b/tests/XMLs/jinja_result.xml new file mode 100644 index 0000000..ace8e28 --- /dev/null +++ b/tests/XMLs/jinja_result.xml @@ -0,0 +1 @@ +oiolacomovai diff --git a/tests/XMLs/jinja_template.xml b/tests/XMLs/jinja_template.xml new file mode 100644 index 0000000..369517c --- /dev/null +++ b/tests/XMLs/jinja_template.xml @@ -0,0 +1,6 @@ + + {{ tag1 }} + {{ tag2 }} + + {{ tag3 }} + diff --git a/tests/XMLs/paulistana_canc.xml b/tests/XMLs/paulistana_canc.xml new file mode 100644 index 0000000..8aa75ea --- /dev/null +++ b/tests/XMLs/paulistana_canc.xml @@ -0,0 +1 @@ +false1305Assinatura de cancelamento da NFS-e incorreta.512382446APRMJR diff --git a/tests/XMLs/paulistana_canc_errado.xml b/tests/XMLs/paulistana_canc_errado.xml new file mode 100644 index 0000000..4fd39b4 --- /dev/null +++ b/tests/XMLs/paulistana_canc_errado.xml @@ -0,0 +1,17 @@ + + + false + + + 1305 + Assinatura de cancelamento da NFS-e incorreta. + + 512382 + 446 + APR9QMJR + + + diff --git a/tests/XMLs/paulistana_canc_ok.xml b/tests/XMLs/paulistana_canc_ok.xml new file mode 100644 index 0000000..74e27fe --- /dev/null +++ b/tests/XMLs/paulistana_canc_ok.xml @@ -0,0 +1,8 @@ + + + true + + diff --git a/tests/XMLs/paulistana_resultado.xml b/tests/XMLs/paulistana_resultado.xml new file mode 100644 index 0000000..3e66f99 --- /dev/null +++ b/tests/XMLs/paulistana_resultado.xml @@ -0,0 +1 @@ +true265436451212213329001632016-08-29T10:52:15101.3552382446APR9MJR5128216 diff --git a/tests/XMLs/paulistana_signature.xml b/tests/XMLs/paulistana_signature.xml new file mode 100644 index 0000000..c4f8cbc --- /dev/null +++ b/tests/XMLs/paulistana_signature.xml @@ -0,0 +1,33 @@ +12345678901234false2016-08-292016-08-291E4fpHYkQa7Naxn6IKGb7NwwZu5tPk/KXJ9hCwtZgq0xvKS450aQqqBL+7Iv46lTgqrSMu7+gLrl+LC1qs/8aT2mbHE8uaVFSbzwZ+sF/BkcT6nsFHLMswEiTAEs95Jb7hN1cC91xqQGRH4buw0TzxHKmhuLJ22WwtG/scxyKtjM=12345611RPS2016-08-29NT0.000.000.000.000.00074985.00false123456Trustcode1Vinicius de Moraes, 4242CorregoFloripaSC88037240Venda de servico + + + + + + + + + +ePJnD6hyDvlJo08PFX8h2TXk0ZM= + + +GbaQaTEtxuKdRRaadginWPFH5K65ywqEikkwChWO3xX5Kglq8RPm4+LjnpJmuTcE +9I2BVon3GJFh+c/6RKzJPose6FXog2xnCpTOgwA/rks/gKsUAaRlXCPsLcKMKaOj +3eH21RHEyrxBAbdpEUdlEgQWaWzmGq009EiQ544sD6c= + + +MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX +MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA +RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx +NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF +ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy +AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G +nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 +mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl +AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF +AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm +QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 +d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== + + + \ No newline at end of file diff --git a/tests/XMLs/recibo_envio_1.xml b/tests/XMLs/recibo_envio_1.xml new file mode 100644 index 0000000..db93561 --- /dev/null +++ b/tests/XMLs/recibo_envio_1.xml @@ -0,0 +1,13 @@ + + + 2 + SVRS20140728145415 + 103 + Lote recebido com sucesso + 42 + 2014-08-18T10:32:32 + + 423002149000085 + 1 + + \ No newline at end of file diff --git a/tests/XMLs/recibo_envio_2.xml b/tests/XMLs/recibo_envio_2.xml new file mode 100644 index 0000000..57c6c9c --- /dev/null +++ b/tests/XMLs/recibo_envio_2.xml @@ -0,0 +1,13 @@ + + + 2 + SVRS20140728145415 + 103 + Lote recebido com sucesso + 42 + 2014-08-18T17:33:28 + + 423002149008908 + 1 + + \ No newline at end of file diff --git a/tests/XMLs/recibo_protocolo_sucesso_1.xml b/tests/XMLs/recibo_protocolo_sucesso_1.xml new file mode 100644 index 0000000..d528f95 --- /dev/null +++ b/tests/XMLs/recibo_protocolo_sucesso_1.xml @@ -0,0 +1,21 @@ + + + 2 + SVRS20140729095237 + 423002149000085 + 104 + Lote processado + 42 + + + 2 + SVRS20140729095237 + 42140803657739000169550020000000011000000018 + 2014-08-18T10:32:32 + 342140000660576 + ladI/iyYJbQx6QW5ihtlBMR1UUY= + 100 + Autorizado o uso da NF-e + + + \ No newline at end of file diff --git a/tests/XMLs/recibo_protocolo_sucesso_2.xml b/tests/XMLs/recibo_protocolo_sucesso_2.xml new file mode 100644 index 0000000..29a10d1 --- /dev/null +++ b/tests/XMLs/recibo_protocolo_sucesso_2.xml @@ -0,0 +1,21 @@ + + + 2 + SVRS20140729095237 + 423002149008908 + 104 + Lote processado + 42 + + + 2 + SVRS20140729095237 + 42140803657739000169550020000000021000000023 + 2014-08-18T17:33:28 + 342140000666829 + oQsitGdZl1I66NNzpMn8Wf6mI7c= + 100 + Autorizado o uso da NF-e + + + \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_add_qr_code.py b/tests/test_add_qr_code.py new file mode 100644 index 0000000..77a24f4 --- /dev/null +++ b/tests/test_add_qr_code.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8-*- +# © 2016 Alessandro Fernandes Martini +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import unittest +# from lxml import etree +from pytrustnfe.nfe import _add_qrCode + + +class TestAddQRCode(unittest.TestCase): + def setUp(self): + self.xml_sem_qrcode = open('tests/xml_sem_qrcode.xml', 'r') + self.xml_com_qrcode = open('tests/xml_com_qrcode.xml', 'r') + dhEmi = '2016-11-09T16:03:25-00:00' + chave_nfe = 'NFe35161121332917000163650010000000011448875034' + ambiente = 2 + valor_total = '324.00' + icms_total = '61.56' + cid_token = '000001' + csc = '123456789' + estado = '35' + total = {'vNF': valor_total, 'vICMS': icms_total} + infnfe = {'ide': {'dhEmi': dhEmi}, 'Id': chave_nfe, 'total': total, + 'codigo_seguranca': {'cid_token': cid_token, 'csc': csc}} + infnfe = {'infNFe': infnfe} + self.kwargs = {} + self.kwargs['ambiente'] = ambiente + self.kwargs['estado'] = estado + self.kwargs['NFes'] = [infnfe] + + def test_add_qrCode(self): + xml_init = self.xml_sem_qrcode.read() + xml_end = _add_qrCode(xml_init, **self.kwargs) + self.assertEqual(xml_end, self.xml_com_qrcode.read()) diff --git a/tests/test_assinatura.py b/tests/test_assinatura.py new file mode 100644 index 0000000..f13b851 --- /dev/null +++ b/tests/test_assinatura.py @@ -0,0 +1,55 @@ +# coding=utf-8 +''' +Created on Jun 14, 2015 + +@author: danimar +''' +import os +import os.path +import unittest +from lxml import etree +from pytrustnfe.nfe.assinatura import Assinatura + + +XML_ASSINAR = '' \ + ' '\ + ' Hello, World!' \ + ' ' \ + '' + + +XML_ERRADO = '' \ + ' ' \ + ' Hello, World!' \ + ' ' \ + '' + + +class test_assinatura(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def test_assinar_xml_senha_invalida(self): + pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + signer = Assinatura(pfx, '123') + self.assertRaises(Exception, signer.assina_xml, signer, + etree.fromstring(XML_ASSINAR), + 'NFe43150602261542000143550010000000761792265342') + + def test_assinar_xml_invalido(self): + pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + signer = Assinatura(pfx, '123456') + self.assertRaises(Exception, signer.assina_xml, signer, + etree.fromstring(XML_ERRADO), + 'NFe43150602261542000143550010000000761792265342') + + def test_assinar_xml_valido(self): + pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + signer = Assinatura(pfx, '123456') + xml = signer.assina_xml( + etree.fromstring(XML_ASSINAR), + 'NFe43150602261542000143550010000000761792265342') + xml_assinado = open(os.path.join(self.caminho, + 'xml_valido_assinado.xml'), + 'r').read() + self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido') diff --git a/tests/test_certificado.py b/tests/test_certificado.py new file mode 100644 index 0000000..e05a8f0 --- /dev/null +++ b/tests/test_certificado.py @@ -0,0 +1,82 @@ +# coding=utf-8 +''' +Created on Jun 14, 2015 + +@author: danimar +''' +import unittest +import os +import os.path +from pytrustnfe.certificado import Certificado +from pytrustnfe.certificado import save_cert_key +from pytrustnfe.certificado import extract_cert_and_key_from_pfx + +CHAVE = '-----BEGIN PRIVATE KEY-----\n' \ + 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJONRp6l1y2ojgv8\n' \ + 'tP3AOLW0vjWQqiPseBLM7YAxbzz5R7LYlWHC0ZJ4uIvd4Cvc6AuoNJoeuhzFcwHx\n' \ + 'PL0TcFuW+5up1ktUohwaJ+/zKrMODCKt0gvif302yqasMnwLh9mGZQIkLkHPOX8p\n' \ + 'ZQDC4dlqwOyYDi0f+bRd5C7aWx3RAgMBAAECgYADqASP+dwTLZIXifOSNikxl4D/\n' \ + 'Is6UhU+UZ6+a9Z6kDClSrTtGaOV4k7U/AgiEDb1STKDBEPHbtKjc63Vt2gV2teem\n' \ + 'ohU0Giv+gD42uuwy2DM31OfYrpR46mzOK9JrpQc78b36ealL3AWJ1gyBbbcOWbAb\n' \ + 'KmP742V7pcD07EEp4QJBAM/e7M8VdLgOyaQzH9KHekU6fJlI4vy1UwgRUwx3/1W6\n' \ + 'zlBYo1qXfc7NSVG8ZaSrJwW4rPn393u31CpXv+oc/OMCQQC1txS6nxM9+p/641HX\n' \ + 'CHXiWJRn0Wv7rT1FyF2dHO+OQOkCCnHCsGDMf3bacTNb7iyaPbXEDac8od5uF/3h\n' \ + 'aUy7AkBDPGoAeYItXqseL2Mlp6iG5+oRcp/o+YWH4IKqT84JHslI98KutL1+vKvw\n'\ + 'gi2mW63djeR1Xh1wqP85SvTKduHdAkAIJLlIF8Lr/yRWQQO06EsoJqIX+Pmm4L+j\n'\ + 'NfSECvztWhlXHxK0D+V2pKu15GbR0t2q1+Micx4wiGyIcIjPJkHrAkAvlbXGFcGT\n'\ + 'pk9bQ8nl7EYqlvVn1TejzTLfBhBYOse/xT/NI4Kwjkan9R+EJ1cOc9EE8gm1W3jv\n'\ + 'fMw/Bh2wC5kj\n'\ + '-----END PRIVATE KEY-----\n' + +CERTIFICADO = '-----BEGIN CERTIFICATE-----\n'\ + 'MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX\n'\ + 'MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA\n'\ + 'RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx\n'\ + 'NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF\n'\ + 'ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy\n'\ + 'AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G\n'\ + 'nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0\n'\ + 'mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl\n'\ + 'AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF\n'\ + 'AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm\n'\ + 'QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86\n'\ + 'd126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw==\n'\ + '-----END CERTIFICATE-----\n' + + +class test_assinatura(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def test_preparar_pfx(self): + dir_pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + cert, key = extract_cert_and_key_from_pfx(dir_pfx, '123456') + self.assertEqual(key, CHAVE, 'Chave gerada inválida') + self.assertEqual(cert, CERTIFICADO, 'Certificado inválido') + + def test_save_pfx(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123') + path = pfx.save_pfx() + saved = open(path, 'rb').read() + self.assertEqual(pfx_source, saved, + 'Arquivo pfx salvo não bate com arquivo lido') + + def test_save_cert_and_key(self): + dir_pfx = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + cert, key = extract_cert_and_key_from_pfx(dir_pfx, '123456') + cert_path, key_path = save_cert_key(cert, key) + cert_saved = open(cert_path, 'r').read() + key_saved = open(key_path, 'r').read() + self.assertEqual( + cert, cert_saved, 'Certificado não corresponde ao original') + self.assertEqual(key, key_saved, 'Chave não corresponde ao original') + + def test_pfx_nao_existe(self): + self.assertRaises(Exception, extract_cert_and_key_from_pfx, + 'file.pfx', '123456') + + def test_pfx_senha_invalida(self): + dir_pfx = os.path.join(self.caminho, 'teste.pfx') + self.assertRaises(Exception, extract_cert_and_key_from_pfx, + dir_pfx, '123') diff --git a/tests/test_comunicacao.py b/tests/test_comunicacao.py new file mode 100644 index 0000000..b47c3a1 --- /dev/null +++ b/tests/test_comunicacao.py @@ -0,0 +1,20 @@ +# coding=utf-8 +''' +Created on Jun 16, 2015 + +@author: danimar +''' +import unittest +import os.path + + +XML_RETORNO = '103' \ + '42' + + +class test_comunicacao(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def test_envio_nfe(self): + pass diff --git a/tests/test_consulta_cadastro.py b/tests/test_consulta_cadastro.py new file mode 100644 index 0000000..a284b56 --- /dev/null +++ b/tests/test_consulta_cadastro.py @@ -0,0 +1,19 @@ +# coding=utf-8 + +import mock +import os.path +import unittest +from pytrustnfe.certificado import Certificado +from pytrustnfe.nfe import consulta_cadastro + + +class test_consulta_cadastro(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def test_conta_de_cadastro(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123456') + + obj = {'cnpj': '12345678901234', 'estado': '42'} + consulta_cadastro(pfx, obj=obj, ambiente=1, estado='42') diff --git a/tests/test_danfe.py b/tests/test_danfe.py new file mode 100644 index 0000000..a854858 --- /dev/null +++ b/tests/test_danfe.py @@ -0,0 +1,26 @@ +# coding=utf-8 + +import tempfile +import os.path +import unittest +from lxml import etree +from pytrustnfe.nfe.danfe import danfe + + +class test_danfe(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def test_can_generate_danfe(self): + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_string = open(os.path.join(path, 'NFe00000857.xml'), "r").read() + # xml_string = open('/home/danimar/Downloads/NFe (5).xml', "r").read() + + xml_element = etree.fromstring(xml_string) + + oDanfe = danfe(list_xml=[xml_element]) + + # Para testar localmente o Danfe + # with open('/home/danimar/danfe.pdf', 'w') as oFile: + with tempfile.TemporaryFile(mode='wb') as oFile: + oDanfe.writeto_pdf(oFile) diff --git a/tests/test_ginfes.py b/tests/test_ginfes.py new file mode 100644 index 0000000..6d23e5e --- /dev/null +++ b/tests/test_ginfes.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# © 2016 Danimar Ribeiro, Trustcode +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import os.path +import unittest +from pytrustnfe.certificado import Certificado +from pytrustnfe.nfse.ginfes import consultar_situacao_lote + + +class test_nfse_ginfes(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + @unittest.skip + def test_consulta_situacao_lote(self): + pfx_source = open('/home/danimar/Downloads/machado.pfx', 'rb').read() + pfx = Certificado(pfx_source, '123456789') + + dados = {'ambiente': 'homologacao'} + retorno = consultar_situacao_lote( + pfx, consulta=dados, ambiente='homologacao') + + self.assertNotEqual(retorno['received_xml'], '') + self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) diff --git a/tests/test_nfse_paulistana.py b/tests/test_nfse_paulistana.py new file mode 100644 index 0000000..06d4200 --- /dev/null +++ b/tests/test_nfse_paulistana.py @@ -0,0 +1,143 @@ +# coding=utf-8 + +import mock +import os.path +import unittest +from pytrustnfe.certificado import Certificado +from pytrustnfe.nfse.paulistana import envio_lote_rps +from pytrustnfe.nfse.paulistana import cancelamento_nfe +from pytrustnfe.nfse.assinatura import Assinatura +from pytrustnfe.nfse.paulistana import sign_tag + + +class test_nfse_paulistana(unittest.TestCase): + + caminho = os.path.dirname(__file__) + + def _get_nfse(self): + rps = [ + { + 'assinatura': '123', + 'serie': '1', + 'numero': '1', + 'data_emissao': '2016-08-29', + 'codigo_atividade': '07498', + 'total_servicos': '2.00', + 'total_deducoes': '3.00', + 'prestador': { + 'inscricao_municipal': '123456' + }, + 'tomador': { + 'tipo_cpfcnpj': '1', + 'cpf_cnpj': '12345678923256', + 'inscricao_municipal': '123456', + 'razao_social': 'Trustcode', + 'tipo_logradouro': '1', + 'logradouro': 'Vinicius de Moraes, 42', + 'numero': '42', + 'bairro': 'Corrego', + 'cidade': 'Floripa', + 'uf': 'SC', + 'cep': '88037240', + }, + 'codigo_atividade': '07498', + 'aliquota_atividade': '5.00', + 'descricao': 'Venda de servico' + } + ] + nfse = { + 'cpf_cnpj': '12345678901234', + 'data_inicio': '2016-08-29', + 'data_fim': '2016-08-29', + 'lista_rps': rps + } + return nfse + + def test_envio_nfse(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123456') + + nfse = self._get_nfse() + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_return = open(os.path.join( + path, 'paulistana_resultado.xml'), 'r').read() + + with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: + retorno = mock.MagicMock() + client.return_value = retorno + retorno.service.EnvioLoteRPS.return_value = xml_return + + retorno = envio_lote_rps(pfx, nfse=nfse) + + self.assertEqual(retorno['received_xml'], xml_return) + self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) + self.assertEqual( + retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446) + self.assertEqual( + retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6) + + def test_nfse_signature(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123456') + + nfse = self._get_nfse() + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_sent = open(os.path.join( + path, 'paulistana_signature.xml'), 'r').read() + + with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: + retorno = mock.MagicMock() + client.return_value = retorno + retorno.service.EnvioLoteRPS.return_value = '' + + retorno = envio_lote_rps(pfx, nfse=nfse) + self.assertEqual(retorno['sent_xml'], xml_sent) + + def _get_cancelamento(self): + return { + 'cnpj_remetente': '123', + 'assinatura': 'assinatura', + 'numero_nfse': '456', + 'inscricao_municipal': '654', + 'codigo_verificacao': '789', + } + + def test_cancelamento_nfse_ok(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123456') + cancelamento = self._get_cancelamento() + + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_return = open(os.path.join( + path, 'paulistana_canc_ok.xml'), 'r').read() + + with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: + retorno = mock.MagicMock() + client.return_value = retorno + retorno.service.CancelamentoNFe.return_value = xml_return + + retorno = cancelamento_nfe(pfx, cancelamento=cancelamento) + + self.assertEqual(retorno['received_xml'], xml_return) + self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) + + def test_cancelamento_nfse_com_erro(self): + pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'rb').read() + pfx = Certificado(pfx_source, '123456') + cancelamento = self._get_cancelamento() + + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_return = open(os.path.join( + path, 'paulistana_canc_errado.xml'), 'r').read() + + with mock.patch('pytrustnfe.nfse.paulistana.get_authenticated_client') as client: + retorno = mock.MagicMock() + client.return_value = retorno + retorno.service.CancelamentoNFe.return_value = xml_return + + retorno = cancelamento_nfe(pfx, cancelamento=cancelamento) + + self.assertEqual(retorno['received_xml'], xml_return) + self.assertEqual(retorno['object'].Cabecalho.Sucesso, False) + self.assertEqual( + retorno['object'].Erro.ChaveNFe.NumeroNFe, 446) diff --git a/tests/test_servidores.py b/tests/test_servidores.py new file mode 100644 index 0000000..2083f2c --- /dev/null +++ b/tests/test_servidores.py @@ -0,0 +1,48 @@ +# coding=utf-8 +''' +Created on Jun 14, 2015 + +@author: danimar +''' +import unittest +from pytrustnfe.Servidores import localizar_url, localizar_qrcode + +url_ba = 'https://nfe.sefaz.ba.gov.br/webservices/NfeAutorizacao/NfeAutoriza\ +cao.asmx' + +url_sp = 'https://nfe.fazenda.sp.gov.br/ws/nfeautorizacao.asmx' + +url_qrcode_homologacao_sp = 'https://homologacao.nfce.fazenda.sp.gov.br/NFCEConsultaPublica/Paginas/ConstultaQRCode.aspx' + +url_sc = 'https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NfeAutorizacao.asmx' + +url_rs = 'https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx' + +url_cad_rs = 'https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadcon\ +sultacadastro2.asmx' + +url_cad_sc = 'https://cad.svrs.rs.gov.br/ws/CadConsultaCadastro/CadConsult\ +aCadastro2.asmx' + + +class test_servidores(unittest.TestCase): + + def test_localizar_url(self): + url = localizar_url('NfeAutorizacao', '29', ambiente=1) + self.assertEqual(url, url_ba) + url = localizar_url('NfeAutorizacao', '35', ambiente=1) + self.assertEqual(url, url_sp) + url = localizar_url('NfeAutorizacao', '42', ambiente=1) + self.assertEqual(url, url_sc) + url = localizar_url('NfeAutorizacao', '43', ambiente=1) + self.assertEqual(url, url_rs) + + url = localizar_url('NfeConsultaCadastro', '43', ambiente=2) + self.assertEqual(url, url_cad_rs) + + url = localizar_url('NfeConsultaCadastro', '42', ambiente=2) + self.assertEqual(url, url_cad_sc) + + def test_localizar_qrcode(self): + url = localizar_qrcode('35') + self.assertEqual(url, url_qrcode_homologacao_sp) diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..247327d --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,119 @@ +# coding=utf-8 +''' +Created on Jun 16, 2015 + +@author: danimar +''' +import unittest +import datetime +from pytrustnfe.utils import date_tostring, datetime_tostring, \ + gerar_chave +from pytrustnfe.utils import ChaveNFe, CabecalhoSoap + + +class test_utils(unittest.TestCase): + kwargs = { + 'cnpj': '33009911002506', 'estado': '52', 'emissao': '0604', + 'modelo': '55', 'serie': '012', 'numero': 780, + 'tipo': 0, 'codigo': '26730161' + } + + def test_cabecalho_soap(self): + head = CabecalhoSoap(versao=1, estado='SC', soap_action='Autorizacao') + self.assertEqual(head.versao, 1) + self.assertEqual(head.estado, 'SC') + self.assertEqual(head.soap_action, 'Autorizacao') + + def test_date_tostring(self): + hoje = datetime.date.today() + data = date_tostring(hoje) + self.assertEqual(data, hoje.strftime("%d-%m-%y"), + "Não convertido corretamente") + self.assertRaises(Exception, date_tostring, "Not a date") + + def test_datetime_tostring(self): + hoje = datetime.datetime.now() + data = datetime_tostring(hoje) + self.assertEqual(data, hoje.strftime("%d-%m-%y %H:%M:%S"), + "Não convertido corretamente") + self.assertRaises(Exception, datetime_tostring, "Not a date") + + def test_geracao_chave(self): + chave = ChaveNFe(**self.kwargs) + str_chave = gerar_chave(chave) + chave_correta = '52060433009911002506550120000007800267301615' + self.assertEqual(str_chave, chave_correta, + "Geração de chave nf-e incorreta") + + str_chave = gerar_chave(chave, prefix='NFe') + chave_correta = 'NFe52060433009911002506550120000007800267301615' + self.assertEqual(str_chave, chave_correta, + "Geração de chave nf-e com prefixo incorreta") + + self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object") + self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object") + + def test_chave_nfe(self): + chave = ChaveNFe(**self.kwargs) + with self.assertRaises(AssertionError) as cm: + chave.cnpj = '' + chave.validar() + chave.cnpj = '1234567891011' + self.assertEqual('CNPJ necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.estado = '' + chave.validar() + chave.estado = '42' + self.assertEqual('Estado necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.emissao = '' + chave.validar() + chave.emissao = '0' + self.assertEqual('Emissão necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.modelo = '' + chave.validar() + chave.modelo = '55' + self.assertEqual('Modelo necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.serie = '' + chave.validar() + chave.serie = '012' + self.assertEqual('Série necessária para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.numero = '' + chave.validar() + chave.numero = '000000780' + self.assertEqual('Número necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.tipo = '' + chave.validar() + chave.tipo = '42' + self.assertEqual('Tipo necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') + + with self.assertRaises(AssertionError) as cm: + chave.codigo = '' + chave.validar() + self.assertEqual('Código necessário para criar chave NF-e', + str(cm.exception), + 'Validação da chave nf-e incorreta') diff --git a/tests/test_xml.py b/tests/test_xml.py new file mode 100644 index 0000000..45b70b7 --- /dev/null +++ b/tests/test_xml.py @@ -0,0 +1,30 @@ +# coding=utf-8 +''' +Created on Jun 14, 2015 + +@author: danimar +''' +import unittest +from datetime import datetime +from pytrustnfe.xml.filters import normalize_str +from pytrustnfe.xml.filters import strip_line_feed +from pytrustnfe.xml.filters import format_percent +from pytrustnfe.xml.filters import format_date +from pytrustnfe.xml.filters import format_datetime + + +class test_xmlfilters(unittest.TestCase): + + def test_xmlfilters(self): + word = normalize_str('ação café pó pá veêm') + self.assertEqual(word, 'acao cafe po pa veem') + self.assertEqual(1.5, format_percent(150)) + self.assertEqual('aa', format_date('aa')) + self.assertEqual('aa', format_datetime('aa')) + + dt = datetime(2016, 9, 17, 12, 12, 12) + self.assertEqual('2016-09-17', format_date(dt.date())) + self.assertEqual('2016-09-17T12:12:12', format_datetime(dt)) + + word = strip_line_feed("olá\ncomo vai\r senhor ") + self.assertEqual(word, "olá como vai senhor") diff --git a/tests/test_xml_serializacao.py b/tests/test_xml_serializacao.py new file mode 100644 index 0000000..82f3dbc --- /dev/null +++ b/tests/test_xml_serializacao.py @@ -0,0 +1,37 @@ +# coding=utf-8 + +import os.path +import unittest +from lxml import etree +from pytrustnfe.xml import render_xml +from pytrustnfe.xml import sanitize_response + + +class test_xml_serializacao(unittest.TestCase): + + def test_serializacao_default(self): + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml = render_xml(path, 'jinja_template.xml', False, tag1='oi', + tag2='ola', tag3='comovai') + + result = open(os.path.join(path, 'jinja_result.xml'), 'r').read() + self.assertEqual(xml + "\n", result) + + def test_serializacao_remove_empty(self): + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xmlElem = render_xml(path, 'jinja_template.xml', True, tag1='oi', + tag2='ola', tag3='comovai') + xml = etree.tostring(xmlElem, encoding=str) + result = open(os.path.join(path, 'jinja_remove_empty.xml'), 'r').read() + self.assertEqual(xml + '\n', result) + + def test_sanitize_response(self): + path = os.path.join(os.path.dirname(__file__), 'XMLs') + xml_to_clear = open(os.path.join(path, 'jinja_result.xml'), 'r').read() + xml, obj = sanitize_response(xml_to_clear) + print(type(xml)) + self.assertEqual(xml, xml_to_clear) + self.assertEqual(obj.tpAmb, 'oi') + self.assertEqual(obj.CNPJ, 'ola') + self.assertEqual(obj.indNFe, '') + self.assertEqual(obj.indEmi, 'comovai') diff --git a/tests/teste.pfx b/tests/teste.pfx new file mode 100644 index 0000000000000000000000000000000000000000..bb326abdd505200a18d4540c606db1052fc220f3 GIT binary patch literal 1764 zcmY+DdpOkj7so&IH3nnI-Ihy~OY1U?yJC?jk=r2KGQVkDo6OIMVPmq)kfCgoOH^b= z+Q*PI387z_ni9%wHg`ozuB8^^64`G(``dl?InVi=b6)3jKF{Zm^TshzV-P|D$3zvQ zWQ;Q0GM42KQV1>+^(&Hz%7XD398;qHUoDApBvYac#vIs-P_lnbVbBPO%Y^E2OsEE@ zi9-J$!;i}&rDYU-9M*2`HH9FlZX^@B;H&p0B%{;h3A5F|u*_;}QPi|BrKH$V=Y6K@ zH6CL})I7~_UNT2LYpt(B)|H=oQGdAm7DX7ZK@3~Z+EV))!4t32nwIP=MF@!uP1Mh^ z^)F=mZSxcxR;@+E)HSS&;*X?EVCH^#Gf9YNF0iDf-w|Teef)n@iqS$IDIQ99n|3%S zU8lv!)r+;}U%{%it-L%|>+as;Ld)dHHPI_IOV?M-pE+&)p&%VG9+e=~oGNgY3}{&B z5~qs`66Pe|pBd39qOgx<25I4YSmesqKj?@4n5?%MpGh#|jXg%AOfSPYqz;Qi!Sk=*1975 zq$zHwG+y18)Z;Q4UGQ%>?LOZC;Y_w$-Mb#Ha;y zbHlE&h-~zOHiiD^YA^F_!T1KH>thu$N=_Xibl&!C;XY?*Ox>@Jph@W9#=9lV3Ue(e z$;Jx=!h^$n!YsUz;=# zx1-dI(SuX|d(CB3%}_`r0sw#u`Uk3*d1)U8bYKPcfCIn`xB^RH4M$Vp0-Gz$O=02! z%;Byn*avWMZy%i50t?v8VcQ2!x&r5K#1Eslv48~U$G=VK0H1I765uKfgo9XEiBJFjy%Y)- zX9J9CAq0TK&3`(Gf5{c~Rj$!WPZYzq9$fh<*Hk8yTAu#m#fe?=MbPEf!CtD~YqrNb z>+Y#Y&LSPI0~TJDyxQ!jCcHtK*i@*XKQBD`WhDB|)pGtomBG2=7sPqWSS5k|n1RA` z8-cubI>vK)L2&e z;Ds5#`2w!VLQ!4vPl<5`EBYacqQN-}+<`v~z~HV_Wpxt0N`Or&B!19R2)KHdp!5U_op^cW_*U zv6jy(=RSD|-@lQAv&IYZQN`4X&R$EJCT=$(Yo%R?2&Ay;0`VE#WKCQ{d(^-?~=Qo?(Yn{@1t(cBfS_`jc(+HNGj7Pk4cZ~NL%tZ z_9trWtVlHTCubHmDVn^R$TI#=mStgb@5hUa$yQ%HO^LG%=` Hello, World! Ux0WbUl0+Ck1vAlonmbcqD+iO0o=VxL/QhVQPqrQg6x+21ZEbRFExzKXswgnaxJDp3ynMKHDrboX60O7RRssoy4m7AK3LkJwgdoPj0+1ZFvHTAt/6yaAvKZSulToQWiLQ6hrofJv9ofrnKnuvGPj2tcVrdKxZWZGck+gWN/hI/AwIcTp6s89rLeRnYaFP8q+TAIfRdM=MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX +MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA +RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx +NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF +ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy +AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G +nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 +mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl +AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF +AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm +QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 +d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== + \ No newline at end of file diff --git a/tests/xml_com_qrcode.xml b/tests/xml_com_qrcode.xml new file mode 100644 index 0000000..22cf1ef --- /dev/null +++ b/tests/xml_com_qrcode.xml @@ -0,0 +1,189 @@ + + 103 + 1 + + + + 35 + 44887503 + Venda POS + 0 + 65 + 1 + 1 + 2016-11-09T16:03:58-00:00 + 1 + 1 + 3550308 + 4 + 1 + 4 + 2 + 1 + 1 + 1 + 0 + Odoo Brasil 10 + + + 21332917000163 + LEL AMBIENTAL LTDA - EPP + Zell Ambiental + + Rua Padre João + 444 + Penha de França + 3550308 + São Paulo + SP + 03637000 + 1058 + Brasil + 3425323750 + + 244694180116 + 3 + + + + MISC + + NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + 28431000 + 2806300 + 5101 + Unit(s + 18.0 + 18.00 + 324.00 + + Unit(s + 18.0 + 18.00 + 1 + + + 0.00 + + + 0 + 00 + 3 + 324.00 + 19.00 + 61.56 + + + + + 01 + 324.00 + 0.00 + 2.11 + + + + + 01 + 324.00 + 0.00 + 9.72 + + + + + + + 324.00 + 61.56 + 0.00 + 0.00 + 0.00 + 324.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 2.11 + 9.72 + 0.00 + 324.00 + 0.00 + + + + 9 + + + 01 + 324.00 + + + + + + + + + + + + + ffJZ+04jmHN3uLx08huykyBs2r4= + + + u42y8bBqNM336yc7r0+5YWiePmCerKu3cFcp2J+lmQzIK6snba7txyeBtwVos8jQxrYLsnfWtKb5P6FxmhDeqAB41o2aoSIcnxc0yxdFn2ZDTquwU+AurH6E4hGclz8D/5qapv2+g3y+VpXMZFNNCqZSm2vJpvXBmPEY/7oO2cPB13N7WDhDRmI9H4kRDsPuxeeJetr2Bf1ThGJ0EUA4DXC7My0kl/Bw0rYwoPDhoqhxinr9Wocw1UyQ1vprLF0JVHXOtSq39Uqfqmj5QUDwUvvh4YL9bFZ8lvZZ0CZDmILaFGvr1XH3CwJ2Ws3RLlb12Arj5OT4vS8ZKhJtr/dpfA== + + + MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 +MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj +cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD +VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw +OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw +CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh +cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU +DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z +aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw +MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz +0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt +sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u +v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin +nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 +Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx +c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw +NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg +IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO +MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA +emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp +djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo +BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y +ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu +X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz +aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S +RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy +YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 +ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n +b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j +cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB +jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv +bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H +NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw +DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN +zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY +PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ +dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 +MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO +RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa +JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ +QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT +TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ +j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl +8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 +Fbux + + + + + + \ No newline at end of file diff --git a/tests/xml_sem_qrcode.xml b/tests/xml_sem_qrcode.xml new file mode 100644 index 0000000..3352a22 --- /dev/null +++ b/tests/xml_sem_qrcode.xml @@ -0,0 +1,190 @@ + + + 103 + 1 + + + + 35 + 44887503 + Venda POS + 0 + 65 + 1 + 1 + 2016-11-09T16:03:58-00:00 + 1 + 1 + 3550308 + 4 + 1 + 4 + 2 + 1 + 1 + 1 + 0 + Odoo Brasil 10 + + + 21332917000163 + LEL AMBIENTAL LTDA - EPP + Zell Ambiental + + Rua Padre João + 444 + Penha de França + 3550308 + São Paulo + SP + 03637000 + 1058 + Brasil + 3425323750 + + 244694180116 + 3 + + + + MISC + + NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + 28431000 + 2806300 + 5101 + Unit(s + 18.0 + 18.00 + 324.00 + + Unit(s + 18.0 + 18.00 + 1 + + + 0.00 + + + 0 + 00 + 3 + 324.00 + 19.00 + 61.56 + + + + + 01 + 324.00 + 0.00 + 2.11 + + + + + 01 + 324.00 + 0.00 + 9.72 + + + + + + + 324.00 + 61.56 + 0.00 + 0.00 + 0.00 + 324.00 + 0.00 + 0.00 + 0.00 + 0.00 + 0.00 + 2.11 + 9.72 + 0.00 + 324.00 + 0.00 + + + + 9 + + + 01 + 324.00 + + + + + + + + + + + + + ffJZ+04jmHN3uLx08huykyBs2r4= + + + u42y8bBqNM336yc7r0+5YWiePmCerKu3cFcp2J+lmQzIK6snba7txyeBtwVos8jQxrYLsnfWtKb5P6FxmhDeqAB41o2aoSIcnxc0yxdFn2ZDTquwU+AurH6E4hGclz8D/5qapv2+g3y+VpXMZFNNCqZSm2vJpvXBmPEY/7oO2cPB13N7WDhDRmI9H4kRDsPuxeeJetr2Bf1ThGJ0EUA4DXC7My0kl/Bw0rYwoPDhoqhxinr9Wocw1UyQ1vprLF0JVHXOtSq39Uqfqmj5QUDwUvvh4YL9bFZ8lvZZ0CZDmILaFGvr1XH3CwJ2Ws3RLlb12Arj5OT4vS8ZKhJtr/dpfA== + + + MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 +MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj +cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD +VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw +OTIzNTk1OVowgekxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMQsw +CQYDVQQIEwJTUDESMBAGA1UEBxQJU2FvIFBhdWxvMTYwNAYDVQQLFC1TZWNyZXRh +cmlhIGRhIFJlY2VpdGEgRmVkZXJhbCBkbyBCcmFzaWwgLSBSRkIxFjAUBgNVBAsU +DVJGQiBlLUNOUEogQTExJDAiBgNVBAsUG0F1dGVudGljYWRvIHBvciBBUiBTdW5z +aGluZTEuMCwGA1UEAxMlTEVaIEFNQklFTlRBTCBMVERBIEVQUDoyMTMzMjkxNzAw +MDE2MzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANEG6j0uXIvvHlMz +0IGzuY/vuFQncIoSE+cBUk0uq6J3dtmGAg4oaVWCHUfHbX9s2Ag1jIG+PFAo2dlt +sbLSEji74XhD+IpM/9aHm3ke8kb05ay+bYRuUjTNSwUbslT1+amAmIu7m1yPBi6u +v3+/Lj2I0g7VeBBAjv/TiBG0VRCURXvKrwWrv2Lpybo/yDnENGtRqQHihqeYFKin +nDzBsMbv4ripbi3XiAgcy/bF6NFgVMqxrNnGvSiSUhDRkmceVFIysRXUMke02Qo1 +Q5Ik1j1goUIHP44QOruXCMiT0yOK8u0qNAXR0yzSaWcBR2aJCeWgFg7sNbB50Qcx +c+2GKUECAwEAAaOCA1EwggNNMIG2BgNVHREEga4wgaugPQYFYEwBAwSgNAQyMTYw +NjE5ODYzNDEzNzgyODg2NTAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMzczU1NQU1Cg +IgYFYEwBAwKgGQQXTEVPTkFSRE8gREUgTElNQSBTQU5UT1OgGQYFYEwBAwOgEAQO +MjEzMzI5MTcwMDAxNjOgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRJ3YWduZXJA +emVsbC5jb20uYnIwCQYDVR0TBAIwADAfBgNVHSMEGDAWgBQukerWbeWyWYLcOIUp +djQWVjzQPjAOBgNVHQ8BAf8EBAMCBeAwfwYDVR0gBHgwdjB0BgZgTAECAQwwajBo +BggrBgEFBQcCARZcaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNvbS5ici9y +ZXBvc2l0b3Jpby9kcGMvQUNfQ2VydGlzaWduX1JGQi9EUENfQUNfQ2VydGlzaWdu +X1JGQi5wZGYwggEWBgNVHR8EggENMIIBCTBXoFWgU4ZRaHR0cDovL2ljcC1icmFz +aWwuY2VydGlzaWduLmNvbS5ici9yZXBvc2l0b3Jpby9sY3IvQUNDZXJ0aXNpZ25S +RkJHNC9MYXRlc3RDUkwuY3JsMFagVKBShlBodHRwOi8vaWNwLWJyYXNpbC5vdXRy +YWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduUkZCRzQvTGF0 +ZXN0Q1JMLmNybDBWoFSgUoZQaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5n +b3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnblJGQkc0L0xhdGVzdENSTC5j +cmwwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIGbBggrBgEFBQcBAQSB +jjCBizBfBggrBgEFBQcwAoZTaHR0cDovL2ljcC1icmFzaWwuY2VydGlzaWduLmNv +bS5ici9yZXBvc2l0b3Jpby9jZXJ0aWZpY2Fkb3MvQUNfQ2VydGlzaWduX1JGQl9H +NC5wN2MwKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIw +DQYJKoZIhvcNAQELBQADggIBAFIUBrNIyC4kBap/7hCW63tQhA/WNnWDNYpKM5wN +zwApVV2bqFMJURzO/7AUrHu7uZS1p/Ubo+w2dFjmnmj5DniQkY85Sd6HNa1fukJY +PK13wcUMVHMjeevIAcxnYraNdN4BIz1Svl6A8leGFgIEuDUll7Td+R7+aA8N5JYQ +dFFIe2VxvJNbWP/WA49oI8U2wkoPTfOZtfrgKf2msHm3FnTfnmyOPhIf8L31iFt6 +MbKuFjOGIaWu+Z/gRDqj/EbFcEMUrDbeIYqz2724ZGBOJrkjHO7DBqXXoN9pzCTO +RB5+gILMEnMS7zFsCuLOtLVohxgYUzg8p4Fy3nsHEzb/7IDVOnKLfjh/c5GSTvOa +JT6qznYV2yav7NyuUSNUv+5bCIBNk45+qrQ8DwpsLBsFa+RLfCwvYVK95ad/xVgJ +QosPJuzW3t0fU/FWbc00sZWV6lgBPyWhdF8EodaRIWC+EOC2wJbODyw+vdX8pUxT +TUJKV2iAP8206gR2h07o2CZgXckJGJQ5MnBUbS78AaITXZ5JlPaS7ZdU9zWY3kD+ +j5YERs0+UweijKi5eHZioGRZRDZ2uksh1wrgeLFLWuiSNaPFYVVrQ/ZGo+E5uVNl +8FuoR6P9TZjx1/A4XjqLQ9yPoPWgIWe14Vh/76dVcgz3ElWMbmPCDoc/wX+FoHX1 +Fbux + + + + + + diff --git a/tests/xml_valido_assinado.xml b/tests/xml_valido_assinado.xml new file mode 100644 index 0000000..8a4f3d9 --- /dev/null +++ b/tests/xml_valido_assinado.xml @@ -0,0 +1,13 @@ + Hello, World! Ux0WbUl0+Ck1vAlonmbcqD+iO0o=Df47e1lipDN9NM33YtjVqLHbeQFdQFy4T5VnJqEqHUlVb1EcphVPEDjyJLQmrsp93JRBTFrhzBjgNz643RMzYd00rOgH7ZN/zD4fp/WphLZyzT+8DqsleajxW4y9RgGjI5ceUdFCF16JATjTzvlBgi6jWBbtJArOqL1pKrQdlVk=MIICMTCCAZqgAwIBAgIQfYOsIEVuAJ1FwwcTrY0t1DANBgkqhkiG9w0BAQUFADBX +MVUwUwYDVQQDHkwAewA1ADkARgAxAEUANAA2ADEALQBEAEQARQA1AC0ANABEADIA +RgAtAEEAMAAxAEEALQA4ADMAMwAyADIAQQA5AEUAQgA4ADMAOAB9MB4XDTE1MDYx +NTA1NDc1N1oXDTE2MDYxNDExNDc1N1owVzFVMFMGA1UEAx5MAHsANQA5AEYAMQBF +ADQANgAxAC0ARABEAEUANQAtADQARAAyAEYALQBBADAAMQBBAC0AOAAzADMAMgAy +AEEAOQBFAEIAOAAzADgAfTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAk41G +nqXXLaiOC/y0/cA4tbS+NZCqI+x4EsztgDFvPPlHstiVYcLRkni4i93gK9zoC6g0 +mh66HMVzAfE8vRNwW5b7m6nWS1SiHBon7/Mqsw4MIq3SC+J/fTbKpqwyfAuH2YZl +AiQuQc85fyllAMLh2WrA7JgOLR/5tF3kLtpbHdECAwEAATANBgkqhkiG9w0BAQUF +AAOBgQArdh+RyT6VxKGsXk1zhHsgwXfToe6GpTF4W8PHI1+T0WIsNForDhvst6nm +QtgAhuZM9rxpOJuNKc+pM29EixpAiZZiRMCSWEItNyEVdUIi+YnKBcAHd88TwO86 +d126MWQ2O8cu5W1VoDp7hYBYKOnLbYi11/StO+0rzK+oPYAvIw== + \ No newline at end of file