taler-typescript-core

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

commit fed85262983f3323445a5444c737880221560f5e
parent 11a66ee8d51f22b367b1090814321346dd3afd8f
Author: Florian Dold <florian@dold.me>
Date:   Tue, 10 Dec 2024 21:25:36 +0100

harness: simplify test

Diffstat:
Mpackages/taler-harness/src/harness/environments.ts | 2+-
Mpackages/taler-harness/src/integrationtests/test-kyc-deposit-aggregate.ts | 214+++++++++++++------------------------------------------------------------------
Mpackages/taler-wallet-core/src/deposits.ts | 2++
3 files changed, 36 insertions(+), 182 deletions(-)

diff --git a/packages/taler-harness/src/harness/environments.ts b/packages/taler-harness/src/harness/environments.ts @@ -988,7 +988,7 @@ export async function makeTestPaymentV2( transactionId: preparePayResult.transactionId, }); - t.assertTrue(r2.type === ConfirmPayResultType.Done); + t.assertDeepEqual(r2.type, ConfirmPayResultType.Done); // Check if payment was successful. diff --git a/packages/taler-harness/src/integrationtests/test-kyc-deposit-aggregate.ts b/packages/taler-harness/src/integrationtests/test-kyc-deposit-aggregate.ts @@ -18,200 +18,50 @@ * Imports. */ import { - TalerCorebankApiClient, + Configuration, TransactionMajorState, TransactionMinorState, } from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { - createSyncCryptoApi, - EddsaKeyPairStrings, - WalletApiOperation, -} from "@gnu-taler/taler-wallet-core"; -import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js"; -import { - BankService, - DbInfo, - ExchangeService, - getTestHarnessPaytoForLabel, - GlobalTestState, - HarnessExchangeBankAccount, - setupDb, - WalletClient, - WalletService, -} from "../harness/harness.js"; -import { - EnvOptions, + createKycTestkudosEnvironment, postAmlDecisionNoRules, withdrawViaBankV3, } from "../harness/environments.js"; - -interface KycTestEnv { - commonDb: DbInfo; - bankClient: TalerCorebankApiClient; - exchange: ExchangeService; - exchangeBankAccount: HarnessExchangeBankAccount; - walletClient: WalletClient; - walletService: WalletService; - amlKeypair: EddsaKeyPairStrings; -} - -async function createKycTestkudosEnvironment( - t: GlobalTestState, - coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS")), - opts: EnvOptions = {}, -): Promise<KycTestEnv> { - const db = await setupDb(t); - - const bank = await BankService.create(t, { - allowRegistrations: true, - currency: "TESTKUDOS", - database: db.connStr, - httpPort: 8082, - }); - - const exchange = ExchangeService.create(t, { - name: "testexchange-1", - currency: "TESTKUDOS", - httpPort: 8081, - database: db.connStr, - }); - - let receiverName = "Exchange"; - let exchangeBankUsername = "exchange"; - let exchangeBankPassword = "mypw-password"; - let exchangePaytoUri = getTestHarnessPaytoForLabel(exchangeBankUsername); - - await exchange.addBankAccount("1", { - accountName: exchangeBankUsername, - accountPassword: exchangeBankPassword, - wireGatewayApiBaseUrl: new URL( - "accounts/exchange/taler-wire-gateway/", - bank.baseUrl, - ).href, - accountPaytoUri: exchangePaytoUri, - }); - - bank.setSuggestedExchange(exchange, exchangePaytoUri); - - await bank.start(); - - await bank.pingUntilAvailable(); - - const bankClient = new TalerCorebankApiClient(bank.corebankApiBaseUrl, { - auth: { - username: "admin", - password: "admin-password", - }, - }); - - await bankClient.registerAccountExtended({ - name: receiverName, - password: exchangeBankPassword, - username: exchangeBankUsername, - is_taler_exchange: true, - payto_uri: exchangePaytoUri, - }); - - const ageMaskSpec = opts.ageMaskSpec; - - if (ageMaskSpec) { - exchange.enableAgeRestrictions(ageMaskSpec); - // Enable age restriction for all coins. - exchange.addCoinConfigList( - coinConfig.map((x) => ({ - ...x, - name: `${x.name}-age`, - ageRestricted: true, - })), - ); - // For mixed age restrictions, we also offer coins without age restrictions - if (opts.mixedAgeRestriction) { - exchange.addCoinConfigList( - coinConfig.map((x) => ({ ...x, ageRestricted: false })), - ); - } - } else { - exchange.addCoinConfigList(coinConfig); - } - - await exchange.modifyConfig(async (config) => { - config.setString("exchange", "enable_kyc", "yes"); - - config.setString("KYC-RULE-R1", "operation_type", "aggregate"); - config.setString("KYC-RULE-R1", "enabled", "yes"); - config.setString("KYC-RULE-R1", "exposed", "yes"); - config.setString("KYC-RULE-R1", "is_and_combinator", "yes"); - config.setString("KYC-RULE-R1", "threshold", "TESTKUDOS:5"); - config.setString("KYC-RULE-R1", "timeframe", "1d"); - config.setString("KYC-RULE-R1", "next_measures", "M1"); - - config.setString("KYC-MEASURE-M1", "check_name", "C1"); - config.setString("KYC-MEASURE-M1", "context", "{}"); - config.setString("KYC-MEASURE-M1", "program", "P1"); - - config.setString("AML-PROGRAM-P1", "command", "/bin/true"); - config.setString("AML-PROGRAM-P1", "enabled", "true"); - config.setString("AML-PROGRAM-P1", "description", "this does nothing"); - config.setString("AML-PROGRAM-P1", "fallback", "M1"); - - config.setString("KYC-CHECK-C1", "type", "INFO"); - config.setString("KYC-CHECK-C1", "description", "my check!"); - config.setString("KYC-CHECK-C1", "fallback", "M1"); - }); - - await exchange.start(); - - const cryptoApi = createSyncCryptoApi(); - const amlKeypair = await cryptoApi.createEddsaKeypair({}); - - await exchange.enableAmlAccount(amlKeypair.pub, "Alice"); - - const walletService = new WalletService(t, { - name: "wallet", - useInMemoryDb: true, - }); - await walletService.start(); - await walletService.pingUntilAvailable(); - - const walletClient = new WalletClient({ - name: "wallet", - unixPath: walletService.socketPath, - onNotification(n) { - console.log("got notification", n); - }, - }); - await walletClient.connect(); - await walletClient.client.call(WalletApiOperation.InitWallet, { - config: { - testing: { - skipDefaults: true, - }, - }, - }); - - console.log("setup done!"); - - return { - commonDb: db, - exchange, - amlKeypair, - walletClient, - walletService, - bankClient, - exchangeBankAccount: { - accountName: "", - accountPassword: "", - accountPaytoUri: "", - wireGatewayApiBaseUrl: "", - }, - }; +import { GlobalTestState } from "../harness/harness.js"; + +function adjustExchangeConfig(config: Configuration): void { + config.setString("exchange", "enable_kyc", "yes"); + + config.setString("KYC-RULE-R1", "operation_type", "aggregate"); + config.setString("KYC-RULE-R1", "enabled", "yes"); + config.setString("KYC-RULE-R1", "exposed", "yes"); + config.setString("KYC-RULE-R1", "is_and_combinator", "yes"); + config.setString("KYC-RULE-R1", "threshold", "TESTKUDOS:5"); + config.setString("KYC-RULE-R1", "timeframe", "1d"); + config.setString("KYC-RULE-R1", "next_measures", "M1"); + + config.setString("KYC-MEASURE-M1", "check_name", "C1"); + config.setString("KYC-MEASURE-M1", "context", "{}"); + config.setString("KYC-MEASURE-M1", "program", "P1"); + + config.setString("AML-PROGRAM-P1", "command", "/bin/true"); + config.setString("AML-PROGRAM-P1", "enabled", "true"); + config.setString("AML-PROGRAM-P1", "description", "this does nothing"); + config.setString("AML-PROGRAM-P1", "fallback", "M1"); + + config.setString("KYC-CHECK-C1", "type", "INFO"); + config.setString("KYC-CHECK-C1", "description", "my check!"); + config.setString("KYC-CHECK-C1", "fallback", "M1"); } export async function runKycDepositAggregateTest(t: GlobalTestState) { // Set up test environment const { walletClient, bankClient, exchange, amlKeypair } = - await createKycTestkudosEnvironment(t); + await createKycTestkudosEnvironment(t, { + adjustExchangeConfig, + }); // Withdraw digital cash into the wallet. @@ -254,6 +104,8 @@ export async function runKycDepositAggregateTest(t: GlobalTestState) { }, }); + console.log("waiting done"); + const txDetails = await walletClient.call( WalletApiOperation.GetTransactionById, { diff --git a/packages/taler-wallet-core/src/deposits.ts b/packages/taler-wallet-core/src/deposits.ts @@ -1617,6 +1617,8 @@ async function processDepositGroupPendingDeposit( cancellationToken: cancellationToken, }); + logger.info(`deposit result status ${httpResp.status}`); + switch (httpResp.status) { case HttpStatusCode.Accepted: case HttpStatusCode.Ok: