package br.com.caelum.stella.gateway.integration; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import org.junit.Test; import br.com.caelum.stella.gateway.HtmlViewerHelper; import br.com.caelum.stella.gateway.SeleniumHelper; import br.com.caelum.stella.gateway.amex.AmexCheckout; import br.com.caelum.stella.gateway.amex.AmexDadosAutorizacaoPagamento; import br.com.caelum.stella.gateway.amex.AmexDadosConfiguracao; import br.com.caelum.stella.gateway.amex.AmexFormaPagamento; import br.com.caelum.stella.gateway.amex.AmexLocale; import br.com.caelum.stella.gateway.amex.AmexSolicitaAutorizacaoPagamento; import br.com.caelum.stella.gateway.amex.AmexTipoCartao; import br.com.caelum.stella.gateway.amex.AmexTipoTransacao; /** * Os testes na verdade estão apenas gerando paginas html que quando abertas * fazem comunicação com o Amex. * * @author Alberto Pc * */ public class AmexTestSolicitacaoIntegracao { private static SeleniumHelper seleniumHelper; @Test public void testSolicitarPagamentoAVista() throws IOException { AmexCheckout amexCheckout = new AmexCheckout("12345678", "12345678", BigDecimal.TEN, AmexLocale.EN, new AmexFormaPagamento(0, AmexTipoTransacao.A_VISTA, AmexTipoCartao.AMERICA_EXPRESS)); AmexDadosAutorizacaoPagamento amexDadosAutorizacaoPagamento = new AmexSolicitaAutorizacaoPagamento( amexCheckout).handle(); Map<String, Object> fields = gerarInputs(amexDadosAutorizacaoPagamento); new HtmlViewerHelper().body("").form( new AmexDadosConfiguracao().getUrlComponenteAutorizacao(), "get", "pagamento").createInputsHidden(fields) .criarPaginaTemporariaNoDisco( new File("").getAbsolutePath() + File.separator + "/post_dados_amex.html"); } @Test public void testSolicitarPagamentoParcelado() throws IOException { AmexCheckout amexCheckout = new AmexCheckout("12345678", "12345678", BigDecimal.TEN, AmexLocale.EN, AmexFormaPagamento .newPagamentoParceladoJurosLojista(2, AmexTipoCartao.AMERICA_EXPRESS)); AmexDadosAutorizacaoPagamento amexDadosAutorizacaoPagamento = new AmexSolicitaAutorizacaoPagamento( amexCheckout).handle(); Map<String, Object> fields = gerarInputs(amexDadosAutorizacaoPagamento); new HtmlViewerHelper().body( "onload=document.getElementById('pagamento').submit();").form( new AmexDadosConfiguracao().getUrlComponenteAutorizacao(), "get", "pagamento").createInputsHidden(fields) .criarPaginaTemporariaNoDisco( new File("").getAbsolutePath() + File.separator + "/post_dados_amex_parcelado.html"); } private Map<String, Object> gerarInputs( AmexDadosAutorizacaoPagamento amexDadosAutorizacaoPagamento) { Map<String, Object> fields = new HashMap<String, Object>(); fields.put("vpc_Version", amexDadosAutorizacaoPagamento .getVpc_Version()); fields.put("vpc_Merchant", amexDadosAutorizacaoPagamento .getVpc_Merchant()); fields.put("vpc_OrderInfo", amexDadosAutorizacaoPagamento .getVpc_OrderInfo()); fields.put("vpc_OrderInfo", amexDadosAutorizacaoPagamento .getVpc_OrderInfo()); fields.put("vpc_Amount", amexDadosAutorizacaoPagamento .getVpc_AmountFormatado()); fields.put("vpc_ReturnURL", amexDadosAutorizacaoPagamento .getVpc_ReturnUrl()); fields.put("vpc_Card", amexDadosAutorizacaoPagamento .getFormaPagamento().getTipoCartao()); fields.put("vpc_Command", amexDadosAutorizacaoPagamento .getVpc_Command()); fields.put("vpc_AccessCode", amexDadosAutorizacaoPagamento .getVpc_AcessCode()); fields.put("vpc_Locale", amexDadosAutorizacaoPagamento.getVpc_Locale()); fields.put("vpc_MerchTxnRef", amexDadosAutorizacaoPagamento .getVpc_MerchTxnRef()); fields.put("vpc_PaymentPlan", amexDadosAutorizacaoPagamento .getFormaPagamento().getTipoTransacao()); fields.put("vpc_NumPayments", amexDadosAutorizacaoPagamento .getFormaPagamento().getNumeroDeParcelasFormatado()); return fields; } }