package br.com.caelum.stella.gateway.integration;
import java.math.BigDecimal;
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.amex.AmexAutorizacaoReturn;
import br.com.caelum.stella.gateway.amex.AmexTipoCartao;
import br.com.caelum.stella.gateway.amex.AmexVerificaRetornoAutorizacao;
import br.com.caelum.stella.gateway.core.ProblematicTransactionException;
public class AmexTestRetornoIntegracao {
@Test
public void testRetornoValido(){
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery.mock(HttpServletRequest.class);
mockery.checking(new Expectations(){
{
one(request).getParameter("vpc_TxnResponseCode");will(returnValue("0"));
one(request).getParameter("vpc_Message");will(returnValue("Sucesso"));
one(request).getParameter("vpc_SecureHash");will(returnValue("123456789012345"));
one(request).getParameter("vpc_Merchant");will(returnValue("123456"));
one(request).getParameter("vpc_Command");will(returnValue("command"));
one(request).getParameter("vpc_MerchTxnRef");will(returnValue("123456"));
one(request).getParameter("vpc_OrderInfo");will(returnValue("123456"));
one(request).getParameter("vpc_Amount");will(returnValue("1000"));
one(request).getParameter("vpc_Card");will(returnValue("AE"));
one(request).getParameter("vpc_AcqResponseCode");will(returnValue("00"));
one(request).getParameter("vpc_TransactionNo");will(returnValue("2345678787987980890"));
one(request).getParameter("vpc_BatchNo");will(returnValue("20060115"));
one(request).getParameter("vpc_ReceiptNo");will(returnValue("RP12345"));
one(request).getParameter("vpc_AuthorizeId");will(returnValue("2345678787987980890"));
}
});
AmexAutorizacaoReturn amexAutorizacaoReturn = new AmexVerificaRetornoAutorizacao(request).handle();
Assert.assertEquals(BigDecimal.TEN.setScale(2),amexAutorizacaoReturn.getVpc_Amount());
Assert.assertEquals(AmexTipoCartao.AMERICA_EXPRESS,amexAutorizacaoReturn.getVpc_Card());
}
@Test(expected=ProblematicTransactionException.class)
public void testRetornoInValido(){
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery.mock(HttpServletRequest.class);
mockery.checking(new Expectations(){
{
one(request).getParameter("vpc_TxnResponseCode");will(returnValue("1"));
one(request).getParameter("vpc_Message");will(returnValue("Erro"));
one(request).getParameter("vpc_SecureHash");will(returnValue("123456789012345"));
one(request).getParameter("vpc_Merchant");will(returnValue("123456"));
one(request).getParameter("vpc_Command");will(returnValue("command"));
one(request).getParameter("vpc_MerchTxnRef");will(returnValue("123456"));
one(request).getParameter("vpc_OrderInfo");will(returnValue("123456"));
one(request).getParameter("vpc_Amount");will(returnValue("1000"));
one(request).getParameter("vpc_Card");will(returnValue("AE"));
one(request).getParameter("vpc_AcqResponseCode");will(returnValue("00"));
one(request).getParameter("vpc_TransactionNo");will(returnValue("2345678787987980890"));
one(request).getParameter("vpc_BatchNo");will(returnValue("20060115"));
one(request).getParameter("vpc_ReceiptNo");will(returnValue("RP12345"));
one(request).getParameter("vpc_AuthorizeId");will(returnValue("2345678787987980890"));
}
});
AmexAutorizacaoReturn amexAutorizacaoReturn = new AmexVerificaRetornoAutorizacao(request).handle();
}
}