def test_deve_montar_conexao(self, obter_mock): obter_mock.return_value = 'conexao' entregador = servicos.EntregaPagamento(1234) entregador.conexao.should.be.equal('conexao') obter_mock.assert_called_with( formato_envio='application/x-www-form-urlencoded', formato_resposta='application/x-www-form-urlencoded')
def test_deve_definir_credenciais(self, credenciador_mock): entregador = servicos.EntregaPagamento(1234) credenciador_mock.return_value = 'credenciador' entregador.configuracao = 'configuracao' entregador.define_credenciais() entregador.conexao.credenciador.should.be.equal('credenciador') credenciador_mock.assert_called_with(configuracao='configuracao')
def test_deve_processar_dados_de_pagamento(self): entregador = servicos.EntregaPagamento(1234) entregador._processa_resposta = mock.MagicMock() entregador._processa_resposta.return_value = 'resposta-processada' entregador.processa_dados_pagamento() entregador._processa_resposta.assert_called_with() entregador.resultado.should.be.equal('resposta-processada')
def test_deve_usar_post_ao_enviar_pagamento(self): entregador = servicos.EntregaPagamento(1234) entregador.malote = mock.MagicMock() entregador.malote.to_dict.return_value = 'malote-como-dicionario' entregador.conexao = mock.MagicMock() entregador.envia_pagamento() entregador.conexao.post.assert_called_with(entregador.url, 'malote-como-dicionario')
def test_deve_enviar_pagamento(self): entregador = servicos.EntregaPagamento(1234) entregador.malote = mock.MagicMock() entregador.malote.to_dict.return_value = 'malote-como-dicionario' entregador.conexao = mock.MagicMock() entregador.conexao.post.return_value = 'resposta' entregador.envia_pagamento() entregador.dados_enviados.should.be.equal('malote-como-dicionario') entregador.resposta.should.be.equal('resposta')
def test_deve_disparar_erro_se_resposta_vier_com_status_nao_conhecido( self): entregador = servicos.EntregaPagamento(1234) entregador.pedido = mock.MagicMock(numero=123) entregador.malote = mock.MagicMock() entregador.malote.to_dict.return_value = 'malote' entregador.resposta = mock.MagicMock(conteudo={'erro': 'zas'}, status_code=666, sucesso=False, erro_servidor=False, timeout=False, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento.when.called_with().should.throw( entregador.EnvioNaoRealizado)
def test_deve_processar_resposta_timeout(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={}, status_code=408, sucesso=False, erro_servidor=False, timeout=True, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'mensagem': u'O servidor do PayPal não respondeu em tempo útil.', 'status_code': 408, 'pago': False, 'fatal': False })
def test_deve_processar_resposta_nao_autorizado(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={}, status_code=400, sucesso=False, erro_servidor=False, timeout=False, nao_autenticado=False, nao_autorizado=True) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'mensagem': u'Autenticação da loja com o PayPal Falhou. Contate o SAC da loja.', 'status_code': 400, 'pago': False, 'fatal': False })
def test_deve_processar_resposta_erro(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={}, status_code=500, sucesso=False, erro_servidor=True, timeout=False, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'mensagem': u'O servidor do PayPal está indisponível nesse momento.', 'status_code': 500, 'pago': False, 'fatal': False })
def test_deve_processar_resposta_sucesso(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={ 'ack': 'success', 'token': 'TOKEN' }, status_code=200, sucesso=True, erro_servidor=False, timeout=False, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'url': 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN', 'pago': False, 'fatal': False })
def test_deve_processar_resposta_se_sucesso_com_ack_falha_erro_qq(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={ 'ack': 'failure', 'l_shortmessage0': 'outra-coisa', 'l_longmessage0': 'message-zas' }, status_code=401, sucesso=True, erro_servidor=False, timeout=False, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'mensagem': u'O PayPal retornou a seguinte mensagem de erro: message-zas', 'status_code': 401, 'pago': False, 'fatal': False })
def test_deve_processar_resposta_se_sucesso_com_ack_falha_de_autenticacao( self): entregador = servicos.EntregaPagamento(1234) entregador.resposta = mock.MagicMock(conteudo={ 'ack': 'failure', 'l_shortmessage0': 'authentication/authorization failed' }, status_code=401, sucesso=True, erro_servidor=False, timeout=False, nao_autenticado=False, nao_autorizado=False) entregador.processa_dados_pagamento() entregador.resultado.should.be.equal({ 'mensagem': u'Autenticação da loja com o PayPal Falhou. Contate o SAC da loja.', 'status_code': 401, 'pago': False, 'fatal': True })
def test_deve_definir_url_sem_sandbox(self): entregador = servicos.EntregaPagamento(1234) entregador.url.should.be.equal('https://api-3t.paypal.com/nvp')
def test_deve_definir_resposta(self): entregador = servicos.EntregaPagamento(1234) entregador.resposta.should.be.none
def test_deve_dizer_que_faz_http(self): entregador = servicos.EntregaPagamento(1234) entregador.faz_http.should.be.truthy
def test_deve_dizer_que_tem_malote(self): entregador = servicos.EntregaPagamento(1234) entregador.tem_malote.should.be.truthy