taler-typescript-core

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

commit b16e687faf720c8996262352964d7f562388682a
parent 3810ab3f6f8bec9f390bc1d2c9b16566d7397003
Author: Florian Dold <dold@taler.net>
Date:   Mon, 31 Aug 2026 22:13:43 +0200

taler-harness: exercise foundation and trust PDF exports

Diffstat:
Mpackages/taler-harness/src/harness/tops.ts | 54++++++++++++++++++++++++------------------------------
Mpackages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 145 insertions(+), 30 deletions(-)

diff --git a/packages/taler-harness/src/harness/tops.ts b/packages/taler-harness/src/harness/tops.ts @@ -250,19 +250,17 @@ PROGRAM = tops-check-controlling-entity VOLUNTARY = NO CONTEXT = {} -# FIXME: #9825 -#[kyc-measure-form-vqf-902.12] -#CHECK_NAME = form-vqf-902.12 -#PROGRAM = preserve-investigate -#VOLUNTARY = NO -#CONTEXT = {} +[kyc-measure-form-vqf-902.12] +CHECK_NAME = form-vqf-902.12 +PROGRAM = preserve-investigate +VOLUNTARY = NO +CONTEXT = {} -# FIXME: #9827 -#[kyc-measure-form-vqf-902.13] -#CHECK_NAME = form-vqf-902.13 -#PROGRAM = preserve-investigate -#VOLUNTARY = NO -#CONTEXT = {} +[kyc-measure-form-vqf-902.13] +CHECK_NAME = form-vqf-902.13 +PROGRAM = preserve-investigate +VOLUNTARY = NO +CONTEXT = {} # FIXME: #9826 #[kyc-measure-form-vqf-902.15] @@ -370,25 +368,21 @@ DESCRIPTION_I18N = {"de":"Formular VQF 902.11 hochladen"} OUTPUTS = IDENTITY_CONTRACTING_PARTNER CONTROL_REASON IDENTITY_LIST THIRD_PARTY_OWNERSHIP FALLBACK = preserve-investigate -#[kyc-check-form-vqf-902.12] -#TYPE = FORM -# FIXME #9025: This form will not be supported for the TOPS MVP -#FORM_NAME = vqf_902_12 -#DESCRIPTION = "Supply VQF form 902.12" -#DESCRIPTION_I18N = {"de":"Formular VQF 902.12 hochladen"} -# FIXME: list correct outputs for each form here (and update GANA) -#OUTPUTS = LEGAL_ENTITY_TYPE -#FALLBACK = preserve-investigate +[kyc-check-form-vqf-902.12] +TYPE = FORM +FORM_NAME = vqf_902_12 +DESCRIPTION = "Supply VQF form 902.12" +DESCRIPTION_I18N = {"de":"Formular VQF 902.12 hochladen"} +OUTPUTS = IDENTITY_CONTRACTING_PARTNER LEGAL_STRUCTURE_NAME LEGAL_STRUCTURE_TYPE LEGAL_STRUCTURE_REVOCABILITY ORIGINATOR_LIST ORIGINATOR_HAS_REVOCATION_RIGHT PREDECESSOR_ORIGINATOR_LIST BENEFICIARY_LIST BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM BENEFICIARY_GROUPS FURTHER_PERSON_LIST FURTHER_PERSON_HAS_REVOCATION_RIGHT SIGNATURE SIGN_DATE +FALLBACK = preserve-investigate -#[kyc-check-form-vqf-902.13] -#TYPE = FORM -# FIXME: #9827 : This form will not be supported for the TOPS MVP -#FORM_NAME = vqf_902_13 -#DESCRIPTION = "Supply VQF form 902.13" -#DESCRIPTION_I18N = {"de":"Formular VQF 902.13 hochladen"} -# FIXME: list correct outputs for each form here (and update GANA) -#OUTPUTS = LEGAL_ENTITY_TYPE -#FALLBACK = preserve-investigate +[kyc-check-form-vqf-902.13] +TYPE = FORM +FORM_NAME = vqf_902_13 +DESCRIPTION = "Supply VQF form 902.13" +DESCRIPTION_I18N = {"de":"Formular VQF 902.13 hochladen"} +OUTPUTS = IDENTITY_CONTRACTING_PARTNER LEGAL_STRUCTURE_NAME LEGAL_STRUCTURE_TYPE LEGAL_STRUCTURE_REVOCABILITY ORIGINATOR_LIST ORIGINATOR_HAS_REVOCATION_RIGHT PREDECESSOR_ORIGINATOR_LIST BENEFICIARY_LIST BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM BENEFICIARY_GROUPS PROTECTOR_LIST PROTECTOR_HAS_REVOCATION_RIGHT FURTHER_PERSON_LIST FURTHER_PERSON_HAS_REVOCATION_RIGHT SIGNATURE SIGN_DATE +FALLBACK = preserve-investigate #[kyc-check-form-vqf-902.15] #TYPE = FORM diff --git a/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts b/packages/taler-harness/src/integrationtests/test-tops-aml-pdf.ts @@ -591,6 +591,127 @@ export async function runTopsAmlPdfTest(t: GlobalTestState) { }); } + // Test vqf_902_12 foundation declaration + { + await decideMeasure("form-vqf-902.12"); + await submitForm("vqf_902_12", { + FORM_ID: "vqf_902_12", + FORM_VERSION: 1, + IDENTITY_CONTRACTING_PARTNER: + "Foundation Board AG\nExample Street 1\n8001 Zurich", + LEGAL_STRUCTURE_NAME: "Example Foundation", + LEGAL_STRUCTURE_TYPE: "DISCRETIONARY", + LEGAL_STRUCTURE_REVOCABILITY: "REVOCABLE", + ORIGINATOR_LIST: [ + { + NAME_OR_ENTITY: "John Doe", + DOMICILE_OR_REGISTERED_OFFICE: "Main St 123\n8001 Zurich", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1950-01-01", + NATIONALITY: "CH", + }, + ], + ORIGINATOR_HAS_REVOCATION_RIGHT: true, + PREDECESSOR_ORIGINATOR_LIST: [ + { + NAME_OR_ENTITY: "Predecessor Founder Ltd.", + DOMICILE_OR_REGISTERED_OFFICE: "Old Road 4\n9490 Vaduz", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "LI", + }, + ], + BENEFICIARY_LIST: [ + { + NAME_OR_ENTITY: "Jane Beneficiary", + DOMICILE_OR_REGISTERED_OFFICE: "Lake Road 5\n6000 Lucerne", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1985-06-15", + NATIONALITY: "CH", + }, + ], + BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM: false, + BENEFICIARY_GROUPS: "Descendants of John Doe", + FURTHER_PERSON_LIST: [ + { + NAME_OR_ENTITY: "Alex Nominator", + DOMICILE_OR_REGISTERED_OFFICE: "Board Street 7\n8002 Zurich", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1975-02-20", + NATIONALITY: "CH", + }, + ], + FURTHER_PERSON_HAS_REVOCATION_RIGHT: true, + SIGNATURE: "Board Member", + SIGN_DATE: "2026-08-31", + }); + } + + // Test vqf_902_13 trust declaration + { + await decideMeasure("form-vqf-902.13"); + await submitForm("vqf_902_13", { + FORM_ID: "vqf_902_13", + FORM_VERSION: 1, + IDENTITY_CONTRACTING_PARTNER: + "Trustee Company AG\nExample Street 1\n8001 Zurich", + LEGAL_STRUCTURE_NAME: "Example Trust", + LEGAL_STRUCTURE_TYPE: "DISCRETIONARY", + LEGAL_STRUCTURE_REVOCABILITY: "REVOCABLE", + ORIGINATOR_LIST: [ + { + NAME_OR_ENTITY: "Jane Smith", + DOMICILE_OR_REGISTERED_OFFICE: "Main St 123\n8001 Zurich", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1955-01-01", + NATIONALITY: "CH", + }, + ], + ORIGINATOR_HAS_REVOCATION_RIGHT: false, + PREDECESSOR_ORIGINATOR_LIST: [ + { + NAME_OR_ENTITY: "Original Settlor", + DOMICILE_OR_REGISTERED_OFFICE: "Old Lane 2\n1000 Lausanne", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1935-03-12", + NATIONALITY: "CH", + DATE_OF_DEATH: "2015-04-01", + }, + ], + BENEFICIARY_LIST: [ + { + NAME_OR_ENTITY: "Taylor Beneficiary", + DOMICILE_OR_REGISTERED_OFFICE: "River Road 3\n3000 Bern", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1990-07-10", + NATIONALITY: "CH", + }, + ], + BENEFICIARIES_HAVE_DISTRIBUTION_CLAIM: true, + BENEFICIARY_GROUPS: "Descendants of Jane Smith", + PROTECTOR_LIST: [ + { + NAME_OR_ENTITY: "Pat Protector", + DOMICILE_OR_REGISTERED_OFFICE: "Hill Street 4\n4051 Basel", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1970-09-08", + NATIONALITY: "CH", + }, + ], + PROTECTOR_HAS_REVOCATION_RIGHT: true, + FURTHER_PERSON_LIST: [ + { + NAME_OR_ENTITY: "Robin Appointer", + DOMICILE_OR_REGISTERED_OFFICE: "Trust Avenue 8\n8004 Zurich", + DOMICILE_OR_REGISTERED_OFFICE_COUNTRY: "CH", + DATE_OF_BIRTH: "1968-11-30", + NATIONALITY: "CH", + }, + ], + FURTHER_PERSON_HAS_REVOCATION_RIGHT: false, + SIGNATURE: "Trustee", + SIGN_DATE: "2026-08-31", + }); + } + // Test vqf_902_14 form - NO_SUSPICION result { await submitOfficerForm("vqf_902_14", {