aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-06-17 11:34:32 +0200
committerFlorian Dold <florian@dold.me>2024-06-17 11:34:32 +0200
commitb59e472465440d95525e7e3d1225234525948b67 (patch)
treedfbbda8378bcef48f543eaed9fd6f3168c203ee5 /packages
parent61dbe85eec8856e2b0cc50873e0f0bb1fc59754b (diff)
downloadwallet-core-b59e472465440d95525e7e3d1225234525948b67.tar.xz
wallet-core: fix auto-refund state machine
Properly use the new finalizing state
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-harness/src/integrationtests/test-refund-auto.ts6
-rw-r--r--packages/taler-wallet-core/src/pay-merchant.ts5
-rw-r--r--packages/taler-wallet-core/src/testing.ts4
3 files changed, 12 insertions, 3 deletions
diff --git a/packages/taler-harness/src/integrationtests/test-refund-auto.ts b/packages/taler-harness/src/integrationtests/test-refund-auto.ts
index 6e02071af..582f30299 100644
--- a/packages/taler-harness/src/integrationtests/test-refund-auto.ts
+++ b/packages/taler-harness/src/integrationtests/test-refund-auto.ts
@@ -54,6 +54,8 @@ export async function runRefundAutoTest(t: GlobalTestState) {
// Test case where the auto-refund happens
{
+ t.logStep("start-test-autorefund");
+
// Set up order.
const orderResp = await merchantClient.createOrder({
order: {
@@ -122,6 +124,8 @@ export async function runRefundAutoTest(t: GlobalTestState) {
// Now test the case where the auto-refund just expires
+ t.logStep("start-test-expiry");
+
{
// Set up order.
const orderResp = await merchantClient.createOrder({
@@ -165,7 +169,7 @@ export async function runRefundAutoTest(t: GlobalTestState) {
await walletClient.call(WalletApiOperation.TestingWaitTransactionState, {
transactionId: r1.transactionId,
txState: {
- major: TransactionMajorState.Pending,
+ major: TransactionMajorState.Finalizing,
minor: TransactionMinorState.AutoRefund,
},
});
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts
index 5a0decd5c..118a338cc 100644
--- a/packages/taler-wallet-core/src/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/pay-merchant.ts
@@ -1060,7 +1060,7 @@ async function storeFirstPaySuccess(
if (protoAr) {
const ar = Duration.fromTalerProtocolDuration(protoAr);
logger.info("auto_refund present");
- purchase.purchaseStatus = PurchaseStatus.PendingQueryingAutoRefund;
+ purchase.purchaseStatus = PurchaseStatus.FinalizingQueryingAutoRefund;
purchase.autoRefundDeadline = timestampProtocolToDb(
AbsoluteTime.toProtocolTimestamp(
AbsoluteTime.addDuration(AbsoluteTime.now(), ar),
@@ -1460,6 +1460,7 @@ async function checkPaymentByProposalId(
const paid =
purchase.purchaseStatus === PurchaseStatus.Done ||
purchase.purchaseStatus === PurchaseStatus.PendingQueryingRefund ||
+ purchase.purchaseStatus === PurchaseStatus.FinalizingQueryingAutoRefund ||
purchase.purchaseStatus === PurchaseStatus.PendingQueryingAutoRefund;
const download = await expectProposalDownload(wex, purchase);
return {
@@ -2113,8 +2114,8 @@ export async function processPurchase(
case PurchaseStatus.PendingPayingReplay:
return processPurchasePay(wex, proposalId);
case PurchaseStatus.PendingQueryingRefund:
- case PurchaseStatus.FinalizingQueryingAutoRefund:
return processPurchaseQueryRefund(wex, purchase);
+ case PurchaseStatus.FinalizingQueryingAutoRefund:
case PurchaseStatus.PendingQueryingAutoRefund:
return processPurchaseAutoRefund(wex, purchase);
case PurchaseStatus.AbortingWithRefund:
diff --git a/packages/taler-wallet-core/src/testing.ts b/packages/taler-wallet-core/src/testing.ts
index 899c4a8b2..057ac50cd 100644
--- a/packages/taler-wallet-core/src/testing.ts
+++ b/packages/taler-wallet-core/src/testing.ts
@@ -410,6 +410,7 @@ export async function waitUntilAllTransactionsFinal(
switch (notif.newTxState.major) {
case TransactionMajorState.Pending:
case TransactionMajorState.Aborting:
+ case TransactionMajorState.Finalizing:
return false;
default:
return true;
@@ -424,6 +425,7 @@ export async function waitUntilAllTransactionsFinal(
switch (tx.txState.major) {
case TransactionMajorState.Pending:
case TransactionMajorState.Aborting:
+ case TransactionMajorState.Finalizing:
case TransactionMajorState.Suspended:
case TransactionMajorState.SuspendedAborting:
logger.info(
@@ -497,6 +499,7 @@ export async function waitUntilGivenTransactionsFinal(
}
switch (tx.txState.major) {
case TransactionMajorState.Pending:
+ case TransactionMajorState.Finalizing:
case TransactionMajorState.Aborting:
case TransactionMajorState.Suspended:
case TransactionMajorState.SuspendedAborting:
@@ -542,6 +545,7 @@ export async function waitUntilRefreshesDone(
}
switch (tx.txState.major) {
case TransactionMajorState.Pending:
+ case TransactionMajorState.Finalizing:
case TransactionMajorState.Aborting:
case TransactionMajorState.Suspended:
case TransactionMajorState.SuspendedAborting: