Browse Source

Corrigido testes unitários

tags/0.1.5
Danimar Ribeiro 11 years ago
parent
commit
9de9ca37ce
  1. 9
      pytrustnfe/servicos/assinatura.py
  2. 30
      pytrustnfe/test/test_assinatura.py
  3. BIN
      pytrustnfe/test/teste.pfx
  4. 37
      pytrustnfe/test/xml_assinado.xml
  5. 3
      requirements.txt

9
pytrustnfe/servicos/assinatura.py

@ -1,9 +1,11 @@
#coding=utf-8
'''
Created on Jun 14, 2015
@author: danimar
'''
import xmlsec, libxml2
import os.path
NAMESPACE_SIG = 'http://www.w3.org/2000/09/xmldsig#'
@ -12,7 +14,11 @@ class Assinatura(object):
def __init__(self, arquivo, senha):
self.arquivo = arquivo
self.senha = senha
def _checar_certificado(self):
if not os.path.isfile(self.arquivo):
raise Exception('Caminho do certificado não existe.')
def _inicializar_cripto(self):
libxml2.initParser()
libxml2.substituteEntitiesDefault(1)
@ -30,6 +36,7 @@ class Assinatura(object):
def assina_xml(self, xml):
self._checar_certificado()
self._inicializar_cripto()
try:
doc_xml = libxml2.parseMemory(xml.encode('utf-8'), len(xml.encode('utf-8')))

30
pytrustnfe/test/test_assinatura.py

@ -5,27 +5,41 @@ Created on Jun 14, 2015
@author: danimar
'''
import unittest
import os, os.path
from pytrustnfe.servicos.assinatura import Assinatura
XML_ASSINAR = '<?xml version="1.0" encoding="UTF-8"?>' \
'<!DOCTYPE Envelope [ ' \
' <!ATTLIST Data Id ID #IMPLIED>' \
']>' \
'<Envelope xmlns="urn:envelope">' \
' <Data Id="NFe43150602261542000143550010000000761792265342">' \
' Hello, World!' \
' </Data>' \
'</Envelope>'
XML_ASSINADO = ''
class test_assinatura(unittest.TestCase):
caminho = os.path.dirname(__file__)
def test_assinar_xml(self):
print 'oola'
assinatura = Assinatura('/home/danimar/Desktop/INFOGER.pfx', '123456')
self.assertRaises(RuntimeError, assinatura.assina_xml, XML_ASSINAR)
def test_assinar_xml_arquivo_invalido(self):
print self.caminho
assinatura = Assinatura(os.path.join(self.caminho, 'teste_nao_existe.pfx'), '123456')
self.assertRaises(Exception, assinatura.assina_xml, XML_ASSINAR)
def test_assinar_xml_senha_invalida(self):
assinatura = Assinatura(os.path.join(self.caminho,'teste.pfx'), '123')
self.assertRaises(Exception, assinatura.assina_xml, XML_ASSINAR)
def test_assinar_xml_valido(self):
assinatura = Assinatura(os.path.join(self.caminho,'teste.pfx'), '123456')
xml = assinatura.assina_xml(XML_ASSINAR)
xml_assinado = open(os.path.join(self.caminho, 'xml_assinado.xml'), 'r').read()
self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido')
#if __name__ == "__main__":
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
# unittest.main()
unittest.main()

BIN
pytrustnfe/test/teste.pfx

37
pytrustnfe/test/xml_assinado.xml

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Envelope [
<!ATTLIST Data Id ID #IMPLIED>
]>
<Envelope xmlns="urn:envelope"> <Data Id="NFe43150602261542000143550010000000761792265342"> Hello, World! </Data><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#NFe43150602261542000143550010000000761792265342">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>Ux0WbUl0+Ck1vAlonmbcqD+iO0o=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>D7mPbktbL8eVjjlvHwHdttEBhBldotZtA6hIJ9I51PZ1Nb3KMxemEOMqbHcD4uZB
AJ1/b0sHNst/CoOepACIwGIzUuQShYswuW9Bq84IeM4DIOu35kcaUmVAesdmPsg4
eSBmzGHdUZYopiEO9l2iGJpPrDEDkiXtv2uN7jjKHiI=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>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==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature></Envelope>

3
requirements.txt

@ -1 +1,2 @@
nose
nose
mock
Loading…
Cancel
Save