commit c1321afc21877ca2c8d0220d420e29d329b3c0bb
parent 0956ea297885e131ed5bcdf0a10e12d47cbe0f56
Author: Florian Dold <florian@dold.me>
Date: Wed, 22 Jul 2026 21:29:10 +0200
fix drifting timestamp in deposit idempotency test
Diffstat:
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts b/packages/taler-harness/src/integrationtests/test-exchange-deposit.ts
@@ -24,6 +24,7 @@ import {
j2s,
Logger,
TalerError,
+ TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
import { createPlatformHttpLib } from "@gnu-taler/taler-util/http";
import {
@@ -100,6 +101,8 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
const wireSalt = encodeCrock(getRandomBytes(16));
const contractTermsHash = encodeCrock(getRandomBytes(64));
+ const timestamp = TalerProtocolTimestamp.now();
+
await depositCoin({
contractTermsHash,
merchantPriv,
@@ -109,6 +112,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
http,
+ timestamp,
});
// Idempotency
@@ -121,6 +125,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
http,
+ timestamp,
});
try {
@@ -134,6 +139,7 @@ export async function runExchangeDepositTest(t: GlobalTestState) {
cryptoApi,
exchangeBaseUrl: exchange.baseUrl,
http,
+ timestamp,
});
} catch (e) {
if (e instanceof TalerError && e.errorDetail.code === 7005) {
diff --git a/packages/taler-wallet-core/src/dbless.ts b/packages/taler-wallet-core/src/dbless.ts
@@ -40,8 +40,11 @@ import {
ExchangeMeltRequestV2,
ExchangeRefreshRevealRequestV2,
Logger,
+ Paytos,
+ Result,
TalerCorebankApiClient,
TalerExchangeHttpClient,
+ TalerProtocolTimestamp,
UnblindedDenominationSignature,
codecForAny,
codecForBankWithdrawalOperationPostResponse,
@@ -51,8 +54,6 @@ import {
hashDenomPub,
hashWire,
j2s,
- Paytos,
- Result,
succeedOrThrow,
} from "@gnu-taler/taler-util";
import {
@@ -260,6 +261,7 @@ export async function depositCoin(args: {
contractTermsHash?: string;
// 16 bytes, crockford encoded
wireSalt?: string;
+ timestamp?: TalerProtocolTimestamp;
}): Promise<void> {
return await depositCoinBatch({
coins: [args.coin],
@@ -271,6 +273,7 @@ export async function depositCoin(args: {
depositPayto: args.depositPayto,
contractTermsHash: args.contractTermsHash,
wireSalt: args.wireSalt,
+ timestamp: args.timestamp,
});
}
@@ -285,6 +288,7 @@ export async function depositCoinBatch(args: {
contractTermsHash?: string;
// 16 bytes, crockford encoded
wireSalt?: string;
+ timestamp?: TalerProtocolTimestamp;
}): Promise<void> {
const { coins, amounts, http, cryptoApi } = args;
const depositPayto =