taler-typescript-core

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

commit 7f90bd4267223e02a0ef280f0e3a27a80ee9f465
parent dcde71193724e34f0f9c99491ffc4f6fade0a704
Author: Florian Dold <florian@dold.me>
Date:   Wed, 21 Aug 2024 11:25:59 +0200

harness: update oauth2 kyc test

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-kyc.ts | 80+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 50 insertions(+), 30 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-kyc.ts b/packages/taler-harness/src/integrationtests/test-kyc.ts @@ -27,7 +27,6 @@ import { TransactionType, j2s, } from "@gnu-taler/taler-util"; -import { createPlatformHttpLib } 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"; @@ -39,6 +38,7 @@ import { WalletClient, WalletService, generateRandomPayto, + harnessHttpLib, setupDb, } from "../harness/harness.js"; import { EnvOptions, SimpleTestEnvironmentNg3 } from "../harness/helpers.js"; @@ -132,11 +132,48 @@ async function createKycTestkudosEnvironment( } await exchange.modifyConfig(async (config) => { - const myprov = "kyc-provider-myprov"; - config.setString(myprov, "cost", "0"); + 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, "provided_checks", "dummy1"); - config.setString(myprov, "user_type", "individual"); + config.setString( + myprov, + "converter", + "taler-exchange-kyc-oauth2-test-converter.sh", + ); config.setString(myprov, "kyc_oauth2_validity", "forever"); config.setString( myprov, @@ -167,17 +204,6 @@ async function createKycTestkudosEnvironment( "operation_type", "withdraw", ); - config.setString( - "kyc-legitimization-withdraw1", - "required_checks", - "dummy1", - ); - config.setString("kyc-legitimization-withdraw1", "timeframe", "1d"); - config.setString( - "kyc-legitimization-withdraw1", - "threshold", - "TESTKUDOS:5", - ); }); await exchange.start(); @@ -317,7 +343,7 @@ async function runTestfakeKycService(): Promise<TestfakeKycService> { JSON.stringify({ status: "success", data: { - id: "foobar", + name: "Alice Abc", }, }), ); @@ -413,26 +439,20 @@ export async function runKycTest(t: GlobalTestState) { ); t.assertDeepEqual(txState.type, TransactionType.Withdrawal); + const paytoHash = txState.kycPaytoHash; - const kycUrl = txState.kycUrl; - - t.assertTrue(!!kycUrl); - - logger.info(`kyc URL is ${kycUrl}`); + t.assertTrue(!!txState.kycUrl); + t.assertTrue(!!paytoHash); // We now simulate the user interacting with the KYC service, // which would usually done in the browser. - const httpLib = createPlatformHttpLib({ - enableThrottling: false, - }); - const kycServerResp = await httpLib.fetch(kycUrl); - const kycLoginResp = await kycServerResp.json(); - logger.info(`kyc server resp: ${j2s(kycLoginResp)}`); - const kycProofUrl = kycLoginResp.redirect_uri; + const proofUrl = new URL(`kyc-proof/MYPROV`, exchange.baseUrl); + proofUrl.searchParams.set("state", paytoHash); + // We need to "visit" the KYC proof URL at least once to trigger the exchange // asking for the KYC status. - const proofHttpResp = await httpLib.fetch(kycProofUrl); + const proofHttpResp = await harnessHttpLib.fetch(proofUrl.href); logger.info(`proof resp status ${proofHttpResp.status}`); logger.info(`resp headers ${j2s(proofHttpResp.headers.toJSON())}`); if (