taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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:
Mpackages/taler-harness/src/harness/harness.ts | 3+--
Mpackages/taler-harness/src/integrationtests/test-merchant-self-provision-activation-and-login.ts | 11++++++++---
Mpackages/taler-harness/src/integrationtests/test-merchant-self-provision-activation.ts | 19+++++++++++++------
Mpackages/taler-harness/src/integrationtests/test-merchant-self-provision-forgot-password.ts | 24+++++++++---------------
Mpackages/taler-harness/src/integrationtests/test-merchant-self-provision-inactive-account-permissions.ts | 27+++++++++++++++------------
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(); }