package br.com.caelum.stella.gateway.integration;
import java.io.File;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import org.junit.BeforeClass;
import org.junit.Test;
import br.com.caelum.stella.gateway.HtmlViewerHelper;
import br.com.caelum.stella.gateway.visa.TIDGenerator;
import br.com.caelum.stella.gateway.visa.VISACheckout;
import br.com.caelum.stella.gateway.visa.VISADadosAutorizacao;
import br.com.caelum.stella.gateway.visa.VISADadosConferencia;
import br.com.caelum.stella.gateway.visa.VISADadosConfiguracao;
import br.com.caelum.stella.gateway.visa.VISAFormaPagamento;
import br.com.caelum.stella.gateway.visa.VISASolicitaAutorizacaoPagamentoViaHttp;
import br.com.caelum.stella.gateway.visa.VISASolicitacaoConferenciaViaHttp;
import br.com.caelum.stella.gateway.visa.VISATipoSolicitacaoIntegracao;
import br.com.caelum.stella.gateway.visa.VISATipoTransacao;
public class VISATestSolicitacaoDeIntegracao {
/*
* Precisa configurar um ambiente correto para testar isso aqui
*/
private static VISACheckout checkout;
private static VISADadosConfiguracao dadosConfiguracao = new VISADadosConfiguracao();
private static final long NUMERO_FILIACAO_TESTE = 1001734898;
private static String tid;
@BeforeClass
public static void before() {
Calendar dataQueExpira = Calendar.getInstance();
dataQueExpira.set(Calendar.MONTH, Calendar.DECEMBER + 1);
dataQueExpira.set(Calendar.YEAR, 2010);
checkout = new VISACheckout("123456",
"Alberto Souza, Av Juracy Magalhaes,Salvador,Bahia,Brasil",
"Testando checkout", BigDecimal.ONE, new VISAFormaPagamento(
VISATipoTransacao.CREDITO_A_VISTA, 1));
tid = new TIDGenerator().getTid(checkout.getFormaPagamento(), Calendar
.getInstance(), NUMERO_FILIACAO_TESTE);
}
private void gerarPaginaDeTeste(String nomePagina,VISATipoSolicitacaoIntegracao tipoSolicitacaoIntegracao) {
Map<String, Object> fields = new HashMap<String, Object>();
fields.put("tid", tid);
fields.put("merchid", NUMERO_FILIACAO_TESTE + "");
gerarPaginaDeTeste(nomePagina, tipoSolicitacaoIntegracao,fields);
}
private void gerarPaginaDeTeste(String nomePagina,VISATipoSolicitacaoIntegracao tipoSolicitacaoIntegracao,Map<String,Object> fields) {
new HtmlViewerHelper().body("onload=document.getElementById('pagamento').submit()").form(
tipoSolicitacaoIntegracao.getUrlComponente(),
"get", "pagamento").createInputsHidden(fields)
.criarPaginaTemporariaNoDisco(
new File("").getAbsolutePath() + File.separator + "/"
+ nomePagina);
}
@Test
public void testSolicitacaoDeAutorizacaoDePagamento() {
VISADadosAutorizacao dadosAutorizacao = new VISASolicitaAutorizacaoPagamentoViaHttp(
checkout, dadosConfiguracao).handle();
Map<String,Object> fields = new HashMap<String, Object>();
fields.put("tid",tid);
fields.put("order",dadosAutorizacao.getOrder());
fields.put("orderid",dadosAutorizacao.getOrderId());
fields.put("free",dadosAutorizacao.getFree());
fields.put("merchid",dadosConfiguracao.getNomeArquivoConfiguracao());
fields.put("price",dadosAutorizacao.getValorFormatado());
gerarPaginaDeTeste("post_visa_autorizacao.html",VISATipoSolicitacaoIntegracao.AUTORIZACAO,fields);
}
@Test
public void testSolicitacaoDeCaptura() {
VISADadosConferencia dados = new VISASolicitacaoConferenciaViaHttp(tid,
VISATipoSolicitacaoIntegracao.CAPTURA).handle();
gerarPaginaDeTeste("post_visa_captura.html",VISATipoSolicitacaoIntegracao.CAPTURA);
}
@Test
public void testSolicitacaoDeCancelamento() {
VISADadosConferencia dados = new VISASolicitacaoConferenciaViaHttp(tid,
VISATipoSolicitacaoIntegracao.CANCELAMENTO).handle();
gerarPaginaDeTeste("post_visa_cancelamento.html",VISATipoSolicitacaoIntegracao.CANCELAMENTO);
}
@Test
public void testSolicitacaoDeConsulta() {
VISADadosConferencia dados = new VISASolicitacaoConferenciaViaHttp(tid,
VISATipoSolicitacaoIntegracao.CONSULTA).handle();
gerarPaginaDeTeste("post_visa_consulta.html",VISATipoSolicitacaoIntegracao.CONSULTA);
}
}