# coding=utf-8 import mock import os.path import unittest from pytrustnfe.certificado import Certificado from pytrustnfe.nfse.betha import envio_lote_rps from pytrustnfe.nfse.betha import cancelar_nfse class test_nfse_betha(unittest.TestCase): caminho = os.path.dirname(__file__) def _get_nfse(self): rps = [ { 'assinatura': '123', 'serie': '1', 'numero': '1', 'data_emissao': '2016-08-29', 'codigo_atividade': '07498', 'total_servicos': '2.00', 'total_deducoes': '3.00', 'prestador': { 'inscricao_municipal': '123456' }, 'tomador': { 'tipo_cpfcnpj': '1', 'cpf_cnpj': '12345678923256', 'inscricao_municipal': '123456', 'razao_social': 'Trustcode', 'tipo_logradouro': '1', 'logradouro': 'Vinicius de Moraes, 42', 'numero': '42', 'bairro': 'Corrego', 'cidade': 'Floripa', 'uf': 'SC', 'cep': '88037240', }, 'codigo_atividade': '07498', 'aliquota_atividade': '5.00', 'descricao': 'Venda de servico' } ] nfse = { 'cpf_cnpj': '12345678901234', 'data_inicio': '2016-08-29', 'data_fim': '2016-08-29', 'lista_rps': rps, 'ambiente': 'homologacao', } return nfse def test_envio_nfse_lote(self): pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read() pfx = Certificado(pfx_source, '123456') nfse = self._get_nfse() retorno = envio_lote_rps(pfx, nfse=nfse, ambiente='homologacao') self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) self.assertEqual( retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe, 446) self.assertEqual( retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS, 6) def _get_cancelamento(self): return { 'cnpj_remetente': '123', 'assinatura': 'assinatura', 'numero_nfse': '456', 'inscricao_municipal': '654', 'codigo_verificacao': '789', 'ambiente': 'homologacao', } def test_cancelamento_nfse_ok(self): pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read() pfx = Certificado(pfx_source, '123456') cancelamento = self._get_cancelamento() path = os.path.join(os.path.dirname(__file__), 'XMLs') xml_return = open(os.path.join( path, 'paulistana_canc_ok.xml'), 'r').read() with mock.patch('pytrustnfe.nfse.betha.get_authenticated_client') as client: retorno = mock.MagicMock() client.return_value = retorno retorno.service.CancelarNfse.return_value = xml_return retorno = cancelar_nfse(pfx, cancelamento=cancelamento, ambiente='homologacao') self.assertEqual(retorno['received_xml'], xml_return) self.assertEqual(retorno['object'].Cabecalho.Sucesso, True) def test_cancelamento_nfse_com_erro(self): pfx_source = open(os.path.join(self.caminho, 'teste.pfx'), 'r').read() pfx = Certificado(pfx_source, '123456') cancelamento = self._get_cancelamento() path = os.path.join(os.path.dirname(__file__), 'XMLs') xml_return = open(os.path.join( path, 'paulistana_canc_errado.xml'), 'r').read() with mock.patch('pytrustnfe.nfse.betha.get_authenticated_client') as client: retorno = mock.MagicMock() client.return_value = retorno retorno.service.CancelarNfse.return_value = xml_return retorno = cancelar_nfse(pfx, cancelamento=cancelamento, ambiente='homologacao') self.assertEqual(retorno['received_xml'], xml_return) self.assertEqual(retorno['object'].Cabecalho.Sucesso, False) self.assertEqual( retorno['object'].Erro.ChaveNFe.NumeroNFe, 446)