@Test
  public void test() {
    System.out.println("---------Erstelle Job");
    HBCIJob job = handler.newJob("DauerSEPAList");

    int source_acc_idx = Integer.parseInt(params.getProperty("source_account_idx"));
    job.setParam("src", passport.getAccounts()[source_acc_idx]);

    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());
  }
Esempio n. 2
0
  /**
   * Uebernimmt die Challenge-Parameter in den HKTAN-Geschaeftsvorfall.
   *
   * @param task der Job, zu dem die Challenge-Parameter ermittelt werden sollen.
   * @param hktan der HKTAN-Geschaeftsvorfall, in dem die Parameter gesetzt werden sollen.
   * @param secmech die BPD-Informationen zum TAN-Verfahren.
   */
  public void applyParams(HBCIJobImpl task, HBCIJob hktan, Properties secmech) {
    String code = task.getHBCICode(); // Code des Geschaeftsvorfalls

    // Job-Parameter holen
    Job job = this.getData(code);

    // Den Geschaeftsvorfall kennen wir nicht. Dann brauchen wir
    // auch keine Challenge-Parameter setzen
    if (job == null) {
      HBCIUtils.log(
          "have no challenge data for " + code + ", will not apply challenge params",
          HBCIUtils.LOG_INFO);
      return;
    }

    HHDVersion version = HHDVersion.find(secmech);
    HBCIUtils.log("using hhd version " + version, HBCIUtils.LOG_DEBUG2);

    // Parameter fuer die passende HHD-Version holen
    HhdVersion hhd = job.getVersion(version.getChallengeVersion());

    // Wir haben keine Parameter fuer diese HHD-Version
    if (hhd == null) {
      HBCIUtils.log(
          "have no challenge data for "
              + code
              + " in "
              + version
              + ", will not apply challenge params",
          HBCIUtils.LOG_INFO);
      return;
    }

    // Schritt 1: Challenge-Klasse uebernehmen
    String klass = hhd.getKlass();
    HBCIUtils.log("using challenge klass " + klass, HBCIUtils.LOG_DEBUG2);
    hktan.setParam("challengeklass", klass);

    // Schritt 2: Challenge-Parameter uebernehmen
    List<Param> params = hhd.getParams();
    for (int i = 0; i < params.size(); ++i) {
      int num = i + 1; // Die Job-Parameter beginnen bei 1
      Param param = params.get(i);

      // Checken, ob der Parameter angewendet werden soll.
      if (!param.isComplied(secmech)) {
        HBCIUtils.log(
            "skipping challenge parameter "
                + num
                + " ("
                + param.path
                + "), condition "
                + param.conditionName
                + "="
                + param.conditionValue
                + " not complied",
            HBCIUtils.LOG_DEBUG2);
        continue;
      }

      // Parameter uebernehmen. Aber nur wenn er auch einen Wert hat.
      // Seit HHD 1.4 duerfen Parameter mittendrin optional sein, sie
      // werden dann freigelassen
      String value = param.getValue(task);
      if (value == null || value.length() == 0) {
        HBCIUtils.log(
            "challenge parameter " + num + " (" + param.path + ") is empty", HBCIUtils.LOG_DEBUG2);
        continue;
      }

      HBCIUtils.log(
          "adding challenge parameter " + num + " " + param.path + "=" + value,
          HBCIUtils.LOG_DEBUG2);
      hktan.setParam("ChallengeKlassParam" + num, value);
    }
  }