From 58006e0390ab0490ea8b363db97bb7f12cad29df Mon Sep 17 00:00:00 2001 From: Italo Maia Date: Wed, 20 Jan 2010 11:24:07 -0300 Subject: [PATCH] corrigi a identacao. Alguns testes estavam falhando aqui por conta disto --- tests/01-basico.txt | 196 ++++++++++++++++++++++++++-------------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/tests/01-basico.txt b/tests/01-basico.txt index c751688..994eddb 100644 --- a/tests/01-basico.txt +++ b/tests/01-basico.txt @@ -1,145 +1,145 @@ TESTES BASICOS ============== - + >>> try: - ... set + ... set ... except: - ... from sets import Set as set + ... from sets import Set as set - + A biblioteca deve fornecer uma colecao de utilitarios para consumir o webservice da NF-e. - + Componentes ----------- - + A separacao entre os componentes da biblioteca deve seguir o seguinte modelo: - + --------------------------------------------------------------------- - | MODELO DE ENTIDADES | + | MODELO DE ENTIDADES | --------------------------------------------------------------------- - | | - | ------------ -------------- | - | | Entidade |-------<>| FonteDados | | - | ------------ -------------- | - | A | - | | | - | ----especializacao-------------------------- | - | | | | | | - | ------------ ----------- ----------- ------------------ | - | | Emitente | | Produto | | Cliente | | Transportadora | | - | ------------ ----------- ----------- ------------------ | - | *| *| *| *| | - | ------------------------------associacao---- | - | | | - | V* | - | --------------- ---------------- | - | | Nota Fiscal |------<>| Lote de NF-e | | - | --------------- 1 * ---------------- | - | | + | | + | ------------ -------------- | + | | Entidade |-------<>| FonteDados | | + | ------------ -------------- | + | A | + | | | + | ----especializacao-------------------------- | + | | | | | | + | ------------ ----------- ----------- ------------------ | + | | Emitente | | Produto | | Cliente | | Transportadora | | + | ------------ ----------- ----------- ------------------ | + | *| *| *| *| | + | ------------------------------associacao---- | + | | | + | V* | + | --------------- ---------------- | + | | Nota Fiscal |------<>| Lote de NF-e | | + | --------------- 1 * ---------------- | + | | --------------------------------------------------------------------- - - + + ---------------------------------------------------------------------------- - | PROCESSAMENTO | + | PROCESSAMENTO | ---------------------------------------------------------------------------- - | | - | ------------------ -------------- -------------------------------- | - | | Serializacao | | DANFE | | Comunicacao | | - | ------------------ -------------- -------------------------------- | - | | exportar() | | imprimir() | | transmitir() | | - | | importar() | -------------- | cancelar() | | - | ------------------ | situacao_nfe() | | - | | status_servico() | | - | ---------------------- | consultar_cadastro() | | - | | Validacao | | inutilizar_faixa_numeracao() | | - | ---------------------- -------------------------------- | - | | validar_arquivo() | | - | | validar_xml() | | - | | validar_etree() | ---------------------- | - | | validar_objetos() | | Assinatura | | - | ---------------------- ---------------------- | - | | assinar_arquivo() | | - | | assinar_xml() | | - | | assinar_etree() | | - | | assinar_objetos() | | - | ---------------------- | + | | + | ------------------ -------------- -------------------------------- | + | | Serializacao | | DANFE | | Comunicacao | | + | ------------------ -------------- -------------------------------- | + | | exportar() | | imprimir() | | transmitir() | | + | | importar() | -------------- | cancelar() | | + | ------------------ | situacao_nfe() | | + | | status_servico() | | + | ---------------------- | consultar_cadastro() | | + | | Validacao | | inutilizar_faixa_numeracao() | | + | ---------------------- -------------------------------- | + | | validar_arquivo() | | + | | validar_xml() | | + | | validar_etree() | ---------------------- | + | | validar_objetos() | | Assinatura | | + | ---------------------- ---------------------- | + | | assinar_arquivo() | | + | | assinar_xml() | | + | | assinar_etree() | | + | | assinar_objetos() | | + | ---------------------- | ---------------------------------------------------------------------------- - + Os pacotes da biblioteca sao: - -- utils (contem todas as funcionalidades utilitarias dentro da + +- utils (contem todas as funcionalidades utilitarias dentro da biblioteca, incluindo flags e funcoes genericas) - + >>> from pynfe import utils >>> set([attr for attr in dir(utils) if not attr.startswith('__')]) >= set(['flags']) True - + - entidades (contem todas as entidades da biblioteca) - + >>> from pynfe import entidades >>> set([attr for attr in dir(entidades) if not attr.startswith('__')]) == set([ - ... 'Cliente', 'Emitente', 'LoteNotaFiscal', 'NotaFiscal', 'Produto', - ... 'Transportadora', 'base', 'cliente', 'emitente', 'lotes', 'notafiscal', - ... 'produto', 'transportadora', 'fonte_dados', '_fonte_dados','certificado', - ... 'CertificadoA1']) + ... 'Cliente', 'Emitente', 'LoteNotaFiscal', 'NotaFiscal', 'Produto', + ... 'Transportadora', 'base', 'cliente', 'emitente', 'lotes', 'notafiscal', + ... 'produto', 'transportadora', 'fonte_dados', '_fonte_dados','certificado', + ... 'CertificadoA1']) True - + - processamento (contem todas as funcionalidades de processamento da biblioteca - + >>> from pynfe import processamento >>> set([attr for attr in dir(processamento) if not attr.startswith('__')]) == set([ - ... 'AssinaturaA1', 'ComunicacaoSefaz', 'DANFE', 'SerializacaoXML', 'Validacao', - ... 'assinatura', 'comunicacao', 'danfe', 'serializacao', 'validacao']) + ... 'AssinaturaA1', 'ComunicacaoSefaz', 'DANFE', 'SerializacaoXML', 'Validacao', + ... 'assinatura', 'comunicacao', 'danfe', 'serializacao', 'validacao']) True - + Ha ainda uma pasta dentro da pasta 'pynfe', chamada 'data', que deve armazenar listas longas de municipios, CNAEs, situacoes tributarias, XSD's, etc. - + >>> import os >>> DATA = os.path.join(os.curdir, 'pynfe', 'data') >>> DATA './pynfe/data' - + >>> os.path.isdir(DATA) True - + Geracao e importacao de XML --------------------------- - + As objetos Python devem ser traduzidos para arquivos XML e o caminho inverso, de introspecao, tambem deve ser feito, atraves de uma fabrica. - + >>> from pynfe.processamento.serializacao import Serializacao - + >>> bool(Serializacao.exportar) True - + >>> bool(Serializacao.importar) True - + A classe basica de Serializacao eh abstrata, ou seja, nao pode ser instanciada diretamente. - + >>> lista_de_nfs = [] - + >>> try: - ... Serializacao(lista_de_nfs) + ... Serializacao(lista_de_nfs) ... except Exception, e: - ... print e.message + ... print e.message Esta classe nao pode ser instanciada diretamente! - + Classe de serializacao especifica para XML, usando lxml - + >>> from pynfe.processamento.serializacao import SerializacaoXML - + Esse procedimento sera feito por padrao atraves da lxml, devido ao seu desempenho, mas pode ser extendido para outros formatos, dependendo do objetivo pretendido. - + >>> try: ... from lxml import etree ... except ImportError: @@ -148,7 +148,7 @@ objetivo pretendido. ... import xml.etree.cElementTree as etree ... except ImportError: ... try: - ... # Python 2.5 + ... # Python 2.5 ... import xml.etree.ElementTree as etree ... except ImportError: ... try: @@ -160,45 +160,45 @@ objetivo pretendido. ... import elementtree.ElementTree as etree ... except ImportError: ... print("A importacao do lxml falhou") - + Consumacao de WebService ------------------------ - + O webservice a ser consumido esta no padrao SOAP, que no Python sera interpretado pela biblioteca SUDS. - + >>> import suds - + Para executar estes testes é preciso instalar a soaplib, para servir WSDL via SOAP, num servidor falso (mock). - + >>> import soaplib - + Certificados Digitais --------------------- - + A biblioteca deve suportar certificados digitais X.509 v.3 do tipo A1. O tipo A3 é certificado por hardware e provavelmente bem mais complexo de colocar em prática. - + eCNPJ A1 - + A3 depende de configurar seu numero de serie. No Windows usa-se a DLL CAPICOM. Ao que tudo indica, o OpenSSL nao suporta esse tipo. - + A transmissao utiliza SSL3. - + No Windows o arquivo é usado como .pfx (pkcs12) - + No Linux o arquivo deve ser convertido para .pem - + Impressao do DANFE ------------------ - + Alem disso, deve gerar PDFs da DANFE, utilizando a engine Geraldo Reports. - + >>> import geraldo >>> import PIL >>> from pynfe.utils import bar_code_128