commit f5747b394d14f65d9bee342eb30edf47a36d9751 parent 90d799ef4d68f9287ce88d00f74dcb5dba99b021 Author: Florian Dold <florian@dold.me> Date: Fri, 5 Apr 2024 19:13:48 +0200 wallet-core: make scope info mandatory on exchange entry responses Diffstat:
5 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-wallet-config.ts b/packages/taler-harness/src/integrationtests/test-wallet-config.ts @@ -45,9 +45,11 @@ export async function runWalletConfigTest(t: GlobalTestState) { exchanges: [ { exchangeBaseUrl: "https://exchange.demo.taler.net/", + currencyHint: "KUDOS", }, { exchangeBaseUrl: "https://exchange.test.taler.net/", + currencyHint: "TESTKUDOS", }, ], }, diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts @@ -462,7 +462,7 @@ export interface GetCurrencySpecificationResponse { export interface BuiltinExchange { exchangeBaseUrl: string; - currencyHint?: string; + currencyHint: string; } export interface PartialWalletRunConfig { @@ -1397,7 +1397,7 @@ export interface ShortExchangeListItem { export interface ExchangeListItem { exchangeBaseUrl: string; masterPub: string | undefined; - currency: string | undefined; + currency: string; paytoUris: string[]; tosStatus: ExchangeTosStatus; exchangeEntryStatus: ExchangeEntryStatus; @@ -1415,7 +1415,7 @@ export interface ExchangeListItem { */ noFees: boolean; - scopeInfo: ScopeInfo | undefined; + scopeInfo: ScopeInfo; lastUpdateTimestamp: TalerPreciseTimestamp | undefined; @@ -1483,7 +1483,7 @@ export const codecForExchangeFullDetails = (): Codec<ExchangeFullDetails> => export const codecForExchangeListItem = (): Codec<ExchangeListItem> => buildCodecForObject<ExchangeListItem>() - .property("currency", codecOptional(codecForString())) + .property("currency", codecForString()) .property("exchangeBaseUrl", codecForString()) .property("masterPub", codecOptional(codecForString())) .property("paytoUris", codecForList(codecForString())) diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts @@ -327,7 +327,7 @@ async function makeExchangeListItem( masterPub: exchangeDetails?.masterPublicKey, noFees: r.noFees ?? false, peerPaymentsDisabled: r.peerPaymentsDisabled ?? false, - currency: exchangeDetails?.currency ?? r.presetCurrencyHint, + currency: exchangeDetails?.currency ?? r.presetCurrencyHint ?? "UNKNOWN", exchangeUpdateStatus: getExchangeUpdateStatusFromRecord(r), exchangeEntryStatus: getExchangeEntryStatusFromRecord(r), tosStatus: getExchangeTosStatusFromRecord(r), @@ -337,7 +337,11 @@ async function makeExchangeListItem( paytoUris: exchangeDetails?.wireInfo.accounts.map((x) => x.payto_uri) ?? [], lastUpdateTimestamp: timestampOptionalPreciseFromDb(r.lastUpdate), lastUpdateErrorInfo, - scopeInfo, + scopeInfo: scopeInfo ?? { + type: ScopeType.Exchange, + currency: "UNKNOWN", + url: r.baseUrl, + }, }; } diff --git a/packages/taler-wallet-webextension/src/wallet/AddExchange/test.ts b/packages/taler-wallet-webextension/src/wallet/AddExchange/test.ts @@ -23,6 +23,7 @@ import { ExchangeEntryStatus, ExchangeTosStatus, ExchangeUpdateStatus, + ScopeType, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import * as tests from "@gnu-taler/web-util/testing"; @@ -48,7 +49,11 @@ describe("AddExchange states", () => { { exchangeBaseUrl: "http://exchange.local/", ageRestrictionOptions: [], - scopeInfo: undefined, + scopeInfo: { + currency: "ARS", + type: ScopeType.Exchange, + url: "http://exchange.local/", + }, masterPub: "123qwe123", currency: "ARS", exchangeEntryStatus: ExchangeEntryStatus.Ephemeral, diff --git a/packages/taler-wallet-webextension/src/wallet/DestinationSelection/test.ts b/packages/taler-wallet-webextension/src/wallet/DestinationSelection/test.ts @@ -25,6 +25,7 @@ import { ExchangeListItem, ExchangeTosStatus, ExchangeUpdateStatus, + ScopeType, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import * as tests from "@gnu-taler/web-util/testing"; @@ -37,7 +38,11 @@ const exchangeArs: ExchangeListItem = { currency: "ARS", exchangeBaseUrl: "http://", masterPub: "123qwe123", - scopeInfo: undefined, + scopeInfo: { + currency: "ARS", + type: ScopeType.Exchange, + url: "http://", + }, tosStatus: ExchangeTosStatus.Accepted, exchangeEntryStatus: ExchangeEntryStatus.Used, exchangeUpdateStatus: ExchangeUpdateStatus.Initial,