Browse Source

corrigi a identacao. Alguns testes estavam falhando aqui por conta disto

tags/0.1
Italo Maia 16 years ago
parent
commit
58006e0390
  1. 196
      tests/01-basico.txt

196
tests/01-basico.txt

@ -1,145 +1,145 @@
TESTES BASICOS TESTES BASICOS
============== ==============
>>> try: >>> try:
... set
... set
... except: ... except:
... from sets import Set as set
... from sets import Set as set
<type 'set'> <type 'set'>
A biblioteca deve fornecer uma colecao de utilitarios para consumir A biblioteca deve fornecer uma colecao de utilitarios para consumir
o webservice da NF-e. o webservice da NF-e.
Componentes Componentes
----------- -----------
A separacao entre os componentes da biblioteca deve seguir o seguinte A separacao entre os componentes da biblioteca deve seguir o seguinte
modelo: 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: 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) biblioteca, incluindo flags e funcoes genericas)
>>> from pynfe import utils >>> from pynfe import utils
>>> set([attr for attr in dir(utils) if not attr.startswith('__')]) >= set(['flags']) >>> set([attr for attr in dir(utils) if not attr.startswith('__')]) >= set(['flags'])
True True
- entidades (contem todas as entidades da biblioteca) - entidades (contem todas as entidades da biblioteca)
>>> from pynfe import entidades >>> from pynfe import entidades
>>> set([attr for attr in dir(entidades) if not attr.startswith('__')]) == set([ >>> 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 True
- processamento (contem todas as funcionalidades de processamento da - processamento (contem todas as funcionalidades de processamento da
biblioteca biblioteca
>>> from pynfe import processamento >>> from pynfe import processamento
>>> set([attr for attr in dir(processamento) if not attr.startswith('__')]) == set([ >>> 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 True
Ha ainda uma pasta dentro da pasta 'pynfe', chamada 'data', que deve Ha ainda uma pasta dentro da pasta 'pynfe', chamada 'data', que deve
armazenar listas longas de municipios, CNAEs, situacoes tributarias, armazenar listas longas de municipios, CNAEs, situacoes tributarias,
XSD's, etc. XSD's, etc.
>>> import os >>> import os
>>> DATA = os.path.join(os.curdir, 'pynfe', 'data') >>> DATA = os.path.join(os.curdir, 'pynfe', 'data')
>>> DATA >>> DATA
'./pynfe/data' './pynfe/data'
>>> os.path.isdir(DATA) >>> os.path.isdir(DATA)
True True
Geracao e importacao de XML Geracao e importacao de XML
--------------------------- ---------------------------
As objetos Python devem ser traduzidos para arquivos XML e o caminho As objetos Python devem ser traduzidos para arquivos XML e o caminho
inverso, de introspecao, tambem deve ser feito, atraves de uma fabrica. inverso, de introspecao, tambem deve ser feito, atraves de uma fabrica.
>>> from pynfe.processamento.serializacao import Serializacao >>> from pynfe.processamento.serializacao import Serializacao
>>> bool(Serializacao.exportar) >>> bool(Serializacao.exportar)
True True
>>> bool(Serializacao.importar) >>> bool(Serializacao.importar)
True True
A classe basica de Serializacao eh abstrata, ou seja, nao pode ser A classe basica de Serializacao eh abstrata, ou seja, nao pode ser
instanciada diretamente. instanciada diretamente.
>>> lista_de_nfs = [] >>> lista_de_nfs = []
>>> try: >>> try:
... Serializacao(lista_de_nfs)
... Serializacao(lista_de_nfs)
... except Exception, e: ... except Exception, e:
... print e.message
... print e.message
Esta classe nao pode ser instanciada diretamente! Esta classe nao pode ser instanciada diretamente!
Classe de serializacao especifica para XML, usando lxml Classe de serializacao especifica para XML, usando lxml
>>> from pynfe.processamento.serializacao import SerializacaoXML >>> from pynfe.processamento.serializacao import SerializacaoXML
Esse procedimento sera feito por padrao atraves da lxml, devido ao seu Esse procedimento sera feito por padrao atraves da lxml, devido ao seu
desempenho, mas pode ser extendido para outros formatos, dependendo do desempenho, mas pode ser extendido para outros formatos, dependendo do
objetivo pretendido. objetivo pretendido.
>>> try: >>> try:
... from lxml import etree ... from lxml import etree
... except ImportError: ... except ImportError:
@ -148,7 +148,7 @@ objetivo pretendido.
... import xml.etree.cElementTree as etree ... import xml.etree.cElementTree as etree
... except ImportError: ... except ImportError:
... try: ... try:
... # Python 2.5
... # Python 2.5
... import xml.etree.ElementTree as etree ... import xml.etree.ElementTree as etree
... except ImportError: ... except ImportError:
... try: ... try:
@ -160,45 +160,45 @@ objetivo pretendido.
... import elementtree.ElementTree as etree ... import elementtree.ElementTree as etree
... except ImportError: ... except ImportError:
... print("A importacao do lxml falhou") ... print("A importacao do lxml falhou")
Consumacao de WebService Consumacao de WebService
------------------------ ------------------------
O webservice a ser consumido esta no padrao SOAP, que no Python sera O webservice a ser consumido esta no padrao SOAP, que no Python sera
interpretado pela biblioteca SUDS. interpretado pela biblioteca SUDS.
>>> import suds >>> import suds
Para executar estes testes é preciso instalar a soaplib, para servir Para executar estes testes é preciso instalar a soaplib, para servir
WSDL via SOAP, num servidor falso (mock). WSDL via SOAP, num servidor falso (mock).
>>> import soaplib >>> import soaplib
Certificados Digitais Certificados Digitais
--------------------- ---------------------
A biblioteca deve suportar certificados digitais X.509 v.3 do tipo A biblioteca deve suportar certificados digitais X.509 v.3 do tipo
A1. O tipo A3 é certificado por hardware e provavelmente bem mais A1. O tipo A3 é certificado por hardware e provavelmente bem mais
complexo de colocar em prática. complexo de colocar em prática.
eCNPJ A1 eCNPJ A1
A3 depende de configurar seu numero de serie. No Windows A3 depende de configurar seu numero de serie. No Windows
usa-se a DLL CAPICOM. Ao que tudo indica, o OpenSSL nao suporta esse usa-se a DLL CAPICOM. Ao que tudo indica, o OpenSSL nao suporta esse
tipo. tipo.
A transmissao utiliza SSL3. A transmissao utiliza SSL3.
No Windows o arquivo é usado como .pfx (pkcs12) No Windows o arquivo é usado como .pfx (pkcs12)
No Linux o arquivo deve ser convertido para .pem No Linux o arquivo deve ser convertido para .pem
Impressao do DANFE Impressao do DANFE
------------------ ------------------
Alem disso, deve gerar PDFs da DANFE, utilizando a engine Geraldo Alem disso, deve gerar PDFs da DANFE, utilizando a engine Geraldo
Reports. Reports.
>>> import geraldo >>> import geraldo
>>> import PIL >>> import PIL
>>> from pynfe.utils import bar_code_128 >>> from pynfe.utils import bar_code_128

Loading…
Cancel
Save