Testing: done with simple refund case.

This commit is contained in:
MS 2021-04-30 11:45:47 +02:00
parent 98014f4b64
commit eaa5aba4e2
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
2 changed files with 40 additions and 19 deletions

View File

@ -784,6 +784,28 @@ export namespace LibeufinNexusApi {
);
}
export async function submitInitiatedPayment(
libeufinNexusService: LibeufinNexusServiceInterface,
accountName: string,
paymentId: string,
): Promise<void> {
const baseUrl = libeufinNexusService.baseUrl;
let url = new URL(
`bank-accounts/${accountName}/payment-initiations/${paymentId}/submit`,
baseUrl,
);
await axios.post(
url.href,
{},
{
auth: {
username: "admin",
password: "test",
},
},
);
}
export async function fetchAccounts(
libeufinNexusService: LibeufinNexusServiceInterface,
connectionName: string,
@ -874,6 +896,8 @@ export namespace LibeufinNexusApi {
JSON.stringify(response.data, null, 2));
}
// FIXME: this function should return some structured
// object that represents a history.
export async function getAccountTransactions(
libeufinNexusService: LibeufinNexusService,
accountName: string,
@ -894,8 +918,6 @@ export namespace LibeufinNexusApi {
},
},
);
console.log(`History of account: ${accountName}`,
JSON.stringify(response.data, null, 2));
}

View File

@ -47,10 +47,11 @@ export async function runLibeufinRefundTest(t: GlobalTestState) {
[user01sandbox, user02sandbox],
);
// user02 - acting as the Exchange - gets money from user01,
// but this one gets the subject wrong - not a valid public key.
// The result should be a reimbursement - minus a small fee - of
// the paid money to user01.
/**
* user01 pays user02 using a invalid subject. At the end,
* user01 checks whether one incoming payment exists in the
* history. This one incoming payment will be the refund.
*/
await LibeufinSandboxApi.bookPayment(
libeufinServices.libeufinSandbox,
user02sandbox,
@ -60,24 +61,22 @@ export async function runLibeufinRefundTest(t: GlobalTestState) {
"EUR",
);
// STEPS.
// 1. Exchange must fetch this payment into its Nexus / Facade.
// 2. Facade logic should process incoming payments.
// 3. A reimbursement should be prepared.
// 4. The reimbursement payment should be sent.
// Steps 1-3 should happen all-at-once when triggering the import
// logic. 4 needs to be explicitly triggered (because here there's
// no background task activated, yet?)
await LibeufinNexusApi.fetchAllTransactions(
libeufinServices.libeufinNexus,
user02nexus.localAccountName,
);
await LibeufinNexusApi.getAccountTransactions(
await LibeufinNexusApi.submitInitiatedPayment(
libeufinServices.libeufinNexus,
user02nexus.localAccountName,
"1", // so far the only one that can exist.
);
// Counterpart checks whether the reimbursement shows up.
let history = await LibeufinSandboxApi.getAccountTransactions(
libeufinServices.libeufinSandbox,
"remote-account-01"
);
t.assertTrue(history["payments"].length == 1)
}