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:
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,
+ );
}
/**