/********************************************************************** * $Source: /cvsroot/hibiscus/hbci4java/test/hbci4java/ddv/PCSCTest.java,v $ * $Revision: 1.1 $ * $Date: 2011/11/24 21:59:37 $ * $Author: willuhn $ * * Copyright (c) by willuhn - software & services * All rights reserved * **********************************************************************/ package hbci4java.sepa; import hbci4java.AbstractTest; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import org.junit.Assert; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.kapott.hbci.GV.HBCIJob; import org.kapott.hbci.GV_Result.HBCIJobResult; import org.kapott.hbci.callback.HBCICallback; import org.kapott.hbci.callback.HBCICallbackConsole; import org.kapott.hbci.manager.HBCIHandler; import org.kapott.hbci.manager.HBCIUtils; import org.kapott.hbci.passport.AbstractHBCIPassport; import org.kapott.hbci.passport.HBCIPassport; import org.kapott.hbci.passport.HBCIPassportPinTan; import org.kapott.hbci.status.HBCIExecStatus; import org.kapott.hbci.structures.Value; /** * Testet das Erstellen von SEPA-Basis-�berweisung * * Erforderliche Angaben f�r das Nachrichtenformat pain.001 (SEPA-�berweisung) Folgende Angaben sind f�r das Nachrichtenformat f�r SEPA-�berweisungen (pain.001) erforderlich: - Name des Zahlungspflichtigen (<Dbtr><Nm>) - IBAN des Zahlungskontos des Zahlungspflichtigen (<DbtrAcct>) - BIC des Kreditinstituts des Zahlungspflichtigen (<DbtrAgt>) - �berweisungsbetrag in Euro (<InstdAmt>) - Angaben zum Verwendungszweck (<RmtInf>) - Name des Zahlungsempf�ngers (<Cdtr><Nm>) - IBAN des Zahlungskontos des Zahlungsempf�ngers (<CdtrAcct>) - BIC des Kreditinstituts des Zahlungsempf�ngers (<CdtrAgt>) - Gegebenenfalls Identifikationscode des Zahlungsempf�ngers (<Cdtr><Id>) - Gegebenenfalls Name der Referenzpartei des Zahlungsempf�ngers(<UltmtCdtr>) - Gegebenenfalls Zweck der �berweisung (<Purp>) */ public class TestGVUebSEPA extends AbstractTest { private final static int LOGLEVEL = HBCIUtils.LOG_INFO; private final static Map<Integer,String> settings = new HashMap<Integer,String>() {{ //TODO: Ein bisschen Geld auf folgendes Konto �berweisen ;) put(HBCICallback.NEED_COUNTRY, "DE"); put(HBCICallback.NEED_BLZ, "12030000"); put(HBCICallback.NEED_CUSTOMERID, "1007318833"); put(HBCICallback.NEED_FILTER, "Base64"); put(HBCICallback.NEED_HOST, "hbci-pintan-by.s-hbci.de/PinTanServlet"); put(HBCICallback.NEED_PASSPHRASE_LOAD, "test"); put(HBCICallback.NEED_PASSPHRASE_SAVE, "test"); put(HBCICallback.NEED_PORT, "443"); put(HBCICallback.NEED_USERID, "1007318833"); put(HBCICallback.NEED_CONNECTION, ""); // ignorieren put(HBCICallback.CLOSE_CONNECTION, ""); // ignorieren }}; private static File dir = null; private HBCIPassportPinTan passport = null; private HBCIHandler handler = null; /** * Testet das Erstellen einer SEPA-Basis-Lastschrift. * @throws Exception */ @Test public void test001() throws Exception { System.out.println("---------Erstelle Job"); HBCIJob job = handler.newJob("UebSEPA"); // //Mal schauen welche Konten ich habe // int i = 0; // for(Konto konto : passport.getAccounts()){ // System.out.println("Konto " + i +": " + konto); // i++; // } job.setParam("src",passport.getAccounts()[2]); job.setParam("dst",passport.getAccounts()[0]); job.setParam("btg",new Value(100L,"EUR")); job.setParam("usage","Hello SEPA Ueberweisung"); System.out.println("---------F�r Job zur Queue"); job.addToQueue(); HBCIExecStatus ret = handler.execute(); HBCIJobResult res = job.getJobResult(); System.out.println("----------Result: "+res.toString()); Assert.assertEquals("Job Result ist nicht OK!", true, res.isOK()); // SEG seg = job.createJobSegment(0); // seg.validate(); // String msg = seg.toString(0); // Assert.assertEquals("HKUEB:0:5+0001956434:EUR:280:30060601+0001956434:EUR:280:30060601+TEST++0,01:EUR+51++TEST'",msg); } /** * Erzeugt das Passport-Objekt. * @throws Exception */ @Before public void beforeTest() throws Exception { Properties props = new Properties(); props.put("log.loglevel.default",Integer.toString(LOGLEVEL)); props.put("infoPoint.enabled",Boolean.FALSE.toString()); props.put("client.passport.PinTan.filename",dir.getAbsolutePath() + File.separator + System.currentTimeMillis() + ".pt"); props.put("client.passport.PinTan.init","1"); props.put("client.passport.PinTan.checkcert","0"); // Check der SSL-Zertifikate abschalten - brauchen wir nicht fuer den Test // falls noetig props.put("client.passport.PinTan.proxy",""); // host:port props.put("client.passport.PinTan.proxyuser",""); props.put("client.passport.PinTan.proxypass",""); HBCICallback callback = new HBCICallbackConsole() { public void callback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData) { // haben wir einen vordefinierten Wert? String value = settings.get(reason); if (value != null) { retData.replace(0,retData.length(),value); return; } // Ne, dann an Super-Klasse delegieren super.callback(passport, reason, msg, datatype, retData); } }; HBCIUtils.init(props,callback); this.passport = (HBCIPassportPinTan) AbstractHBCIPassport.getInstance("PinTan"); // init handler this.handler = new HBCIHandler("plus",passport); // dump bpd // this.dump("BPD",this.passport.getBPD()); //Liste der unterstuetzten Geschaeftsvorfaelle ausgeben // this.dump("Supported GV",this.handler.getSupportedLowlevelJobs()); } /** * Schliesst das Passport-Objekt und loescht die Passport-Datei. * @throws Exception */ @After public void afterTest() throws Exception { try { if (this.passport != null) this.passport.close(); File file = new File(this.passport.getFileName()); if (!file.delete()) throw new Exception("unable to delete " + file); } finally { try { if (this.handler != null) this.handler.close(); } finally { HBCIUtils.done(); } } } /** * Erzeugt das Passport-Verzeichnis. * @throws Exception */ @BeforeClass public static void beforeClass() throws Exception { String tmpDir = System.getProperty("java.io.tmpdir","/tmp"); dir = new File(tmpDir,"hbci4java-junit-" + System.currentTimeMillis()); dir.mkdirs(); } /** * Loescht das Passport-Verzeichnis. * @throws Exception */ @AfterClass public static void afterClass() throws Exception { if (!dir.delete()) throw new Exception("unable to delete " + dir); } private void dump(String name, Properties props) { System.out.println("--- BEGIN: " + name + " -----"); Iterator keys = props.keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); System.out.println(key + ": " + props.get(key)); } System.out.println("--- END: " + name + " -----"); } }