commit e38439432ef0fbd4ab4cfaf051b928a45deee04e
parent 541f8915b7af7c9c327ee6cf5cbeaadb8454ea9d
Author: Florian Dold <florian@dold.me>
Date: Fri, 14 Nov 2025 16:43:00 +0100
fix default_pay_delay (must not be forever)
Diffstat:
5 files changed, 46 insertions(+), 38 deletions(-)
diff --git a/packages/taler-harness/src/harness/harness.ts b/packages/taler-harness/src/harness/harness.ts
@@ -1769,7 +1769,6 @@ export class ExchangeService implements ExchangeServiceInterface {
await sh(this.globalState, "rm-secmod-keys", `rm ${eddsaKeydir}/*`);
}
-
/**
* Purge denom signing keys.
* Keeps message signing keys (eddsa) in place.
@@ -2316,7 +2315,7 @@ export class MerchantService implements MerchantServiceInterface {
),
default_pay_delay:
instanceConfig.defaultPayDelay ??
- Duration.toTalerProtocolDuration(Duration.getForever()),
+ Duration.toTalerProtocolDuration(Duration.fromSpec({ days: 1 })),
};
const headers: Record<string, string> = {};
if (adminAccessToken) {
diff --git a/packages/taler-harness/src/integrationtests/test-merchant-self-provision-activation-and-login.ts b/packages/taler-harness/src/integrationtests/test-merchant-self-provision-activation-and-login.ts
@@ -24,7 +24,7 @@ import {
MerchantAuthMethod,
succeedOrThrow,
TalerMerchantInstanceHttpClient,
- TalerMerchantManagementHttpClient
+ TalerMerchantManagementHttpClient,
} from "@gnu-taler/taler-util";
import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
import { startTanHelper } from "harness/tan-helper.js";
@@ -89,7 +89,9 @@ taler-harness run-helper --socket ${socketFile} -- $@
method: MerchantAuthMethod.TOKEN,
password: "123",
},
- default_pay_delay: { d_us: "forever" as const },
+ default_pay_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 14 }),
+ ),
default_wire_transfer_delay: { d_us: "forever" as const },
jurisdiction: {},
address: {},
@@ -181,4 +183,7 @@ taler-harness run-helper --socket ${socketFile} -- $@
helper.stop();
}
-runMerchantSelfProvisionActivationAndLoginTest.suites = ["merchant", "self-provision"];
+runMerchantSelfProvisionActivationAndLoginTest.suites = [
+ "merchant",
+ "self-provision",
+];
diff --git a/packages/taler-harness/src/integrationtests/test-merchant-self-provision-activation.ts b/packages/taler-harness/src/integrationtests/test-merchant-self-provision-activation.ts
@@ -19,13 +19,14 @@
*/
import {
alternativeOrThrow,
+ Duration,
HttpStatusCode,
LoginTokenScope,
- TanChannel,
MerchantAuthMethod,
succeedOrThrow,
TalerMerchantInstanceHttpClient,
- TalerMerchantManagementHttpClient
+ TalerMerchantManagementHttpClient,
+ TanChannel,
} from "@gnu-taler/taler-util";
import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
import { startTanHelper } from "harness/tan-helper.js";
@@ -91,16 +92,22 @@ taler-harness run-helper --socket ${socketFile} -- $@
method: MerchantAuthMethod.TOKEN,
password: "123",
},
- default_pay_delay: { d_us: "forever" as const },
- default_wire_transfer_delay: { d_us: "forever" as const },
+ default_pay_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 14 }),
+ ),
+ default_wire_transfer_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 14 }),
+ ),
jurisdiction: {},
address: {},
email: "some@taler.net",
phone_number: "+1111",
use_stefan: false,
};
- const signupStart =
- alternativeOrThrow(await merchantClient.createInstanceSelfProvision(instanceInfo), HttpStatusCode.Accepted);
+ const signupStart = alternativeOrThrow(
+ await merchantClient.createInstanceSelfProvision(instanceInfo),
+ HttpStatusCode.Accepted,
+ );
// creation requires 2fa
t.assertDeepEqual(signupStart.challenges.length, 2);
diff --git a/packages/taler-harness/src/integrationtests/test-merchant-self-provision-forgot-password.ts b/packages/taler-harness/src/integrationtests/test-merchant-self-provision-forgot-password.ts
@@ -18,9 +18,8 @@
* Imports.
*/
import {
- AccessToken,
alternativeOrThrow,
- failOrThrow,
+ Duration,
HttpStatusCode,
LoginTokenScope,
MerchantAuthMethod,
@@ -28,21 +27,12 @@ import {
TalerMerchantInstanceHttpClient,
TalerMerchantManagementHttpClient,
TanChannel,
- URL,
} from "@gnu-taler/taler-util";
-import {
- ExchangeService,
- getTestHarnessPaytoForLabel,
- GlobalTestState,
- harnessHttpLib,
- MerchantService,
- setupDb,
-} from "../harness/harness.js";
-import { createTopsEnvironment } from "harness/tops.js";
import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
+import { startTanHelper } from "harness/tan-helper.js";
import { randomBytes } from "node:crypto";
import { chmodSync, writeFileSync } from "node:fs";
-import { startTanHelper } from "harness/tan-helper.js";
+import { GlobalTestState } from "../harness/harness.js";
import { solveMFA } from "./test-merchant-self-provision-inactive-account-permissions.js";
/**
@@ -101,8 +91,12 @@ taler-harness run-helper --socket ${socketFile} -- $@
method: MerchantAuthMethod.TOKEN,
password: "123",
},
- default_pay_delay: { d_us: "forever" as const },
- default_wire_transfer_delay: { d_us: "forever" as const },
+ default_pay_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 1 }),
+ ),
+ default_wire_transfer_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 1 }),
+ ),
jurisdiction: {},
address: {},
email: "some@taler.net",
diff --git a/packages/taler-harness/src/integrationtests/test-merchant-self-provision-inactive-account-permissions.ts b/packages/taler-harness/src/integrationtests/test-merchant-self-provision-inactive-account-permissions.ts
@@ -20,7 +20,7 @@
import {
alternativeOrThrow,
ChallengeResponse,
- failOrThrow,
+ Duration,
HttpStatusCode,
LoginTokenScope,
MerchantAuthMethod,
@@ -30,10 +30,10 @@ import {
TanChannel,
} from "@gnu-taler/taler-util";
import { createSimpleTestkudosEnvironmentV3 } from "harness/environments.js";
-import { GlobalTestState } from "../harness/harness.js";
-import { chmodSync, writeFileSync } from "node:fs";
-import { randomBytes } from "node:crypto";
import { startTanHelper, TestTanHelperService } from "harness/tan-helper.js";
+import { randomBytes } from "node:crypto";
+import { chmodSync, writeFileSync } from "node:fs";
+import { GlobalTestState } from "../harness/harness.js";
/**
* Test that the merchant can change name and emails address but can't start kyc process
@@ -92,8 +92,12 @@ export async function runMerchantSelfProvisionInactiveAccountPermissionsTest(
method: MerchantAuthMethod.TOKEN,
password: "123",
},
- default_pay_delay: { d_us: "forever" as const },
- default_wire_transfer_delay: { d_us: "forever" as const },
+ default_pay_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 14 }),
+ ),
+ default_wire_transfer_delay: Duration.toTalerProtocolDuration(
+ Duration.fromSpec({ days: 14 }),
+ ),
jurisdiction: {},
address: {},
email: "some@taler.net",
@@ -155,7 +159,7 @@ export async function runMerchantSelfProvisionInactiveAccountPermissionsTest(
// const bad = failOrThrow(
await merchantClient.createInstanceSelfProvision(wrongInfo, {
- challengeIds: emailChange.challenges.map(c => c.challenge_id),
+ challengeIds: emailChange.challenges.map((c) => c.challenge_id),
});
// ,
// HttpStatusCode.Conflict,
@@ -165,12 +169,12 @@ export async function runMerchantSelfProvisionInactiveAccountPermissionsTest(
const completeSignup = succeedOrThrow(
await merchantClient.createInstanceSelfProvision(instanceInfo, {
- challengeIds: emailChange.challenges.map(c => c.challenge_id),
+ challengeIds: emailChange.challenges.map((c) => c.challenge_id),
}),
);
await merchantClient.createInstanceSelfProvision(wrongInfo, {
- challengeIds: emailChange.challenges.map(c => c.challenge_id),
+ challengeIds: emailChange.challenges.map((c) => c.challenge_id),
});
const loginChallenge = alternativeOrThrow(
@@ -205,10 +209,9 @@ export async function runMerchantSelfProvisionInactiveAccountPermissionsTest(
await instanceApi.getCurrentInstanceDetails(token),
);
-
// check that the instance has the new email
- t.assertDeepEqual(det.email, instanceInfo.email)
- t.assertDeepEqual(det.email_validated, true)
+ t.assertDeepEqual(det.email, instanceInfo.email);
+ t.assertDeepEqual(det.email_validated, true);
helper.stop();
}