diff --git a/pytrustnfe/servicos/assinatura.py b/pytrustnfe/servicos/assinatura.py
index 9200fb6..f7f16d3 100644
--- a/pytrustnfe/servicos/assinatura.py
+++ b/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')))
diff --git a/pytrustnfe/test/test_assinatura.py b/pytrustnfe/test/test_assinatura.py
index e261e49..d9aa829 100644
--- a/pytrustnfe/test/test_assinatura.py
+++ b/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 = '' \
+ '' \
+ ']>' \
'' \
' ' \
' Hello, World!' \
' ' \
''
-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()
\ No newline at end of file
diff --git a/pytrustnfe/test/teste.pfx b/pytrustnfe/test/teste.pfx
new file mode 100644
index 0000000..bb326ab
Binary files /dev/null and b/pytrustnfe/test/teste.pfx differ
diff --git a/pytrustnfe/test/xml_assinado.xml b/pytrustnfe/test/xml_assinado.xml
new file mode 100644
index 0000000..178375c
--- /dev/null
+++ b/pytrustnfe/test/xml_assinado.xml
@@ -0,0 +1,37 @@
+
+
+]>
+ Hello, World!
+
+
+
+
+
+
+
+
+
+Ux0WbUl0+Ck1vAlonmbcqD+iO0o=
+
+
+D7mPbktbL8eVjjlvHwHdttEBhBldotZtA6hIJ9I51PZ1Nb3KMxemEOMqbHcD4uZB
+AJ1/b0sHNst/CoOepACIwGIzUuQShYswuW9Bq84IeM4DIOu35kcaUmVAesdmPsg4
+eSBmzGHdUZYopiEO9l2iGJpPrDEDkiXtv2uN7jjKHiI=
+
+
+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==
+
+
+
diff --git a/requirements.txt b/requirements.txt
index 9f580cb..edacdc8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,2 @@
-nose
\ No newline at end of file
+nose
+mock
\ No newline at end of file