From 598de5b0d576987ea317b22fd6d33cbe4a1a19ac Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 18 Jan 2023 19:30:48 +0100 Subject: wallet-core: Add 'deposited' field to deposit transaction This field indicates whether the POST requests to deposit coins went through with the exchange. We also don't consider a deposit transaction as having lifeness when it is already deposited and we're just querying for informational deposit tracking information. --- packages/taler-harness/src/integrationtests/test-deposit.ts | 3 +-- packages/taler-util/src/transactions-types.ts | 5 +++++ packages/taler-wallet-core/src/operations/deposits.ts | 3 ++- packages/taler-wallet-core/src/operations/pending.ts | 11 ++++++++++- packages/taler-wallet-core/src/operations/transactions.ts | 7 +++++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/packages/taler-harness/src/integrationtests/test-deposit.ts b/packages/taler-harness/src/integrationtests/test-deposit.ts index 07382c43e..e4ca08789 100644 --- a/packages/taler-harness/src/integrationtests/test-deposit.ts +++ b/packages/taler-harness/src/integrationtests/test-deposit.ts @@ -54,11 +54,10 @@ export async function runDepositTest(t: GlobalTestState) { WalletApiOperation.GetTransactions, {}, ); + console.log("transactions", JSON.stringify(transactions, undefined, 2)); t.assertDeepEqual(transactions.transactions[0].type, "withdrawal"); - t.assertTrue(!transactions.transactions[0].pending); t.assertDeepEqual(transactions.transactions[1].type, "deposit"); - t.assertTrue(!transactions.transactions[1].pending); // The raw amount is what ends up on the bank account, which includes // deposit and wire fees. t.assertDeepEqual(transactions.transactions[1].amountRaw, "TESTKUDOS:9.79"); diff --git a/packages/taler-util/src/transactions-types.ts b/packages/taler-util/src/transactions-types.ts index e81625a5a..7562b5884 100644 --- a/packages/taler-util/src/transactions-types.ts +++ b/packages/taler-util/src/transactions-types.ts @@ -550,6 +550,11 @@ export interface TransactionDeposit extends TransactionCommon { wireTransferDeadline: TalerProtocolTimestamp; wireTransferProgress: number; + + /** + * Did all the deposit requests succeed? + */ + deposited: boolean; } export interface TransactionByIdRequest { diff --git a/packages/taler-wallet-core/src/operations/deposits.ts b/packages/taler-wallet-core/src/operations/deposits.ts index 71caae5b3..f3ec81686 100644 --- a/packages/taler-wallet-core/src/operations/deposits.ts +++ b/packages/taler-wallet-core/src/operations/deposits.ts @@ -21,7 +21,6 @@ import { AbsoluteTime, AmountJson, Amounts, - bytesToString, CancellationToken, canonicalJson, codecForDepositSuccess, @@ -457,6 +456,8 @@ export async function prepareDepositGroup( effectiveDepositAmount: Amounts.stringify(effectiveDepositAmount), }; } + + export async function createDepositGroup( ws: InternalWalletState, req: CreateDepositGroupRequest, diff --git a/packages/taler-wallet-core/src/operations/pending.ts b/packages/taler-wallet-core/src/operations/pending.ts index d9d62ec65..a73af528c 100644 --- a/packages/taler-wallet-core/src/operations/pending.ts +++ b/packages/taler-wallet-core/src/operations/pending.ts @@ -200,13 +200,22 @@ async function gatherDepositPending( if (dg.timestampFinished) { return; } + let deposited = true; + for (const d of dg.depositedPerCoin) { + if (!d) { + deposited = false; + } + } const opId = RetryTags.forDeposit(dg); const retryRecord = await tx.operationRetries.get(opId); const timestampDue = retryRecord?.retryInfo.nextRetry ?? AbsoluteTime.now(); resp.pendingOperations.push({ type: PendingTaskType.Deposit, ...getPendingCommon(ws, opId, timestampDue), - givesLifeness: true, + // Fully deposited operations don't give lifeness, + // because there is no reason to wait on the + // deposit tracking status. + givesLifeness: !deposited, depositGroupId: dg.depositGroupId, lastError: retryRecord?.lastError, retryInfo: retryRecord?.retryInfo, diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 58def0f34..7fa2c075c 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -557,6 +557,12 @@ function buildTransactionForDeposit( dg: DepositGroupRecord, ort?: OperationRetryRecord, ): Transaction { + let deposited = true; + for (const d of dg.depositedPerCoin) { + if (!d) { + deposited = false; + } + } return { type: TransactionType.Deposit, amountRaw: Amounts.stringify(dg.effectiveDepositAmount), @@ -581,6 +587,7 @@ function buildTransactionForDeposit( )) / dg.transactionPerCoin.length, depositGroupId: dg.depositGroupId, + deposited, ...(ort?.lastError ? { error: ort.lastError } : {}), }; } -- cgit v1.2.3 From 785f8163ca140532ab3604826dc790b7cec2f36d Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 18 Jan 2023 19:58:30 +0100 Subject: harness: mark some tests as experimental --- packages/taler-harness/src/index.ts | 8 +++++++- packages/taler-harness/src/integrationtests/test-kyc.ts | 2 ++ .../src/integrationtests/test-wallet-backup-basic.ts | 2 ++ .../src/integrationtests/test-wallet-backup-doublespend.ts | 2 ++ packages/taler-harness/src/integrationtests/testrunner.ts | 7 +++++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/taler-harness/src/index.ts b/packages/taler-harness/src/index.ts index 632bd5877..a6decc4ab 100644 --- a/packages/taler-harness/src/index.ts +++ b/packages/taler-harness/src/index.ts @@ -229,7 +229,6 @@ deploymentConfigCli ); }); - testingCli.subcommand("logtest", "logtest").action(async (args) => { logger.trace("This is a trace message."); logger.info("This is an info message."); @@ -248,6 +247,9 @@ testingCli if (t.excludeByDefault) { s += ` [excluded by default]`; } + if (t.experimental) { + s += ` [experimental]`; + } console.log(s); } }); @@ -263,6 +265,9 @@ testingCli .flag("dryRun", ["--dry"], { help: "Only print tests that will be selected to run.", }) + .flag("experimental", ["--experimental"], { + help: "Include tests marked as experimental", + }) .flag("quiet", ["--quiet"], { help: "Produce less output.", }) @@ -272,6 +277,7 @@ testingCli suiteSpec: args.runIntegrationtests.suites, dryRun: args.runIntegrationtests.dryRun, verbosity: args.runIntegrationtests.quiet ? 0 : 1, + includeExperimental: args.runIntegrationtests.experimental ?? false, }); }); diff --git a/packages/taler-harness/src/integrationtests/test-kyc.ts b/packages/taler-harness/src/integrationtests/test-kyc.ts index 40474fb6f..c59b2e8df 100644 --- a/packages/taler-harness/src/integrationtests/test-kyc.ts +++ b/packages/taler-harness/src/integrationtests/test-kyc.ts @@ -202,3 +202,5 @@ export async function runKycTest(t: GlobalTestState) { } runKycTest.suites = ["wallet"]; +// See bugs.taler.net/n/7599 +runKycTest.experimental = true; \ No newline at end of file diff --git a/packages/taler-harness/src/integrationtests/test-wallet-backup-basic.ts b/packages/taler-harness/src/integrationtests/test-wallet-backup-basic.ts index fc2f3335d..f36e2e4f1 100644 --- a/packages/taler-harness/src/integrationtests/test-wallet-backup-basic.ts +++ b/packages/taler-harness/src/integrationtests/test-wallet-backup-basic.ts @@ -166,3 +166,5 @@ export async function runWalletBackupBasicTest(t: GlobalTestState) { } runWalletBackupBasicTest.suites = ["wallet", "wallet-backup"]; +// See https://bugs.taler.net/n/7598 +runWalletBackupBasicTest.experimental = true; diff --git a/packages/taler-harness/src/integrationtests/test-wallet-backup-doublespend.ts b/packages/taler-harness/src/integrationtests/test-wallet-backup-doublespend.ts index 8b52260e9..2aceab86e 100644 --- a/packages/taler-harness/src/integrationtests/test-wallet-backup-doublespend.ts +++ b/packages/taler-harness/src/integrationtests/test-wallet-backup-doublespend.ts @@ -172,3 +172,5 @@ export async function runWalletBackupDoublespendTest(t: GlobalTestState) { } runWalletBackupDoublespendTest.suites = ["wallet", "wallet-backup"]; +// See https://bugs.taler.net/n/7598 +runWalletBackupDoublespendTest.experimental = true; diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts index 780fcf394..f04bc2950 100644 --- a/packages/taler-harness/src/integrationtests/testrunner.ts +++ b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -111,6 +111,7 @@ interface TestMainFunction { (t: GlobalTestState): Promise; timeoutMs?: number; excludeByDefault?: boolean; + experimental?: boolean; suites?: string[]; } @@ -194,6 +195,7 @@ export interface TestRunSpec { includePattern?: string; suiteSpec?: string; dryRun?: boolean; + includeExperimental: boolean; verbosity: number; } @@ -201,6 +203,7 @@ export interface TestInfo { name: string; suites: string[]; excludeByDefault: boolean; + experimental: boolean; } function updateCurrentSymlink(testDir: string): void { @@ -284,6 +287,9 @@ export async function runTests(spec: TestRunSpec) { if (testCase.excludeByDefault) { continue; } + if (testCase.experimental && !spec.includeExperimental) { + continue; + } } if (spec.dryRun) { @@ -441,6 +447,7 @@ export function getTestInfo(): TestInfo[] { name: getTestName(x), suites: x.suites ?? [], excludeByDefault: x.excludeByDefault ?? false, + experimental: x.experimental ?? false, })); } -- cgit v1.2.3 From de937d7159863cdc22b48b5bc018634d1cbc75f8 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 18 Jan 2023 20:08:16 +0100 Subject: -logging --- packages/taler-wallet-core/src/operations/withdraw.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index c1cc94413..f5cdde167 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -933,12 +933,17 @@ async function queryReserve( cancellationToken, }); + logger.info(`reserve status code: HTTP ${resp.status}`); + const result = await readSuccessResponseJsonOrErrorCode( resp, codecForReserveStatus(), ); if (result.isError) { + logger.info( + `got reserve status error, EC=${result.talerErrorResponse.code}`, + ); if ( resp.status === 404 && result.talerErrorResponse.code === -- cgit v1.2.3 From d7fe5b0cb5472becfafa7123f880d26d8efd2f8f Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 18 Jan 2023 20:21:24 +0100 Subject: wallet-core: add receiver name in fakebank test --- packages/taler-wallet-core/src/wallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index a5c092b59..bba502842 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -1350,7 +1350,7 @@ async function dispatchRequestInternal( { amount: Amounts.stringify(amount), reserve_pub: wres.reservePub, - debit_account: "payto://x-taler-bank/localhost/testdebtor", + debit_account: "payto://x-taler-bank/localhost/testdebtor?receiver-name=Foo", }, ); const fbResp = await readSuccessResponseJsonOrThrow(fbReq, codecForAny()); -- cgit v1.2.3