taler-typescript-core

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

commit d4d1e7beb47a60d8d3570f0570f872e6b10a3a64
parent 58b554d2d95985b4bd167cad040b0fac7cdd11ea
Author: Florian Dold <florian@dold.me>
Date:   Thu, 17 Oct 2024 11:26:00 +0200

harness: simplify test

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-kyc-skip-expiration.ts | 268+++++++++++++++++++------------------------------------------------------------
1 file changed, 65 insertions(+), 203 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-kyc-skip-expiration.ts b/packages/taler-harness/src/integrationtests/test-kyc-skip-expiration.ts @@ -21,222 +21,85 @@ import { codecForAny, codecForKycProcessClientInformation, codecOptional, + Configuration, decodeCrock, encodeCrock, j2s, - setPrintHttpRequestAsCurl, signAmlQuery, - TalerCorebankApiClient, TalerProtocolTimestamp, TransactionIdStr, TransactionMajorState, TransactionMinorState, } from "@gnu-taler/taler-util"; import { readResponseJsonOrThrow } from "@gnu-taler/taler-util/http"; +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, - harnessHttpLib, - setupDb, - WalletClient, - WalletService, -} from "../harness/harness.js"; -import { - EnvOptions, + createKycTestkudosEnvironment, postAmlDecision, 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"; - 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: "adminpw", - }, - }); - - await bankClient.registerAccountExtended({ - name: receiverName, - password: exchangeBankPassword, - username: exchangeBankUsername, - is_taler_exchange: true, - payto_uri: exchangePaytoUri, - }); - - exchange.addCoinConfigList(coinConfig); - - await exchange.modifyConfig(async (config) => { - config.setString("exchange", "enable_kyc", "yes"); - - config.setString("KYC-RULE-R1", "operation_type", "withdraw"); - config.setString("KYC-RULE-R1", "enabled", "yes"); - config.setString("KYC-RULE-R1", "exposed", "yes"); - config.setString("KYC-RULE-R1", "is_and_combinator", "no"); - config.setString("KYC-RULE-R1", "threshold", "TESTKUDOS:5"); - config.setString("KYC-RULE-R1", "timeframe", "1d"); - config.setString("KYC-RULE-R1", "next_measures", "M2"); - - config.setString("KYC-MEASURE-M1", "check_name", "C1"); - config.setString("KYC-MEASURE-M1", "context", "{}"); - config.setString("KYC-MEASURE-M1", "program", "P1"); - - config.setString("KYC-MEASURE-M2", "check_name", "C2"); - config.setString("KYC-MEASURE-M2", "context", "{}"); - config.setString("KYC-MEASURE-M2", "program", "P2"); - - config.setString("KYC-MEASURE-M3", "check_name", "SKIP"); - config.setString("KYC-MEASURE-M3", "context", "{}"); - config.setString("KYC-MEASURE-M3", "program", "P1"); - - config.setString( - "AML-PROGRAM-P1", - "command", - "taler-exchange-helper-measure-test-form", - ); - config.setString("AML-PROGRAM-P1", "enabled", "true"); - config.setString( - "AML-PROGRAM-P1", - "description", - "test for full_name and birthdate", - ); - config.setString("AML-PROGRAM-P1", "description_i18n", "{}"); - config.setString("AML-PROGRAM-P1", "fallback", "M1"); - - config.setString("AML-PROGRAM-P2", "command", "/bin/true"); - config.setString("AML-PROGRAM-P2", "enabled", "true"); - config.setString("AML-PROGRAM-P2", "description", "does nothing"); - config.setString("AML-PROGRAM-P2", "description_i18n", "{}"); - config.setString("AML-PROGRAM-P2", "fallback", "M1"); - - config.setString("KYC-CHECK-C1", "type", "FORM"); - config.setString("KYC-CHECK-C1", "form_name", "myform"); - config.setString("KYC-CHECK-C1", "description", "my check!"); - config.setString("KYC-CHECK-C1", "description_i18n", "{}"); - config.setString("KYC-CHECK-C1", "outputs", "full_name birthdate"); - config.setString("KYC-CHECK-C1", "fallback", "M1"); - - config.setString("KYC-CHECK-C2", "type", "INFO"); - config.setString("KYC-CHECK-C2", "description", "my check info!"); - config.setString("KYC-CHECK-C2", "description_i18n", "{}"); - config.setString("KYC-CHECK-C2", "fallback", "M2"); - - config.setString("KYC-CHECK-C3", "type", "INFO"); - config.setString("KYC-CHECK-C3", "description", "this is info c3"); - config.setString("KYC-CHECK-C3", "description_i18n", "{}"); - config.setString("KYC-CHECK-C3", "fallback", "M2"); - }); - - 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, harnessHttpLib } from "../harness/harness.js"; + +function adjustExchangeConfig(config: Configuration) { + config.setString("exchange", "enable_kyc", "yes"); + + config.setString("KYC-RULE-R1", "operation_type", "withdraw"); + config.setString("KYC-RULE-R1", "enabled", "yes"); + config.setString("KYC-RULE-R1", "exposed", "yes"); + config.setString("KYC-RULE-R1", "is_and_combinator", "no"); + config.setString("KYC-RULE-R1", "threshold", "TESTKUDOS:5"); + config.setString("KYC-RULE-R1", "timeframe", "1d"); + config.setString("KYC-RULE-R1", "next_measures", "M2"); + + config.setString("KYC-MEASURE-M1", "check_name", "C1"); + config.setString("KYC-MEASURE-M1", "context", "{}"); + config.setString("KYC-MEASURE-M1", "program", "P1"); + + config.setString("KYC-MEASURE-M2", "check_name", "C2"); + config.setString("KYC-MEASURE-M2", "context", "{}"); + config.setString("KYC-MEASURE-M2", "program", "P2"); + + config.setString("KYC-MEASURE-M3", "check_name", "SKIP"); + config.setString("KYC-MEASURE-M3", "context", "{}"); + config.setString("KYC-MEASURE-M3", "program", "P1"); + + config.setString( + "AML-PROGRAM-P1", + "command", + "taler-exchange-helper-measure-test-form", + ); + config.setString("AML-PROGRAM-P1", "enabled", "true"); + config.setString( + "AML-PROGRAM-P1", + "description", + "test for full_name and birthdate", + ); + config.setString("AML-PROGRAM-P1", "description_i18n", "{}"); + config.setString("AML-PROGRAM-P1", "fallback", "M1"); + + config.setString("AML-PROGRAM-P2", "command", "/bin/true"); + config.setString("AML-PROGRAM-P2", "enabled", "true"); + config.setString("AML-PROGRAM-P2", "description", "does nothing"); + config.setString("AML-PROGRAM-P2", "description_i18n", "{}"); + config.setString("AML-PROGRAM-P2", "fallback", "M1"); + + config.setString("KYC-CHECK-C1", "type", "FORM"); + config.setString("KYC-CHECK-C1", "form_name", "myform"); + config.setString("KYC-CHECK-C1", "description", "my check!"); + config.setString("KYC-CHECK-C1", "description_i18n", "{}"); + config.setString("KYC-CHECK-C1", "outputs", "full_name birthdate"); + config.setString("KYC-CHECK-C1", "fallback", "M1"); + + config.setString("KYC-CHECK-C2", "type", "INFO"); + config.setString("KYC-CHECK-C2", "description", "my check info!"); + config.setString("KYC-CHECK-C2", "description_i18n", "{}"); + config.setString("KYC-CHECK-C2", "fallback", "M2"); + + config.setString("KYC-CHECK-C3", "type", "INFO"); + config.setString("KYC-CHECK-C3", "description", "this is info c3"); + config.setString("KYC-CHECK-C3", "description_i18n", "{}"); + config.setString("KYC-CHECK-C3", "fallback", "M2"); } -// if (showCurl) { -// setPrintHttpRequestAsCurl(true); -// } /** * Test setting a `new_measure` as the AML officer. @@ -245,7 +108,7 @@ export async function runKycSkipExpirationTest(t: GlobalTestState) { // Set up test environment const { walletClient, bankClient, exchange, amlKeypair } = - await createKycTestkudosEnvironment(t); + await createKycTestkudosEnvironment(t, { adjustExchangeConfig }); // Withdraw digital cash into the wallet. let kycPaytoHash: string | undefined; @@ -367,5 +230,4 @@ export async function runKycSkipExpirationTest(t: GlobalTestState) { } } -// runKycNewMeasureTest.suites = ["wallet"]; runKycSkipExpirationTest.suites = ["wallet"];