libeufin-tutorial test: up to key-letter generation
This commit is contained in:
parent
5765c51b2e
commit
39723f6f97
@ -51,6 +51,43 @@ export interface LibeufinCliDetails {
|
|||||||
sandboxUrl: string;
|
sandboxUrl: string;
|
||||||
nexusDatabaseUri: string;
|
nexusDatabaseUri: string;
|
||||||
sandboxDatabaseUri: string;
|
sandboxDatabaseUri: string;
|
||||||
|
user: LibeufinNexusUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinEbicsSubscriberDetails {
|
||||||
|
hostId: string;
|
||||||
|
partnerId: string;
|
||||||
|
userId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinEbicsConnectionDetails {
|
||||||
|
subscriberDetails: LibeufinEbicsSubscriberDetails;
|
||||||
|
ebicsUrl: string;
|
||||||
|
connectionName: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinBankAccountDetails {
|
||||||
|
currency: string;
|
||||||
|
iban: string;
|
||||||
|
bic: string;
|
||||||
|
personName: string;
|
||||||
|
accountName: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinNexusUser {
|
||||||
|
username: string;
|
||||||
|
password: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinBackupFileDetails {
|
||||||
|
passphrase: string;
|
||||||
|
outputFile: string;
|
||||||
|
connectionName: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface LibeufinKeyLetterDetails {
|
||||||
|
outputFile: string;
|
||||||
|
connectionName: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LibeufinSandboxService implements LibeufinSandboxServiceInterface {
|
export class LibeufinSandboxService implements LibeufinSandboxServiceInterface {
|
||||||
@ -136,6 +173,20 @@ export class LibeufinNexusService {
|
|||||||
const url = `${this.baseUrl}config`;
|
const url = `${this.baseUrl}config`;
|
||||||
await pingProc(this.nexusProc, url, "libeufin-nexus");
|
await pingProc(this.nexusProc, url, "libeufin-nexus");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async createNexusSuperuser(
|
||||||
|
details: LibeufinNexusUser,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-nexus",
|
||||||
|
`libeufin-nexus superuser ${details.username} --password=${details.password}`,
|
||||||
|
extendEnv({ LIBEUFIN_NEXUS_DB_CONNECTION: this.nexusConfig.databaseJdbcUri }),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CreateEbicsSubscriberRequest {
|
export interface CreateEbicsSubscriberRequest {
|
||||||
@ -207,6 +258,130 @@ export class LibeufinCli {
|
|||||||
);
|
);
|
||||||
console.log(stdout);
|
console.log(stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async createEbicsSubscriber(
|
||||||
|
details: LibeufinEbicsSubscriberDetails,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-createebicssubscriber",
|
||||||
|
"libeufin-cli sandbox ebicssubscriber create" +
|
||||||
|
` --host-id=${details.hostId}` +
|
||||||
|
` --partner-id=${details.partnerId}` +
|
||||||
|
` --user-id=${details.userId}`,
|
||||||
|
extendEnv({ LIBEUFIN_SANDBOX_URL: this.cliDetails.sandboxUrl }),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createEbicsBankAccount(
|
||||||
|
sd: LibeufinEbicsSubscriberDetails,
|
||||||
|
bankAccountDetails: LibeufinBankAccountDetails,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-createebicsbankaccount",
|
||||||
|
"libeufin-cli sandbox ebicsbankaccount create" +
|
||||||
|
` --currency=${bankAccountDetails.currency}` +
|
||||||
|
` --iban=${bankAccountDetails.iban}` +
|
||||||
|
` --bic=${bankAccountDetails.bic}` +
|
||||||
|
` --person-name='${bankAccountDetails.personName}'` +
|
||||||
|
` --account-name=${bankAccountDetails.accountName}` +
|
||||||
|
` --ebics-host-id=${sd.hostId}` +
|
||||||
|
` --ebics-partner-id=${sd.partnerId}` +
|
||||||
|
` --ebics-user-id=${sd.userId}`,
|
||||||
|
extendEnv({ LIBEUFIN_SANDBOX_URL: this.cliDetails.sandboxUrl }),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateTransactions(
|
||||||
|
accountName: string,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-generatetransactions",
|
||||||
|
`libeufin-cli sandbox bankaccount generate-transactions ${accountName}`,
|
||||||
|
extendEnv({ LIBEUFIN_SANDBOX_URL: this.cliDetails.sandboxUrl }),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async showSandboxTransactions(
|
||||||
|
accountName: string,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-showsandboxtransactions",
|
||||||
|
`libeufin-cli sandbox bankaccount transactions ${accountName}`,
|
||||||
|
extendEnv({ LIBEUFIN_SANDBOX_URL: this.cliDetails.sandboxUrl }),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createEbicsConnection(
|
||||||
|
connectionDetails: LibeufinEbicsConnectionDetails,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-createebicsconnection",
|
||||||
|
`libeufin-cli connections new-ebics-connection` +
|
||||||
|
` --ebics-url=${connectionDetails.ebicsUrl}` +
|
||||||
|
` --host-id=${connectionDetails.subscriberDetails.hostId}` +
|
||||||
|
` --partner-id=${connectionDetails.subscriberDetails.partnerId}` +
|
||||||
|
` --ebics-user-id=${connectionDetails.subscriberDetails.partnerId}` +
|
||||||
|
` ${connectionDetails.connectionName}`,
|
||||||
|
extendEnv({
|
||||||
|
LIBEUFIN_NEXUS_URL: this.cliDetails.nexusUrl,
|
||||||
|
LIBEUFIN_NEXUS_USERNAME: this.cliDetails.user.username,
|
||||||
|
LIBEUFIN_NEXUS_PASSWORD: this.cliDetails.user.password,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createBackupFile(
|
||||||
|
details: LibeufinBackupFileDetails,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-createbackupfile",
|
||||||
|
`libeufin-cli connections export-backup` +
|
||||||
|
` --passphrase=${details.passphrase}` +
|
||||||
|
` --output-file=${details.outputFile}` +
|
||||||
|
` ${details.connectionName}`,
|
||||||
|
extendEnv({
|
||||||
|
LIBEUFIN_NEXUS_URL: this.cliDetails.nexusUrl,
|
||||||
|
LIBEUFIN_NEXUS_USERNAME: this.cliDetails.user.username,
|
||||||
|
LIBEUFIN_NEXUS_PASSWORD: this.cliDetails.user.password,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createKeyLetter(
|
||||||
|
details: LibeufinKeyLetterDetails,
|
||||||
|
): Promise<void> {
|
||||||
|
|
||||||
|
const stdout = await sh(
|
||||||
|
this.globalTestState,
|
||||||
|
"libeufin-cli-createkeyletter",
|
||||||
|
`libeufin-cli connections get-key-letter` +
|
||||||
|
` ${details.connectionName} ${details.outputFile}`,
|
||||||
|
extendEnv({
|
||||||
|
LIBEUFIN_NEXUS_URL: this.cliDetails.nexusUrl,
|
||||||
|
LIBEUFIN_NEXUS_USERNAME: this.cliDetails.user.username,
|
||||||
|
LIBEUFIN_NEXUS_PASSWORD: this.cliDetails.user.password,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
console.log(stdout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export namespace LibeufinSandboxApi {
|
export namespace LibeufinSandboxApi {
|
||||||
|
@ -47,16 +47,47 @@ export async function runLibeufinTutorialTest(t: GlobalTestState) {
|
|||||||
databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
||||||
});
|
});
|
||||||
|
|
||||||
await libeufinNexus.start();
|
const nexusUser = {username: "foo", password: "secret"};
|
||||||
await libeufinNexus.pingUntilAvailable();
|
|
||||||
|
|
||||||
const libeufinCli = new LibeufinCli(t, {
|
const libeufinCli = new LibeufinCli(t, {
|
||||||
sandboxUrl: libeufinSandbox.baseUrl,
|
sandboxUrl: libeufinSandbox.baseUrl,
|
||||||
nexusUrl: libeufinNexus.baseUrl,
|
nexusUrl: libeufinNexus.baseUrl,
|
||||||
sandboxDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`,
|
sandboxDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`,
|
||||||
nexusDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
nexusDatabaseUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
|
||||||
|
user: nexusUser,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const ebicsDetails = {
|
||||||
|
hostId: "testhost", partnerId: "partner01", userId: "user01"
|
||||||
|
}
|
||||||
|
const bankAccountDetails = {
|
||||||
|
currency: "EUR", iban: "DE18500105172929531888", bic: "INGDDEFFXXX",
|
||||||
|
personName: "Jane Normal", accountName: "testacct01"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await libeufinCli.checkSandbox();
|
await libeufinCli.checkSandbox();
|
||||||
await libeufinCli.createEbicsHost("testhost");
|
await libeufinCli.createEbicsHost("testhost");
|
||||||
|
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",
|
||||||
|
}
|
||||||
|
await libeufinCli.createEbicsConnection(connectionDetails);
|
||||||
|
await libeufinCli.createBackupFile({
|
||||||
|
passphrase: "secret",
|
||||||
|
outputFile: `${t.testDir}/connection-backup.json`,
|
||||||
|
connectionName: connectionDetails.connectionName,
|
||||||
|
})
|
||||||
|
await libeufinCli.createKeyLetter({
|
||||||
|
outputFile: `${t.testDir}/letter.pdf`,
|
||||||
|
connectionName: connectionDetails.connectionName,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user