aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-harness
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-02-14 11:16:58 +0100
committerFlorian Dold <florian@dold.me>2023-02-14 11:17:19 +0100
commit6a4da88719bc7a1506433c1117b2402d2bd48f36 (patch)
tree7094aed1a6a8e1fe85854225c8744c955d7d973c /packages/taler-harness
parent6106caeba9e017242dfd334c34c8473aefb6ffb0 (diff)
downloadwallet-core-6a4da88719bc7a1506433c1117b2402d2bd48f36.tar.gz
wallet-core-6a4da88719bc7a1506433c1117b2402d2bd48f36.tar.bz2
wallet-core-6a4da88719bc7a1506433c1117b2402d2bd48f36.zip
wallet-core: expose more info about refund query
Diffstat (limited to 'packages/taler-harness')
-rw-r--r--packages/taler-harness/src/harness/helpers.ts49
-rw-r--r--packages/taler-harness/src/integrationtests/test-refund.ts40
2 files changed, 78 insertions, 11 deletions
diff --git a/packages/taler-harness/src/harness/helpers.ts b/packages/taler-harness/src/harness/helpers.ts
index ad77ce6ca..c1ce463fa 100644
--- a/packages/taler-harness/src/harness/helpers.ts
+++ b/packages/taler-harness/src/harness/helpers.ts
@@ -29,6 +29,8 @@ import {
MerchantContractTerms,
Duration,
PreparePayResultType,
+ NotificationType,
+ WithdrawalGroupFinishedNotification,
} from "@gnu-taler/taler-util";
import {
BankAccessApi,
@@ -466,6 +468,53 @@ export async function startWithdrawViaBank(
// Some tests rely on the final withdraw failing.
}
+export interface WithdrawViaBankResult {
+ withdrawalFinishedCond: Promise<WithdrawalGroupFinishedNotification>;
+}
+
+export async function withdrawViaBankV2(
+ t: GlobalTestState,
+ p: {
+ walletClient: WalletClient;
+ bank: BankService;
+ exchange: ExchangeServiceInterface;
+ amount: AmountString;
+ restrictAge?: number;
+ },
+): Promise<WithdrawViaBankResult> {
+ const { walletClient: wallet, bank, exchange, amount } = p;
+
+ const user = await BankApi.createRandomBankUser(bank);
+ const wop = await BankAccessApi.createWithdrawalOperation(bank, user, amount);
+
+ // Hand it to the wallet
+
+ await wallet.client.call(WalletApiOperation.GetWithdrawalDetailsForUri, {
+ talerWithdrawUri: wop.taler_withdraw_uri,
+ restrictAge: p.restrictAge,
+ });
+
+ const withdrawalFinishedCond = wallet.waitForNotificationCond((x) =>
+ x.type === NotificationType.WithdrawGroupFinished ? x : false,
+ );
+
+ // Withdraw (AKA select)
+
+ await wallet.client.call(WalletApiOperation.AcceptBankIntegratedWithdrawal, {
+ exchangeBaseUrl: exchange.baseUrl,
+ talerWithdrawUri: wop.taler_withdraw_uri,
+ restrictAge: p.restrictAge,
+ });
+
+ // Confirm it
+
+ await BankApi.confirmWithdrawalOperation(bank, user, wop);
+
+ return {
+ withdrawalFinishedCond,
+ };
+}
+
/**
* Withdraw balance.
*/
diff --git a/packages/taler-harness/src/integrationtests/test-refund.ts b/packages/taler-harness/src/integrationtests/test-refund.ts
index 93850769a..4ae45b8bf 100644
--- a/packages/taler-harness/src/integrationtests/test-refund.ts
+++ b/packages/taler-harness/src/integrationtests/test-refund.ts
@@ -17,12 +17,16 @@
/**
* Imports.
*/
-import { Duration, durationFromSpec } from "@gnu-taler/taler-util";
+import {
+ Duration,
+ durationFromSpec,
+ NotificationType,
+} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { GlobalTestState, MerchantPrivateApi } from "../harness/harness.js";
import {
- createSimpleTestkudosEnvironment,
- withdrawViaBank,
+ createSimpleTestkudosEnvironmentV2,
+ withdrawViaBankV2,
} from "../harness/helpers.js";
/**
@@ -31,12 +35,23 @@ import {
export async function runRefundTest(t: GlobalTestState) {
// Set up test environment
- const { wallet, bank, exchange, merchant } =
- await createSimpleTestkudosEnvironment(t);
+ const {
+ walletClient: wallet,
+ bank,
+ exchange,
+ merchant,
+ } = await createSimpleTestkudosEnvironmentV2(t);
// Withdraw digital cash into the wallet.
- await withdrawViaBank(t, { wallet, bank, exchange, amount: "TESTKUDOS:20" });
+ const withdrawalRes = await withdrawViaBankV2(t, {
+ walletClient: wallet,
+ bank,
+ exchange,
+ amount: "TESTKUDOS:20",
+ });
+
+ await withdrawalRes.withdrawalFinishedCond;
// Set up order.
@@ -85,12 +100,15 @@ export async function runRefundTest(t: GlobalTestState) {
console.log(ref);
{
+ const refundFinishedCond = wallet.waitForNotificationCond(
+ (x) => x.type === NotificationType.RefundFinished,
+ );
const r = await wallet.client.call(WalletApiOperation.ApplyRefund, {
talerRefundUri: ref.talerRefundUri,
});
console.log(r);
- await wallet.runUntilDone();
+ await refundFinishedCond;
}
{
@@ -103,6 +121,9 @@ export async function runRefundTest(t: GlobalTestState) {
}
{
+ const refundQueriedCond = wallet.waitForNotificationCond(
+ (x) => x.type === NotificationType.RefundQueried,
+ );
const r3 = await wallet.client.call(
WalletApiOperation.ApplyRefundFromPurchaseId,
{
@@ -110,11 +131,8 @@ export async function runRefundTest(t: GlobalTestState) {
},
);
console.log(r3);
-
- await wallet.runUntilDone();
+ await refundQueriedCond;
}
-
- await t.shutdown();
}
runRefundTest.suites = ["wallet"];