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:
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",