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:
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 (