taler-typescript-core

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

commit a6a6cd1f9dd0f3416a88b0222d3b417fed27820b
parent f7e6f2085c7783049950f217844d3ba93cde6406
Author: Florian Dold <florian@dold.me>
Date:   Thu, 27 Nov 2025 10:36:51 +0100

harness: wait if exchange is unavailable in doTopsKycAuth

Diffstat:
Mpackages/taler-harness/src/harness/tops.ts | 40+++++++++++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/packages/taler-harness/src/harness/tops.ts b/packages/taler-harness/src/harness/tops.ts @@ -30,6 +30,8 @@ import { KycRule, KycStatusLongPollingReason, LimitOperationType, + MerchantAccountKycRedirectsResponse, + MerchantAccountKycStatus, OfficerAccount, OfficerId, parsePaytoUriOrThrow, @@ -64,6 +66,7 @@ import { harnessHttpLib, MerchantService, setupDb, + waitMs, WalletClient, WalletService, } from "./harness.js"; @@ -845,23 +848,38 @@ export async function doTopsKycAuth( merchantAdminAccessToken, } = args; { - const kycStatus = await merchantClient.getCurrentInstanceKycStatus( - merchantAdminAccessToken, - {}, - ); + let kycBody: MerchantAccountKycRedirectsResponse | undefined; + while (kycBody == null) { + const kycStatus = await merchantClient.getCurrentInstanceKycStatus( + merchantAdminAccessToken, + {}, + ); - console.log(`kyc status: ${j2s(kycStatus)}`); + console.log(`kyc status: ${j2s(kycStatus)}`); - t.assertDeepEqual(kycStatus.case, "ok"); + t.assertDeepEqual(kycStatus.case, "ok"); - t.assertTrue(kycStatus.body != null); + t.assertTrue(kycStatus.body != null); - t.assertDeepEqual(kycStatus.body.kyc_data[0].status, "kyc-wire-required"); + if ( + kycStatus.body.kyc_data[0].status === + MerchantAccountKycStatus.EXCHANGE_UNREACHABLE + ) { + logger.info(`merchant claims exchange is still unreachable for KYC`); + await waitMs(500); + } else { + t.assertDeepEqual( + kycStatus.body.kyc_data[0].status, + "kyc-wire-required", + ); + kycBody = kycStatus.body; + } + } - const depositPaytoUri = kycStatus.body.kyc_data[0].payto_uri; - t.assertTrue(kycStatus.body.kyc_data[0].payto_kycauths != null); + const depositPaytoUri = kycBody.kyc_data[0].payto_uri; + t.assertTrue(kycBody.kyc_data[0].payto_kycauths != null); const authTxPayto = parsePaytoUriOrThrow( - kycStatus.body.kyc_data[0]?.payto_kycauths[0], + kycBody.kyc_data[0]?.payto_kycauths[0], ); const authTxMessage = authTxPayto?.params["message"]; t.assertTrue(typeof authTxMessage === "string");