aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/taler-harness/src/index.ts8
-rw-r--r--packages/taler-harness/src/integrationtests/test-deposit.ts3
-rw-r--r--packages/taler-harness/src/integrationtests/test-kyc.ts2
-rw-r--r--packages/taler-harness/src/integrationtests/test-wallet-backup-basic.ts2
-rw-r--r--packages/taler-harness/src/integrationtests/test-wallet-backup-doublespend.ts2
-rw-r--r--packages/taler-harness/src/integrationtests/testrunner.ts7
-rw-r--r--packages/taler-util/src/transactions-types.ts5
-rw-r--r--packages/taler-wallet-core/src/operations/deposits.ts3
-rw-r--r--packages/taler-wallet-core/src/operations/pending.ts11
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts7
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts5
-rw-r--r--packages/taler-wallet-core/src/wallet.ts2
12 files changed, 51 insertions, 6 deletions
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-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-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<void>;
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,
}));
}
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 b94617851..083b6618a 100644
--- a/packages/taler-wallet-core/src/operations/transactions.ts
+++ b/packages/taler-wallet-core/src/operations/transactions.ts
@@ -559,6 +559,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),
@@ -583,6 +589,7 @@ function buildTransactionForDeposit(
)) /
dg.transactionPerCoin.length,
depositGroupId: dg.depositGroupId,
+ deposited,
...(ort?.lastError ? { error: ort.lastError } : {}),
};
}
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
index 7c6228530..f7edfed91 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 ===
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<Op extends WalletApiOperation>(
{
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());