2021-02-03 13:05:10 +01:00
|
|
|
/*
|
|
|
|
This file is part of GNU Taler
|
|
|
|
(C) 2020 Taler Systems S.A.
|
|
|
|
|
|
|
|
GNU Taler is free software; you can redistribute it and/or modify it under the
|
|
|
|
terms of the GNU General Public License as published by the Free Software
|
|
|
|
Foundation; either version 3, or (at your option) any later version.
|
|
|
|
|
|
|
|
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
|
|
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Imports.
|
|
|
|
*/
|
|
|
|
import { CoreApiResponse } from "@gnu-taler/taler-wallet-core";
|
|
|
|
import { CoinConfig, defaultCoinConfig } from "./denomStructures";
|
2021-02-03 14:34:31 +01:00
|
|
|
import { GlobalTestState } from "./harness";
|
2021-02-03 13:05:10 +01:00
|
|
|
import {
|
|
|
|
LibeufinNexusApi,
|
|
|
|
LibeufinNexusService,
|
|
|
|
LibeufinSandboxApi,
|
|
|
|
LibeufinSandboxService,
|
2021-02-03 14:34:31 +01:00
|
|
|
LibeufinCli,
|
2021-02-03 13:05:10 +01:00
|
|
|
} from "./libeufin";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Run basic test with LibEuFin.
|
|
|
|
*/
|
|
|
|
export async function runLibeufinTutorialTest(t: GlobalTestState) {
|
|
|
|
// Set up test environment
|
|
|
|
|
|
|
|
const libeufinSandbox = await LibeufinSandboxService.create(t, {
|
|
|
|
httpPort: 5010,
|
|
|
|
databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`,
|
|
|
|
});
|
|
|
|
|
|
|
|
await libeufinSandbox.start();
|
|
|
|
await libeufinSandbox.pingUntilAvailable();
|
|
|
|
|
|
|
|
const libeufinNexus = await LibeufinNexusService.create(t, {
|
|
|
|
httpPort: 5011,
|
|
|
|
databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
|
|
|
});
|
|
|
|
|
2021-02-04 14:41:01 +01:00
|
|
|
const nexusUser = { username: "foo", password: "secret" };
|
2021-02-03 14:34:31 +01:00
|
|
|
const libeufinCli = new LibeufinCli(t, {
|
|
|
|
sandboxUrl: libeufinSandbox.baseUrl,
|
|
|
|
nexusUrl: libeufinNexus.baseUrl,
|
|
|
|
sandboxDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`,
|
|
|
|
nexusDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
2021-02-04 14:38:47 +01:00
|
|
|
user: nexusUser,
|
2021-02-03 14:34:31 +01:00
|
|
|
});
|
|
|
|
|
2021-02-04 14:38:47 +01:00
|
|
|
const ebicsDetails = {
|
2021-02-04 14:41:01 +01:00
|
|
|
hostId: "testhost",
|
|
|
|
partnerId: "partner01",
|
|
|
|
userId: "user01",
|
|
|
|
};
|
2021-02-04 14:38:47 +01:00
|
|
|
const bankAccountDetails = {
|
2021-02-04 14:41:01 +01:00
|
|
|
currency: "EUR",
|
|
|
|
iban: "DE18500105172929531888",
|
|
|
|
bic: "INGDDEFFXXX",
|
|
|
|
personName: "Jane Normal",
|
|
|
|
accountName: "testacct01",
|
|
|
|
};
|
2021-02-04 14:38:47 +01:00
|
|
|
|
2021-02-03 14:34:31 +01:00
|
|
|
await libeufinCli.checkSandbox();
|
2021-02-03 14:54:56 +01:00
|
|
|
await libeufinCli.createEbicsHost("testhost");
|
2021-02-04 14:38:47 +01:00
|
|
|
await libeufinCli.createEbicsSubscriber(ebicsDetails);
|
|
|
|
await libeufinCli.createEbicsBankAccount(ebicsDetails, bankAccountDetails);
|
|
|
|
await libeufinCli.generateTransactions(bankAccountDetails.accountName);
|
|
|
|
|
|
|
|
await libeufinNexus.start();
|
|
|
|
await libeufinNexus.pingUntilAvailable();
|
|
|
|
|
|
|
|
await libeufinNexus.createNexusSuperuser(nexusUser);
|
|
|
|
const connectionDetails = {
|
|
|
|
subscriberDetails: ebicsDetails,
|
|
|
|
ebicsUrl: `${libeufinSandbox.baseUrl}ebicsweb`, // FIXME: need appropriate URL concatenation
|
|
|
|
connectionName: "my-ebics-conn",
|
2021-02-04 14:41:01 +01:00
|
|
|
};
|
2021-02-04 14:38:47 +01:00
|
|
|
await libeufinCli.createEbicsConnection(connectionDetails);
|
|
|
|
await libeufinCli.createBackupFile({
|
|
|
|
passphrase: "secret",
|
|
|
|
outputFile: `${t.testDir}/connection-backup.json`,
|
|
|
|
connectionName: connectionDetails.connectionName,
|
2021-02-04 14:41:01 +01:00
|
|
|
});
|
2021-02-04 14:38:47 +01:00
|
|
|
await libeufinCli.createKeyLetter({
|
|
|
|
outputFile: `${t.testDir}/letter.pdf`,
|
|
|
|
connectionName: connectionDetails.connectionName,
|
|
|
|
});
|
2021-02-05 13:51:57 +01:00
|
|
|
await libeufinCli.connect(connectionDetails.connectionName);
|
2021-02-05 14:36:10 +01:00
|
|
|
await libeufinCli.downloadBankAccounts(connectionDetails.connectionName);
|
|
|
|
await libeufinCli.listOfferedBankAccounts(connectionDetails.connectionName);
|
|
|
|
|
|
|
|
const bankAccountImportDetails = {
|
|
|
|
offeredBankAccountName: bankAccountDetails.accountName,
|
|
|
|
nexusBankAccountName: "at-nexus-testacct01",
|
|
|
|
connectionName: connectionDetails.connectionName,
|
|
|
|
};
|
|
|
|
|
|
|
|
await libeufinCli.importBankAccount(bankAccountImportDetails);
|
|
|
|
await libeufinCli.fetchTransactions(
|
|
|
|
bankAccountImportDetails.nexusBankAccountName
|
|
|
|
);
|
|
|
|
await libeufinCli.transactions(
|
|
|
|
bankAccountImportDetails.nexusBankAccountName
|
|
|
|
);
|
2021-02-03 13:05:10 +01:00
|
|
|
}
|