[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: harness: simplify kyc test, a
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: harness: simplify kyc test, adjust config |
Date: |
Wed, 08 Jan 2025 16:34:39 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository wallet-core.
The following commit(s) were added to refs/heads/master by this push:
new b184d177c harness: simplify kyc test, adjust config
b184d177c is described below
commit b184d177c942d9f7b401a30d8cecb42c7dacedd9
Author: Florian Dold <florian@dold.me>
AuthorDate: Wed Jan 8 16:34:36 2025 +0100
harness: simplify kyc test, adjust config
---
.../taler-harness/src/integrationtests/test-kyc.ts | 338 ++++++---------------
1 file changed, 91 insertions(+), 247 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-kyc.ts
b/packages/taler-harness/src/integrationtests/test-kyc.ts
index a5882c661..5b1ba9f0a 100644
--- a/packages/taler-harness/src/integrationtests/test-kyc.ts
+++ b/packages/taler-harness/src/integrationtests/test-kyc.ts
@@ -18,10 +18,8 @@
* Imports.
*/
import {
- Duration,
Logger,
NotificationType,
- TalerCorebankApiClient,
TransactionMajorState,
TransactionMinorState,
TransactionType,
@@ -31,253 +29,11 @@ import {
import { readResponseJsonOrThrow } from "@gnu-taler/taler-util/http";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import * as http from "node:http";
-import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js";
-import {
- BankService,
- ExchangeService,
- GlobalTestState,
- MerchantService,
- WalletClient,
- WalletService,
- getTestHarnessPaytoForLabel,
- harnessHttpLib,
- setupDb,
-} from "../harness/harness.js";
-import {
- EnvOptions,
- SimpleTestEnvironmentNg3,
-} from "../harness/environments.js";
+import { createKycTestkudosEnvironment } from "../harness/environments.js";
+import { GlobalTestState, harnessHttpLib } from "../harness/harness.js";
const logger = new Logger("test-kyc.ts");
-async function createKycTestkudosEnvironment(
- t: GlobalTestState,
- coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS")),
- opts: EnvOptions = {},
-): Promise<SimpleTestEnvironmentNg3> {
- 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,
- });
-
- const merchant = await MerchantService.create(t, {
- name: "testmerchant-1",
- httpPort: 8083,
- 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", "withdraw");
- 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("KYC-CHECK-C1", "type", "LINK");
- config.setString("KYC-CHECK-C1", "provider_id", "MYPROV");
- 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(
- "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");
-
- const myprov = "KYC-PROVIDER-MYPROV";
- config.setString(myprov, "logic", "oauth2");
- config.setString(
- myprov,
- "converter",
- "taler-exchange-kyc-oauth2-test-converter.sh",
- );
- config.setString(myprov, "kyc_oauth2_validity", "forever");
- config.setString(
- myprov,
- "kyc_oauth2_token_url",
- "http://localhost:6666/oauth/v2/token",
- );
- config.setString(
- myprov,
- "kyc_oauth2_authorize_url",
- "http://localhost:6666/oauth/v2/login",
- );
- config.setString(
- myprov,
- "kyc_oauth2_info_url",
- "http://localhost:6666/oauth/v2/info",
- );
- config.setString(
- myprov,
- "kyc_oauth2_converter_helper",
- "taler-exchange-kyc-oauth2-test-converter.sh",
- );
- config.setString(myprov, "kyc_oauth2_client_id", "taler-exchange");
- config.setString(myprov, "kyc_oauth2_client_secret", "exchange-secret");
- config.setString(myprov, "kyc_oauth2_post_url", "https://taler.net");
-
- config.setString(
- "kyc-legitimization-withdraw1",
- "operation_type",
- "withdraw",
- );
- });
-
- await exchange.start();
- await exchange.pingUntilAvailable();
-
- merchant.addExchange(exchange);
-
- await merchant.start();
- await merchant.pingUntilAvailable();
-
- await merchant.addInstanceWithWireAccount({
- id: "default",
- name: "Default Instance",
- paytoUris: [getTestHarnessPaytoForLabel("merchant-default")],
- defaultWireTransferDelay: Duration.toTalerProtocolDuration(
- Duration.fromSpec({ minutes: 1 }),
- ),
- });
-
- await merchant.addInstanceWithWireAccount({
- id: "minst1",
- name: "minst1",
- paytoUris: [getTestHarnessPaytoForLabel("minst1")],
- defaultWireTransferDelay: Duration.toTalerProtocolDuration(
- Duration.fromSpec({ minutes: 1 }),
- ),
- });
-
- 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,
- merchant,
- walletClient,
- walletService,
- bank,
- bankClient,
- exchangeBankAccount: {
- accountName: "",
- accountPassword: "",
- accountPaytoUri: "",
- wireGatewayApiBaseUrl: "",
- },
- };
-}
-
interface TestfakeKycService {
stop: () => void;
}
@@ -374,7 +130,95 @@ export async function runKycTest(t: GlobalTestState) {
// Set up test environment
const { walletClient, bankClient, exchange, merchant } =
- await createKycTestkudosEnvironment(t);
+ await createKycTestkudosEnvironment(t, {
+ adjustExchangeConfig(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", "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("KYC-CHECK-C1", "type", "LINK");
+ config.setString("KYC-CHECK-C1", "provider_id", "MYPROV");
+ 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", "FREEZE");
+
+ 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", "FREEZE");
+
+ config.setString("KYC-MEASURE-FREEZE", "check_name", "SKIP");
+ config.setString("KYC-MEASURE-FREEZE", "context", "{}");
+ config.setString("KYC-MEASURE-FREEZE", "program", "FREEZE");
+ config.setString(
+ "AML-PROGRAM-FREEZE",
+ "command",
+ "taler-exchange-helper-measure-freeze",
+ );
+ config.setString("AML-PROGRAM-FREEZE", "enabled", "true");
+ config.setString("AML-PROGRAM-FREEZE", "description", "Freeze
account");
+ config.setString("AML-PROGRAM-FREEZE", "description_i18n", "{}");
+ config.setString("AML-PROGRAM-FREEZE", "fallback", "FREEZE");
+
+ const myprov = "KYC-PROVIDER-MYPROV";
+ config.setString(myprov, "logic", "oauth2");
+ config.setString(
+ myprov,
+ "converter",
+ "taler-exchange-kyc-oauth2-test-converter.sh",
+ );
+ config.setString(myprov, "kyc_oauth2_validity", "forever");
+ config.setString(
+ myprov,
+ "kyc_oauth2_token_url",
+ "http://localhost:6666/oauth/v2/token",
+ );
+ config.setString(
+ myprov,
+ "kyc_oauth2_authorize_url",
+ "http://localhost:6666/oauth/v2/login",
+ );
+ config.setString(
+ myprov,
+ "kyc_oauth2_info_url",
+ "http://localhost:6666/oauth/v2/info",
+ );
+ config.setString(
+ myprov,
+ "kyc_oauth2_converter_helper",
+ "taler-exchange-kyc-oauth2-test-converter.sh",
+ );
+ config.setString(myprov, "kyc_oauth2_client_id", "taler-exchange");
+ config.setString(myprov, "kyc_oauth2_client_secret",
"exchange-secret");
+ config.setString(myprov, "kyc_oauth2_post_url", "https://taler.net");
+
+ config.setString(
+ "kyc-legitimization-withdraw1",
+ "operation_type",
+ "withdraw",
+ );
+ },
+ });
const kycServer = await runTestfakeKycService();
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: harness: simplify kyc test, adjust config,
gnunet <=