aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-04-02 20:46:20 +0200
committerFlorian Dold <florian@dold.me>2024-04-02 20:46:20 +0200
commit43f8ef1c31a364bd620711d2444bf162c81589c5 (patch)
tree3f4094f60d7e2c8525e972b04de24dc14022e6f9 /packages/taler-wallet-core/src
parent2b2a8278844ae53818ca9845630d28dd5efde7d0 (diff)
downloadwallet-core-43f8ef1c31a364bd620711d2444bf162c81589c5.tar.xz
wallet-core: preparations for refresh-blocked test
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r--packages/taler-wallet-core/src/dev-experiments.ts5
-rw-r--r--packages/taler-wallet-core/src/refresh.ts8
-rw-r--r--packages/taler-wallet-core/src/wallet.ts6
3 files changed, 19 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/dev-experiments.ts b/packages/taler-wallet-core/src/dev-experiments.ts
index 62f6d86f2..57810dbf4 100644
--- a/packages/taler-wallet-core/src/dev-experiments.ts
+++ b/packages/taler-wallet-core/src/dev-experiments.ts
@@ -67,6 +67,11 @@ export async function applyDevExperiment(
throw Error("can't handle devmode URI unless devmode is active");
}
+ if (parsedUri.devExperimentId === "start-block-refresh") {
+ wex.ws.devExperimentState.blockRefreshes = true;
+ return;
+ }
+
if (parsedUri.devExperimentId == "insert-pending-refresh") {
await wex.db.runReadWriteTx(["refreshGroups"], async (tx) => {
const refreshGroupId = encodeCrock(getRandomBytes(32));
diff --git a/packages/taler-wallet-core/src/refresh.ts b/packages/taler-wallet-core/src/refresh.ts
index dbd81387b..aece14e55 100644
--- a/packages/taler-wallet-core/src/refresh.ts
+++ b/packages/taler-wallet-core/src/refresh.ts
@@ -1046,6 +1046,14 @@ export async function processRefreshGroup(
if (refreshGroup.timestampFinished) {
return TaskRunResult.finished();
}
+
+ if (
+ wex.ws.config.testing.devModeActive &&
+ wex.ws.devExperimentState.blockRefreshes
+ ) {
+ throw Error("refresh blocked");
+ }
+
// Process refresh sessions of the group in parallel.
logger.trace(
`processing refresh sessions for ${refreshGroup.oldCoinPubs.length} old coins`,
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 311e91c3d..9536b3da8 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -1655,6 +1655,10 @@ export class Wallet {
}
}
+export interface DevExperimentState {
+ blockRefreshes?: boolean;
+}
+
/**
* Internal state of the wallet.
*
@@ -1699,6 +1703,8 @@ export class InternalWalletState {
return this._db;
}
+ devExperimentState: DevExperimentState = {};
+
lookupDenomCache(denomCacheKey: string): DenominationInfo | undefined {
return this.denomCache.get(denomCacheKey);
}