|
|
@ -4,48 +4,53 @@ Created on Jun 14, 2015 |
|
|
|
|
|
|
|
|
@author: danimar |
|
|
@author: danimar |
|
|
''' |
|
|
''' |
|
|
|
|
|
from lxml import etree |
|
|
import unittest |
|
|
import unittest |
|
|
import os, os.path |
|
|
|
|
|
from pytrustnfe.servicos.Assinatura import Assinatura |
|
|
|
|
|
|
|
|
import os |
|
|
|
|
|
import os.path |
|
|
|
|
|
from pytrustnfe.nfe.assinatura import Assinatura |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XML_ASSINAR = '<?xml version="1.0" encoding="UTF-8"?>' \ |
|
|
XML_ASSINAR = '<?xml version="1.0" encoding="UTF-8"?>' \ |
|
|
'<!DOCTYPE Envelope [ ' \ |
|
|
|
|
|
' <!ATTLIST Data Id ID #IMPLIED>' \ |
|
|
|
|
|
']>' \ |
|
|
|
|
|
'<Envelope xmlns="urn:envelope">' \ |
|
|
'<Envelope xmlns="urn:envelope">' \ |
|
|
' <Data Id="NFe43150602261542000143550010000000761792265342">'\ |
|
|
' <Data Id="NFe43150602261542000143550010000000761792265342">'\ |
|
|
' Hello, World!' \ |
|
|
' Hello, World!' \ |
|
|
' </Data>' \ |
|
|
' </Data>' \ |
|
|
'</Envelope>' |
|
|
'</Envelope>' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XML_ERRADO = '<?xml version="1.0" encoding="UTF-8"?>' \ |
|
|
XML_ERRADO = '<?xml version="1.0" encoding="UTF-8"?>' \ |
|
|
'<Envelope xmlns="urn:envelope">' \ |
|
|
'<Envelope xmlns="urn:envelope">' \ |
|
|
' <Data Id="NFe43150602261542000143550010000000761792265342">' \ |
|
|
|
|
|
|
|
|
' <Data Id="NFe">' \ |
|
|
' Hello, World!' \ |
|
|
' Hello, World!' \ |
|
|
' </Data>' \ |
|
|
' </Data>' \ |
|
|
'</Envelope>' |
|
|
'</Envelope>' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class test_assinatura(unittest.TestCase): |
|
|
class test_assinatura(unittest.TestCase): |
|
|
|
|
|
|
|
|
caminho = os.path.dirname(__file__) |
|
|
caminho = os.path.dirname(__file__) |
|
|
|
|
|
|
|
|
def test_assinar_xml_arquivo_invalido(self): |
|
|
|
|
|
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): |
|
|
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) |
|
|
|
|
|
|
|
|
pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() |
|
|
|
|
|
signer = Assinatura(pfx, '123') |
|
|
|
|
|
self.assertRaises(Exception, signer.assina_xml, signer, |
|
|
|
|
|
etree.fromstring(XML_ASSINAR), |
|
|
|
|
|
'NFe43150602261542000143550010000000761792265342') |
|
|
|
|
|
|
|
|
def test_assinar_xml_invalido(self): |
|
|
def test_assinar_xml_invalido(self): |
|
|
assinatura = Assinatura(os.path.join(self.caminho,'teste.pfx'), '123456') |
|
|
|
|
|
self.assertRaises(RuntimeError, assinatura.assina_xml, XML_ERRADO) |
|
|
|
|
|
|
|
|
pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() |
|
|
|
|
|
signer = Assinatura(pfx, '123456') |
|
|
|
|
|
self.assertRaises(Exception, signer.assina_xml, signer, |
|
|
|
|
|
etree.fromstring(XML_ERRADO), |
|
|
|
|
|
'NFe43150602261542000143550010000000761792265342') |
|
|
|
|
|
|
|
|
def test_assinar_xml_valido(self): |
|
|
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() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pfx = open(os.path.join(self.caminho, 'teste.pfx')).read() |
|
|
|
|
|
signer = Assinatura(pfx, '123456') |
|
|
|
|
|
xml = signer.assina_xml( |
|
|
|
|
|
etree.fromstring(XML_ASSINAR), |
|
|
|
|
|
'NFe43150602261542000143550010000000761792265342') |
|
|
|
|
|
xml_assinado = open(os.path.join(self.caminho, 'xml_assinado.xml'), |
|
|
|
|
|
'r').read() |
|
|
self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido') |
|
|
self.assertEqual(xml_assinado, xml, 'Xml assinado é inválido') |
|
|
|
|
|
|
|
|
|
|
|
|