package br.com.caelum.stella.gateway.integration;
import javax.servlet.http.HttpServletRequest;
import junit.framework.Assert;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Test;
import br.com.caelum.stella.gateway.core.ProblematicTransactionException;
import br.com.caelum.stella.gateway.redecard.RedecardAutorizacaoReturn;
import br.com.caelum.stella.gateway.redecard.RedecardConfirmacaoSemDadosException;
import br.com.caelum.stella.gateway.redecard.RedecardConfirmacaoTransacaoReturn;
import br.com.caelum.stella.gateway.redecard.RedecardIdiomaOperacao;
import br.com.caelum.stella.gateway.redecard.RedecardVerificaRetornoAutorizacao;
import br.com.caelum.stella.gateway.redecard.RedecardVerificadorRetornoConfirmacaoTransacao;
public class RedecardTestRetornoIntegracao {
@Test
public void testVerificaRetornoValidoDaTransacao() {
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery
.mock(HttpServletRequest.class);
mockery.checking(new Expectations() {
{
one(request).getParameter("DATA");
will(returnValue("20090320"));
one(request).getParameter("NUMPEDIDO");
will(returnValue("123456"));
one(request).getParameter("NR_CARTAO");
will(returnValue("1234567890123456"));
one(request).getParameter("ORIGEM_BIN");
will(returnValue("BRA"));
one(request).getParameter("NUMAUTOR");
will(returnValue("123456"));
one(request).getParameter("NUMCV");
will(returnValue("123456789"));
one(request).getParameter("NUMAUTENT");
will(returnValue("463294639534953535657687"));
one(request).getParameter("NUMSQN");
will(returnValue("123456789012"));
one(request).getParameter("CODRET");
will(returnValue(null));
one(request).getParameter("MSGRET");
will(returnValue("TRANSAÇÃO APROVADA"));
}
});
RedecardAutorizacaoReturn autorizacaoReturn = new RedecardVerificaRetornoAutorizacao(
request,RedecardIdiomaOperacao.INGLES).handle();
Assert.assertEquals("20090320", autorizacaoReturn.getDataFormatada());
Assert.assertEquals(autorizacaoReturn.getCodigoRetorno(), 0);
}
@Test
public void testVerificaRetornoInvalidoDaTransacao() {
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery
.mock(HttpServletRequest.class);
mockery.checking(new Expectations() {
{
one(request).getParameter("DATA");
will(returnValue("20090320"));
one(request).getParameter("NUMPEDIDO");
will(returnValue("123456"));
one(request).getParameter("NR_CARTAO");
will(returnValue("1234567890123456"));
one(request).getParameter("ORIGEM_BIN");
will(returnValue("BRA"));
one(request).getParameter("NUMAUTOR");
will(returnValue("123456"));
one(request).getParameter("NUMCV");
will(returnValue("123456789"));
one(request).getParameter("NUMAUTENT");
will(returnValue("463294639534953535657687"));
one(request).getParameter("NUMSQN");
will(returnValue("123456789012"));
one(request).getParameter("CODRET");
will(returnValue("55"));
one(request).getParameter("MSGRET");
will(returnValue("TRANSAÇÃO NÃO APROVADA"));
}
});
try {
new RedecardVerificaRetornoAutorizacao(request,RedecardIdiomaOperacao.INGLES).handle();
} catch (ProblematicTransactionException problematicTransactionException) {
Assert.assertEquals("TRANSAÇÃO NÃO APROVADA",
problematicTransactionException.getMessage());
}
}
@Test
public void testVerificadorDeRetornoDaConfirmacaoDaTransacao() {
String retorno = "CODRET=0&MSGRET=CONFIRMACAO COM SUCESSO";
RedecardConfirmacaoTransacaoReturn confirmacaoTransacaoReturn = new RedecardVerificadorRetornoConfirmacaoTransacao(
retorno).verificaRetorno();
Assert.assertEquals(confirmacaoTransacaoReturn.getCodigoRetorno(), 0);
Assert.assertEquals(confirmacaoTransacaoReturn.getMensagemRetorno(),
"CONFIRMACAO COM SUCESSO");
}
@Test(expected = RedecardConfirmacaoSemDadosException.class)
public void testVerificadorDeRetornoDaConfirmacaoDaTransacaoCasoOsDadosDeRetornoNaoSejamRetornados() {
String retorno = "";
RedecardConfirmacaoTransacaoReturn confirmacaoTransacaoReturn = new RedecardVerificadorRetornoConfirmacaoTransacao(
retorno).verificaRetorno();
Assert.assertEquals(confirmacaoTransacaoReturn.getCodigoRetorno(), 0);
Assert.assertEquals(confirmacaoTransacaoReturn.getMensagemRetorno(),
"CONFIRMACAO COM SUCESSO");
}
}