taler-typescript-core

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

commit 49794f6c11b7efc6b44eee89396b1a12f0394d8c
parent 35043fbac23c6a4c1029efc2b4a07c28d9a39111
Author: Florian Dold <florian@dold.me>
Date:   Sat,  9 May 2026 18:25:03 +0200

harness: fix bad username in basic auth

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-libeufin-conversion.ts | 35+++++++++++++++++++----------------
Mpackages/taler-util/src/http-client/bank-core.ts | 22++++++++++++++++++++--
2 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-libeufin-conversion.ts b/packages/taler-harness/src/integrationtests/test-libeufin-conversion.ts @@ -177,7 +177,7 @@ export async function runLibeufinConversionTest(t: GlobalTestState) { adminUser, { type: "basic", - username: "exchange", + username: adminUser, password: adminPassword, }, { @@ -204,21 +204,24 @@ export async function runLibeufinConversionTest(t: GlobalTestState) { ); succeedOrThrow( - await cc.updateConversionRate({ - type: "bearer", - token: adminTokResp.access_token - }, { - cashin_fee: "TESTKUDOS:0", - cashin_min_amount: "FOO:5", - cashin_ratio: "1", - cashin_rounding_mode: "nearest", - cashin_tiny_amount: "TESTKUDOS:0.01", - cashout_fee: "FOO:0", - cashout_min_amount: "TESTKUDOS:0", - cashout_ratio: "1", - cashout_rounding_mode: "nearest", - cashout_tiny_amount: "FOO:0.01", - }), + await cc.updateConversionRate( + { + type: "bearer", + token: adminTokResp.access_token, + }, + { + cashin_fee: "TESTKUDOS:0", + cashin_min_amount: "FOO:5", + cashin_ratio: "1", + cashin_rounding_mode: "nearest", + cashin_tiny_amount: "TESTKUDOS:0.01", + cashout_fee: "FOO:0", + cashout_min_amount: "TESTKUDOS:0", + cashout_ratio: "1", + cashout_rounding_mode: "nearest", + cashout_tiny_amount: "FOO:0.01", + }, + ), ); const detRes = await walletClient.call( diff --git a/packages/taler-util/src/http-client/bank-core.ts b/packages/taler-util/src/http-client/bank-core.ts @@ -21,6 +21,7 @@ import { ChallengeResponse, HttpStatusCode, LibtoolVersion, + Logger, LongPollParams, OperationAlternative, OperationFail, @@ -95,6 +96,8 @@ import { nullEvictor, } from "./utils.js"; +const logger = new Logger("bank-core.ts"); + export type TalerCoreBankResultByMethod< prop extends keyof TalerCoreBankHttpClient, > = ResultByMethod<TalerCoreBankHttpClient, prop>; @@ -145,6 +148,15 @@ export class TalerCoreBankHttpClient { return compare?.compatible ?? false; } + private checkUsernameAuthMatch( + username: string, + auth: BasicOrTokenAuth, + ): void { + if (auth.type === "basic" && username !== auth.username) { + logger.warn(`username and basic auth name do not match`); + } + } + /** * * https://docs.taler.net/core/api-corebank.html#post--accounts-$USERNAME-token @@ -157,7 +169,9 @@ export class TalerCoreBankHttpClient { ) { const url = new URL(`accounts/${username}/token`, this.baseUrl); - const headers = authHeaders(auth) + this.checkUsernameAuthMatch(username, auth); + + const headers = authHeaders(auth); if (params.challengeIds && params.challengeIds.length > 0) { headers["Taler-Challenge-Ids"] = params.challengeIds.join(", "); } @@ -204,7 +218,11 @@ export class TalerCoreBankHttpClient { password: string, body: TokenRequest, ) { - return this.createAccessToken(username, { type: "basic", username, password }, body); + return this.createAccessToken( + username, + { type: "basic", username, password }, + body, + ); } /**