commit 24d3f74fb4ca44e7a229df4d77762ab5d5a37c8a
parent b15f531ee8649cb360e1111aca1c1c8fd722c933
Author: Florian Dold <florian@dold.me>
Date: Wed, 10 Dec 2025 19:20:55 +0100
formatting, tag tests with exchange tag
Diffstat:
4 files changed, 149 insertions(+), 100 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-kyc-decision-attr.ts b/packages/taler-harness/src/integrationtests/test-kyc-decision-attr.ts
@@ -141,4 +141,4 @@ export async function runKycDecisionAttrTest(t: GlobalTestState) {
t.assertDeepEqual(attrs.details[0].attributes?.foo, 42);
}
-runKycDecisionAttrTest.suites = ["wallet"];
+runKycDecisionAttrTest.suites = ["exchange"];
diff --git a/packages/taler-harness/src/integrationtests/test-kyc-fail-recover-simple.ts b/packages/taler-harness/src/integrationtests/test-kyc-fail-recover-simple.ts
@@ -258,4 +258,4 @@ export async function runKycFailRecoverSimpleTest(t: GlobalTestState) {
}
}
-runKycFailRecoverSimpleTest.suites = ["wallet", "merchant", "kyc"];
+runKycFailRecoverSimpleTest.suites = ["wallet", "merchant", "kyc", "exchange"];
diff --git a/packages/taler-harness/src/integrationtests/test-kyc-new-measure.ts b/packages/taler-harness/src/integrationtests/test-kyc-new-measure.ts
@@ -283,4 +283,4 @@ export async function runKycNewMeasureTest(t: GlobalTestState) {
}
}
-runKycNewMeasureTest.suites = ["wallet"];
+runKycNewMeasureTest.suites = ["exchange"];
diff --git a/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts b/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts
@@ -29,9 +29,7 @@ export const logger = new Logger("test-tops-aml-measures.ts");
*/
function createPdfAttachment(content: string): string {
// Escape parentheses for PDF literal strings
- const contentEscaped = content
- .replace(/\(/g, "\\(")
- .replace(/\)/g, "\\)");
+ const contentEscaped = content.replace(/\(/g, "\\(").replace(/\)/g, "\\)");
// Minimal PDF
const pdf = `%PDF-1.1
@@ -78,8 +76,6 @@ startxref
return Buffer.from(pdf, "utf8").toString("base64");
}
-
-
/**
* Test that invokes all measures defined for the TOPS deployment.
*/
@@ -109,38 +105,45 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
CONTACT_PERSON_NAME: "Bob Smith",
CONTACT_PHONE: "+41123456789",
CONTACT_EMAIL: "bob@acme.com",
- LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("company-id-doc"),
+ LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("company-id-doc"),
ESTABLISHER_LIST: [
{
FULL_NAME: "Alice Johnson",
DOMICILE_ADDRESS: "Main St. 10\n8001 Zurich",
DATE_OF_BIRTH: "1980-05-15",
NATIONALITY: "CH",
- PERSONAL_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("alice-id"),
+ PERSONAL_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("alice-id"),
SIGNING_AUTHORITY_TYPE: "SINGLE",
SIGNING_AUTHORITY_EVIDENCE_TYPE: "CR",
- SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY: createPdfAttachment("alice-cr"),
+ SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY:
+ createPdfAttachment("alice-cr"),
},
{
FULL_NAME: "Charlie Brown",
DOMICILE_ADDRESS: "Park Ave. 20\n8002 Zurich",
DATE_OF_BIRTH: "1975-08-22",
NATIONALITY: "DE",
- PERSONAL_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("charlie-id"),
+ PERSONAL_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("charlie-id"),
SIGNING_AUTHORITY_TYPE: "COLLECTIVE_TWO",
SIGNING_AUTHORITY_EVIDENCE_TYPE: "MANDATE",
- SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY: createPdfAttachment("charlie-mandate"),
+ SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY:
+ createPdfAttachment("charlie-mandate"),
},
{
FULL_NAME: "Diana Prince",
DOMICILE_ADDRESS: "Lake Road 30\n8003 Zurich",
DATE_OF_BIRTH: "1985-12-01",
NATIONALITY: "US",
- PERSONAL_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("diana-id"),
+ PERSONAL_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("diana-id"),
SIGNING_AUTHORITY_TYPE: "OTHER",
SIGNING_AUTHORITY_EVIDENCE_TYPE: "OTHER",
SIGNING_AUTHORITY_EVIDENCE_OTHER: "Board Resolution",
- SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY: createPdfAttachment("diana-resolution"),
+ SIGNING_AUTHORITY_EVIDENCE_DOCUMENT_COPY:
+ createPdfAttachment("diana-resolution"),
},
],
CORRESPONDENCE_LANGUAGE: "en",
@@ -173,7 +176,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
CONTACT_EMAIL: "john.doe@example.com",
DATE_OF_BIRTH: "1990-03-12",
NATIONALITY: "CH",
- PERSONAL_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("john-passport"),
+ PERSONAL_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("john-passport"),
CUSTOMER_IS_SOLE_PROPRIETOR: false,
CORRESPONDENCE_LANGUAGE: "de",
CUSTOMER_TYPE_VQF: "NATURAL",
@@ -208,7 +212,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
CUSTOMER_IS_SOLE_PROPRIETOR: true,
COMPANY_NAME: "Smith Consulting GmbH",
REGISTERED_OFFICE_ADDRESS: "Business Park 3\n8021 Zurich",
- LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY: createPdfAttachment("smith-biz-reg"),
+ LEGAL_ENTITY_IDENTIFICATION_DOCUMENT_COPY:
+ createPdfAttachment("smith-biz-reg"),
CORRESPONDENCE_LANGUAGE: "fr",
CUSTOMER_TYPE_VQF: "OTHER",
});
@@ -226,8 +231,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_1_officer form
- if (false) // FIXME: Dold
- {
+ if (false) {
+ // FIXME: Dold
await decideMeasure("kyx");
await submitForm("vqf_902_1_officer", {
FORM_ID: "vqf_902_1_officer",
@@ -265,8 +270,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_1_officer form with LISTED terrorism check
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_1_officer", {
FORM_ID: "vqf_902_1_officer",
@@ -276,7 +281,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
ACCEPTANCE_FURTHER_INFO: "Authenticated copy received via postal service",
EMBARGO_TERRORISM_CHECK_RESULT: "LISTED",
EMBARGO_TERRORISM_CHECK_DATE: "2025-12-02",
- EMBARGO_TERRORISM_INFO: "Name match found on sanctions list - requires further investigation",
+ EMBARGO_TERRORISM_INFO:
+ "Name match found on sanctions list - requires further investigation",
SUPPLEMENTAL_FILES_LIST: [
{
FILE: createPdfAttachment("sanctions-report"),
@@ -305,8 +311,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_4 form - without PEP or high risk
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx"); // FIXME: which measure?
await submitForm("vqf_902_4", {
FORM_ID: "vqf_902_4",
@@ -315,7 +321,10 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
PEP_DOMESTIC: false,
PEP_INTERNATIONAL_ORGANIZATION: false,
HIGH_RISK_COUNTRY: false,
- COUNTRY_RISK_NATIONALITY_TYPE: ["NATIONALITY_CUSTOMER", "DOMICILE_CUSTOMER"],
+ COUNTRY_RISK_NATIONALITY_TYPE: [
+ "NATIONALITY_CUSTOMER",
+ "DOMICILE_CUSTOMER",
+ ],
COUNTRY_RISK_NATIONALITY_LEVEL: "LOW",
COUNTRY_RISK_BUSINESS_TYPE: ["CUSTOMER"],
COUNTRY_RISK_BUSINESS_LEVEL: "LOW",
@@ -323,7 +332,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
INDUSTRY_RISK_TYPE: "CUSTOMER",
INDUSTRY_RISK_LEVEL: "TRANSPARENT",
CONTACT_RISK_LEVEL: "LOW",
- RISK_RATIONALE: "Customer is well-known local business with transparent operations",
+ RISK_RATIONALE:
+ "Customer is well-known local business with transparent operations",
RISK_CLASSIFICATION_LEVEL: "NO_HIGH_RISK",
});
@@ -339,8 +349,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_4 form - with PEP and high risk
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_4", {
FORM_ID: "vqf_902_4",
@@ -364,7 +374,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
INDUSTRY_RISK_TYPE: "CUSTOMER",
INDUSTRY_RISK_LEVEL: "HIGH_RISK_TRADE",
CONTACT_RISK_LEVEL: "HIGH",
- RISK_RATIONALE: "Customer is foreign PEP with connections to high-risk jurisdictions. Enhanced due diligence applied.",
+ RISK_RATIONALE:
+ "Customer is foreign PEP with connections to high-risk jurisdictions. Enhanced due diligence applied.",
RISK_CLASSIFICATION_LEVEL: "HIGH_RISK",
});
await expectInvestigate();
@@ -381,26 +392,36 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_5 form - with SAVINGS origin
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await expectNoInvestigate();
await submitForm("vqf_902_5", {
FORM_ID: "vqf_902_5",
FORM_VERSION: 1,
- BIZREL_PROFESSION: "Software Engineer at Tech Company\nPreviously worked as IT Consultant\n15 years experience",
- BIZREL_FINANCIAL_CIRCUMSTANCES: "Annual income: CHF 120,000\nTotal assets: CHF 500,000\nNo significant liabilities",
- BIZREL_ORIGIN_NATURE: "Cash deposits and investment returns\nAmount: CHF 200,000\nCurrency: CHF",
+ BIZREL_PROFESSION:
+ "Software Engineer at Tech Company\nPreviously worked as IT Consultant\n15 years experience",
+ BIZREL_FINANCIAL_CIRCUMSTANCES:
+ "Annual income: CHF 120,000\nTotal assets: CHF 500,000\nNo significant liabilities",
+ BIZREL_ORIGIN_NATURE:
+ "Cash deposits and investment returns\nAmount: CHF 200,000\nCurrency: CHF",
BIZREL_ORIGIN_CATEGORY: ["SAVINGS", "OWN_BUSINESS"],
- BIZREL_ORIGIN_DETAIL: "Accumulated savings from employment over 10 years. Additional income from freelance software consulting projects.",
- BIZREL_PURPOSE: "Investment account for long-term wealth management and retirement planning",
- BIZREL_DEVELOPMENT: "Expect regular monthly deposits of CHF 3,000-5,000. Occasional larger deposits from consulting projects.",
- BIZREL_FINANCIAL_VOLUME: "Average monthly volume: CHF 4,000. Expected annual growth of 10-15%.",
+ BIZREL_ORIGIN_DETAIL:
+ "Accumulated savings from employment over 10 years. Additional income from freelance software consulting projects.",
+ BIZREL_PURPOSE:
+ "Investment account for long-term wealth management and retirement planning",
+ BIZREL_DEVELOPMENT:
+ "Expect regular monthly deposits of CHF 3,000-5,000. Occasional larger deposits from consulting projects.",
+ BIZREL_FINANCIAL_VOLUME:
+ "Average monthly volume: CHF 4,000. Expected annual growth of 10-15%.",
BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: "Self (account holder)",
- BIZREL_THIRDPARTY_RELATIONSHIP: "No third parties involved. Account holder is sole beneficial owner.",
+ BIZREL_THIRDPARTY_RELATIONSHIP:
+ "No third parties involved. Account holder is sole beneficial owner.",
BIZREL_THIRDPARTY_AMLA_FILES: "None",
- BIZREL_THIRDPARTY_REFERENCES: "Introduced by existing client Marcus Weber, Account #CH-12345",
- BIZREL_FURTHER_INFO: "Customer has been transparent about income sources. All documentation verified.",
+ BIZREL_THIRDPARTY_REFERENCES:
+ "Introduced by existing client Marcus Weber, Account #CH-12345",
+ BIZREL_FURTHER_INFO:
+ "Customer has been transparent about income sources. All documentation verified.",
});
await expectInvestigate();
@@ -416,27 +437,37 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_5 form - with INHERITANCE and OTHER origin
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await expectNoInvestigate();
await submitForm("vqf_902_5", {
FORM_ID: "vqf_902_5",
FORM_VERSION: 1,
- BIZREL_PROFESSION: "Retired business owner\nFormer CEO of manufacturing company\nRetired since 2020",
- BIZREL_FINANCIAL_CIRCUMSTANCES: "Pension income: CHF 80,000 per year\nTotal net worth: CHF 2,500,000\nNo debt",
- BIZREL_ORIGIN_NATURE: "Inheritance and business sale proceeds\nAmount: CHF 1,500,000\nCurrency: CHF and EUR",
+ BIZREL_PROFESSION:
+ "Retired business owner\nFormer CEO of manufacturing company\nRetired since 2020",
+ BIZREL_FINANCIAL_CIRCUMSTANCES:
+ "Pension income: CHF 80,000 per year\nTotal net worth: CHF 2,500,000\nNo debt",
+ BIZREL_ORIGIN_NATURE:
+ "Inheritance and business sale proceeds\nAmount: CHF 1,500,000\nCurrency: CHF and EUR",
BIZREL_ORIGIN_CATEGORY: ["INHERITANCE", "OTHER"],
BIZREL_ORIGIN_CATEGORY_OTHER: "Sale of family business in 2020",
- BIZREL_ORIGIN_DETAIL: "CHF 800,000 from inheritance after parents' estate settlement in 2019. CHF 700,000 from sale of 60% stake in family manufacturing business to private equity firm.",
+ BIZREL_ORIGIN_DETAIL:
+ "CHF 800,000 from inheritance after parents' estate settlement in 2019. CHF 700,000 from sale of 60% stake in family manufacturing business to private equity firm.",
BIZREL_PURPOSE: "Wealth preservation and estate planning for children",
- BIZREL_DEVELOPMENT: "Minimal transaction activity expected. Quarterly dividend reinvestment.",
- BIZREL_FINANCIAL_VOLUME: "Low volume - primarily passive investment portfolio",
- BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME: "Account holder and designated heirs: Maria Schmidt, Thomas Schmidt",
- BIZREL_THIRDPARTY_RELATIONSHIP: "Trust arrangement for benefit of children listed above",
+ BIZREL_DEVELOPMENT:
+ "Minimal transaction activity expected. Quarterly dividend reinvestment.",
+ BIZREL_FINANCIAL_VOLUME:
+ "Low volume - primarily passive investment portfolio",
+ BIZREL_FINANCIAL_BENEFICIARIES_FULL_NAME:
+ "Account holder and designated heirs: Maria Schmidt, Thomas Schmidt",
+ BIZREL_THIRDPARTY_RELATIONSHIP:
+ "Trust arrangement for benefit of children listed above",
BIZREL_THIRDPARTY_AMLA_FILES: "Linked to estate file #EST-2019-445",
- BIZREL_THIRDPARTY_REFERENCES: "Legal advisor: Dr. Hans Mueller, Zurich Law Firm",
- BIZREL_FURTHER_INFO: "Estate documentation and business sale agreement on file. All sources verified through notarized documents.",
+ BIZREL_THIRDPARTY_REFERENCES:
+ "Legal advisor: Dr. Hans Mueller, Zurich Law Firm",
+ BIZREL_FURTHER_INFO:
+ "Estate documentation and business sale agreement on file. All sources verified through notarized documents.",
});
await expectInvestigate();
@@ -452,14 +483,15 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_9_customer form
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await expectNoInvestigate();
await submitForm("vqf_902_9_customer", {
FORM_ID: "vqf_902_9_customer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Global Trading Ltd.\nCommerce Street 45\n8050 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Global Trading Ltd.\nCommerce Street 45\n8050 Zurich",
IDENTITY_LIST: [
{
FULL_NAME: "Michael Anderson",
@@ -497,13 +529,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_9_officer form
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_9_officer", {
FORM_ID: "vqf_902_9_officer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Tech Innovations AG\nInnovation Park 12\n8060 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Tech Innovations AG\nInnovation Park 12\n8060 Zurich",
IDENTITY_LIST: [
{
FULL_NAME: "Emma Thompson",
@@ -539,13 +572,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_11_customer form - HAS_25_MORE_RIGHTS variant, without third party
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_11_customer", {
FORM_ID: "vqf_902_11_customer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Manufacturing Solutions Ltd.\nIndustrial Zone 78\n8070 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Manufacturing Solutions Ltd.\nIndustrial Zone 78\n8070 Zurich",
CONTROL_REASON: "HAS_25_MORE_RIGHTS",
IDENTITY_LIST: [
{
@@ -578,13 +612,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_11_customer form - OTHER_WAY variant, with third party
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_11_customer", {
FORM_ID: "vqf_902_11_customer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Service Holdings AG\nService Center 90\n8080 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Service Holdings AG\nService Center 90\n8080 Zurich",
CONTROL_REASON: "OTHER_WAY",
IDENTITY_LIST: [
{
@@ -617,13 +652,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_11_customer form - DIRECTOR variant
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_11_customer", {
FORM_ID: "vqf_902_11_customer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Consulting Partners GmbH\nConsulting Tower 5\n8090 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Consulting Partners GmbH\nConsulting Tower 5\n8090 Zurich",
CONTROL_REASON: "DIRECTOR",
IDENTITY_LIST: [
{
@@ -656,13 +692,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_11_officer form - HAS_25_MORE_RIGHTS variant
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_11_officer", {
FORM_ID: "vqf_902_11_officer",
FORM_VERSION: 1,
- IDENTITY_CONTRACTING_PARTNER: "Investment Group SA\nFinance District 101\n8100 Zurich",
+ IDENTITY_CONTRACTING_PARTNER:
+ "Investment Group SA\nFinance District 101\n8100 Zurich",
CONTROL_REASON: "HAS_25_MORE_RIGHTS",
IDENTITY_LIST: [
{
@@ -694,16 +731,19 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_14 form - NO_SUSPICION result
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_14", {
FORM_ID: "vqf_902_14",
FORM_VERSION: 1,
- INCRISK_REASON: "Large cash deposit of CHF 50,000 triggered monitoring alert. Customer explanation requested.",
+ INCRISK_REASON:
+ "Large cash deposit of CHF 50,000 triggered monitoring alert. Customer explanation requested.",
INCRISK_MEANS: "GATHERING",
- INCRISK_SUMMARY: "Customer provided proof of property sale. Documentation includes notarized sales agreement and bank transfer records. All information is consistent and plausible.",
- INCRISK_DOCUMENTS: "Property sales agreement (notarized), Bank transfer confirmation, Tax declaration",
+ INCRISK_SUMMARY:
+ "Customer provided proof of property sale. Documentation includes notarized sales agreement and bank transfer records. All information is consistent and plausible.",
+ INCRISK_DOCUMENTS:
+ "Property sales agreement (notarized), Bank transfer confirmation, Tax declaration",
INCRISK_RESULT: "NO_SUSPICION",
});
@@ -719,17 +759,20 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_14 form - SUBSTANTIATED_SUSPICION result
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await expectNoInvestigate();
await submitForm("vqf_902_14", {
FORM_ID: "vqf_902_14",
FORM_VERSION: 1,
- INCRISK_REASON: "Multiple transactions to high-risk jurisdictions. Inconsistent explanations provided. Transaction patterns suggest possible structuring.",
+ INCRISK_REASON:
+ "Multiple transactions to high-risk jurisdictions. Inconsistent explanations provided. Transaction patterns suggest possible structuring.",
INCRISK_MEANS: "CONSULTATION",
- INCRISK_SUMMARY: "Customer's stated business activity does not align with transaction patterns. Multiple red flags identified including: (1) transactions just below reporting threshold, (2) payments to shell companies in offshore jurisdictions, (3) inconsistent business documentation.",
- INCRISK_DOCUMENTS: "Transaction logs, Customer interviews, Public records search, Third-party database checks",
+ INCRISK_SUMMARY:
+ "Customer's stated business activity does not align with transaction patterns. Multiple red flags identified including: (1) transactions just below reporting threshold, (2) payments to shell companies in offshore jurisdictions, (3) inconsistent business documentation.",
+ INCRISK_DOCUMENTS:
+ "Transaction logs, Customer interviews, Public records search, Third-party database checks",
INCRISK_RESULT: "SUBSTANTIATED_SUSPICION",
});
@@ -745,19 +788,24 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test vqf_902_14 form - OTHER result with explanation
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("vqf_902_14", {
FORM_ID: "vqf_902_14",
FORM_VERSION: 1,
- INCRISK_REASON: "Unusual activity pattern detected. Customer requested clarification on enhanced monitoring procedures.",
+ INCRISK_REASON:
+ "Unusual activity pattern detected. Customer requested clarification on enhanced monitoring procedures.",
INCRISK_MEANS: "OTHER",
- INCRISK_MEANS_OTHER: "Video conference with customer and legal counsel, review of corporate governance documents, consultation with external compliance specialist",
- INCRISK_SUMMARY: "Customer is undergoing corporate restructuring. Increased transaction volume is temporary and related to merger activity. All parties have been identified and verified.",
- INCRISK_DOCUMENTS: "Merger agreement, Board resolutions, Legal opinions, Updated beneficial ownership structure",
+ INCRISK_MEANS_OTHER:
+ "Video conference with customer and legal counsel, review of corporate governance documents, consultation with external compliance specialist",
+ INCRISK_SUMMARY:
+ "Customer is undergoing corporate restructuring. Increased transaction volume is temporary and related to merger activity. All parties have been identified and verified.",
+ INCRISK_DOCUMENTS:
+ "Merger agreement, Board resolutions, Legal opinions, Updated beneficial ownership structure",
INCRISK_RESULT: "OTHER",
- INCRISK_RESULT_OTHER: "Enhanced monitoring period established - 6-month review cycle with quarterly reporting requirements",
+ INCRISK_RESULT_OTHER:
+ "Enhanced monitoring period established - 6-month review cycle with quarterly reporting requirements",
});
const res = succeedOrThrow(
@@ -772,13 +820,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test generic_note form
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("generic_note", {
FORM_ID: "generic_note",
FORM_VERSION: 1,
- NOTE_TEXT: "Follow-up meeting held with customer regarding recent transaction patterns. Customer provided satisfactory explanations and supporting documentation. No further concerns at this time.",
+ NOTE_TEXT:
+ "Follow-up meeting held with customer regarding recent transaction patterns. Customer provided satisfactory explanations and supporting documentation. No further concerns at this time.",
SUPPLEMENTAL_FILES_LIST: [
{
DESCRIPTION: "Meeting minutes from customer interview",
@@ -807,13 +856,14 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test generic_upload form
- if (false) // FIXME: dold
- {
+ if (false) {
+ // FIXME: dold
await decideMeasure("kyx");
await submitForm("generic_upload", {
FORM_ID: "generic_upload",
FORM_VERSION: 1,
- NOTE_TEXT: "Customer requested to upload current business license and updated company registry extract as part of periodic review.",
+ NOTE_TEXT:
+ "Customer requested to upload current business license and updated company registry extract as part of periodic review.",
FILE: createPdfAttachment("business-license-2025"),
});
@@ -850,8 +900,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test challenger-postal form
- if (false) // FIXME: Dold: This is not exactly a 'form'. How to submit?
- {
+ if (false) {
+ // FIXME: Dold: This is not exactly a 'form'. How to submit?
await decideMeasure("postal-registration");
await submitForm("challenger-postal", {
FORM_ID: "challenger-postal",
@@ -873,8 +923,8 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
// Test challenger-sms form
- if (false) // FIXME: Dold: This is not exactly a 'form'. How to submit?
- {
+ if (false) {
+ // FIXME: Dold: This is not exactly a 'form'. How to submit?
await decideMeasure("sms-registration");
await submitForm("challenger-sms", {
FORM_ID: "challenger-sms",
@@ -928,4 +978,4 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) {
}
}
-runTopsAmlPdfTest.suites = ["wallet"];
-\ No newline at end of file
+runTopsAmlPdfTest.suites = ["exchange"];