taler-typescript-core

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

commit 538879dadeb07ab1e791698feb1df5cab09e1eec
parent d30b2c3212023350015053547a5f047210bd2fe5
Author: Florian Dold <florian@dold.me>
Date:   Mon, 20 Oct 2025 16:31:08 +0200

util,harness: handle bad gateway from donau

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-donau-compat.ts | 7+++++++
Mpackages/taler-util/src/http-client/merchant.ts | 14+++++++++++---
2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-donau-compat.ts b/packages/taler-harness/src/integrationtests/test-donau-compat.ts @@ -20,11 +20,13 @@ import { ConfirmPayResultType, DonauHttpClient, + HttpStatusCode, j2s, OrderOutputType, OrderVersion, PreparePayResultType, succeedOrThrow, + TalerErrorCode, TalerMerchantInstanceHttpClient, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; @@ -94,6 +96,11 @@ export async function runDonauCompatTest(t: GlobalTestState) { }, token: merchantAdminAccessToken, }); + t.assertDeepEqual(postDonauResp.case, HttpStatusCode.BadGateway); + t.assertDeepEqual( + postDonauResp.detail?.code, + TalerErrorCode.DONAU_CHARITY_NOT_FOUND, + ); console.log(j2s(postDonauResp)); } diff --git a/packages/taler-util/src/http-client/merchant.ts b/packages/taler-util/src/http-client/merchant.ts @@ -78,7 +78,7 @@ import { opKnownAlternativeHttpFailure, opKnownHttpFailure, opKnownTalerFailure, - opUnknownHttpFailure + opUnknownHttpFailure, } from "@gnu-taler/taler-util"; import { HttpRequestLibrary, @@ -2663,7 +2663,10 @@ export class TalerMerchantInstanceHttpClient { } } - async postDonau(args: { body: MerchantPostDonauBody; token?: AccessToken }) { + async postDonau(args: { + body: MerchantPostDonauBody; + token?: AccessToken; + }): Promise<OperationOk<void> | OperationFail<HttpStatusCode.BadGateway>> { const headers: Record<string, string> = {}; if (args.token) { headers.Authorization = makeBearerTokenAuthHeader(args.token); @@ -2680,6 +2683,8 @@ export class TalerMerchantInstanceHttpClient { case HttpStatusCode.Ok: { return opEmptySuccess(); } + case HttpStatusCode.BadGateway: + return opKnownHttpFailure(resp.status, resp); default: return opUnknownHttpFailure(resp); } @@ -2744,7 +2749,10 @@ export class TalerMerchantManagementHttpClient extends TalerMerchantInstanceHttp headers["Taler-Challenge-Ids"] = params.challengeIds.join(", "); } if (params.tokenValidity) { - url.searchParams.append("token_validity_ms", String(params.tokenValidity.d_ms)) + url.searchParams.append( + "token_validity_ms", + String(params.tokenValidity.d_ms), + ); } const resp = await this.httpLib.fetch(url.href, { method: "POST",