robocop

Checks KYC attributes against sanction lists
Log | Files | Refs | Submodules | README | LICENSE

commit ecdd5e585a391e0830b4d91d1128b63da41e546d
parent 84eafd9f250d409a4406cb077ecb483d004c1b94
Author: Gust Leenaars <gl.nlnet@leenaa.rs>
Date:   Sun,  4 May 2025 19:17:16 +0200

Add tests

Diffstat:
Mtest/Tests/Check.hs | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Atest/data/target_43616.xml | 32++++++++++++++++++++++++++++++++
Atest/data/target_43641.xml | 33+++++++++++++++++++++++++++++++++
Atest/data/target_43662.xml | 32++++++++++++++++++++++++++++++++
Atest/data/target_43718.xml | 33+++++++++++++++++++++++++++++++++
5 files changed, 216 insertions(+), 2 deletions(-)

diff --git a/test/Tests/Check.hs b/test/Tests/Check.hs @@ -99,6 +99,10 @@ personTests map_ind = testGroup "Individuals" , testTarget False 5266 target_5266 map_ind $ distribution 0 0 0 125 0 0.5 , testTarget False 49816 target_49816 map_ind $ distribution 0 100 0 125 0 0.75 , testTarget False 43462 target_43462 map_ind $ distribution 0 100 0 125 0 0.75 + , testTarget False 43616 target_43616 map_ind $ distribution 0 0 0 125 0 0.75 + , testTarget False 43641 target_43641 map_ind $ distribution 0 100 0 125 0 0.75 + , testTarget False 43718 target_43718 map_ind $ distribution 0 100 0 125 0 0.75 + , testTarget False 43662 target_43662 map_ind $ distribution 0 100 0 125 0 0.75 ] , testGroup "Public and imaginary figures" [ testTrusted False public_figure_1 map_ind "Hergé" @@ -158,7 +162,7 @@ target_5266 :: NaturalPerson target_5266 = NaturalPerson { full_name = "Natallia Alexeeuna Chatviartkova" , last_name = "Chatviartkova" - , birthdate = YearMonthDay 1960 01 01 + , birthdate = YearMonthDay 1960 01 01 -- Made up birth date , nationality = RU , national_id = "012345ABCDEF" , residential = GLS.Address { GLS.country = RU @@ -167,7 +171,7 @@ target_5266 = NaturalPerson , GLS.lines = Nothing , building_name = Nothing , building_number = Nothing - , zipcode = "220029" + , zipcode = "Non existent" , town_location = Nothing , town_district = Nothing , country_subdivision = Nothing @@ -214,6 +218,86 @@ target_43462 = NaturalPerson } } +target_43616 :: NaturalPerson +target_43616 = NaturalPerson + { full_name = "Oleg Anatolievich Chernyshev" + , last_name = "Chernyshev" + , birthdate = YearMonthDay 1985 07 27 -- Made up birth date + , nationality = RU + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = RU + , street_name = "Non existent" + , street_number = "Non existent" + , GLS.lines = Nothing + , building_name = Nothing + , building_number = Nothing + , zipcode = "Non existent" + , town_location = Nothing + , town_district = Nothing + , country_subdivision = Nothing + } + } + +target_43641 :: NaturalPerson +target_43641 = NaturalPerson + { full_name = "Vadzim Dzmitryevich Ipatau" + , last_name = "Ipatau" + , birthdate = YearMonthDay 1964 10 30 + , nationality = BY + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = BY + , street_name = "Non existent" + , street_number = "Non existent" + , GLS.lines = Nothing + , building_name = Nothing + , building_number = Nothing + , zipcode = "Non existent" + , town_location = Nothing + , town_district = Nothing + , country_subdivision = Nothing + } + } + +target_43718 :: NaturalPerson +target_43718 = NaturalPerson + { full_name = "Irina Aliaksandrauna Tselikavets" + , last_name = "Tselikavets" + , birthdate = YearMonthDay 1976 11 02 + , nationality = BY + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = BY + , street_name = "Non existent" + , street_number = "Non existent" + , GLS.lines = Nothing + , building_name = Nothing + , building_number = Nothing + , zipcode = "Non existent" + , town_location = Nothing + , town_district = Nothing + , country_subdivision = Nothing + } + } + +target_43662 :: NaturalPerson +target_43662 = NaturalPerson + { full_name = "Olga Leonidovna Doroshenko" + , last_name = "Doroshenko" + , birthdate = YearMonthDay 1976 09 02 -- Made up birth month and day + , nationality = BY + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = BY + , street_name = "Non existent" + , street_number = "Non existent" + , GLS.lines = Nothing + , building_name = Nothing + , building_number = Nothing + , zipcode = "Non existent" + , town_location = Nothing + , town_district = Nothing + , country_subdivision = Nothing + } + } + public_figure_1 :: NaturalPerson public_figure_1 = NaturalPerson { full_name = "Georges Prosper Remi" diff --git a/test/data/target_43616.xml b/test/data/target_43616.xml @@ -0,0 +1,32 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="43614"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="43616" main="true"> + <name ssid="43617" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Charnyshou</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Chernyshev</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">ЧАРНЫШОЎ</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">ЧЕРНЫШЁВ</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Alieg</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Oleg</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Алег</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Олег</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Anatolevich</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Anatolievich</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Анатольевiч</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Анатольевич</spelling-variant> + </name-part> + </name> + </identity> + <justification ssid="49853">In his former leadership position as Deputy Chairman of the State Security Committee (KGB), he was responsible for the participation of the KGB in the repression and intimidation campaign in the wake of the 2020 presidential election, in particular arbitrary arrests and ill-treatment, including torture, of peaceful demonstrators and opposition members. He remains active in the Lukashenka regime as Deputy Chairman of the Presidium of the National Academy of Sciences.</justification> + <other-information ssid="49854">Former Deputy Chairman of the State Security Committee (KGB); Deputy Chairman of the Presidium of the National Academy of Sciences</other-information> + <other-information ssid="49855">Rank: Major-General</other-information> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_43641.xml b/test/data/target_43641.xml @@ -0,0 +1,33 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="43636"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="43641" main="true"> + <name ssid="43644" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Ipatau</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Ipatov</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">IПАТАЎ</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">ИПАТОВ</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Vadzim</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Vadim</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Вадзiм</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Вадим</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Dzmitryevich</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Dmitrievich</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Дзмiтрыевiч</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Дмитриевич</spelling-variant> + </name-part> + </name> + <day-month-year ssid="43642" day="30" month="10" year="1964" calendar="Gregorian" quality="good"/> + <place-of-birth ssid="44751" place-id="44750" quality="good"/> + </identity> + <justification ssid="44688">As Deputy Chairman of the CEC, he is responsible for its misconduct of the 2020 presidential electoral process, its non-compliance with basic international standards of fairness and transparency and its falsification of election results. The CEC and its leadership have, in particular, organised the dismissal of certain opposition candidates on spurious grounds and placed disproportionate restrictions on observers in polling stations. The CEC has also ensured that the election commissions under its supervision are composed in a biased manner.</justification> + <other-information ssid="43639">Deputy Chairman of the Central Electoral Commission (CEC)</other-information> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_43662.xml b/test/data/target_43662.xml @@ -0,0 +1,32 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="43659"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="43662" main="true"> + <name ssid="43664" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Darashenka</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Doroshenko</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">ДАРАШЭНКА</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">ДОРОШЕНКО</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Volga</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Olga</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Вольга</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Ольга</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Leanidauna</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Leonidovna</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Леанiдаўна</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Леонидовна</spelling-variant> + </name-part> + </name> + <day-month-year ssid="43663" year="1976" calendar="Gregorian" quality="good"/> + </identity> + <justification ssid="44691">As a member of the CEC college, she is responsible for its misconduct of the 2020 presidential electoral process, its non-compliance with basic international standards of fairness and transparency and its falsification of election results. The CEC and its college have, in particular, organised the dismissal of certain opposition candidates on spurious grounds and placed disproportionate restrictions on observers in polling stations. The CEC has also ensured that the election commissions under its supervision are composed in a biased manner.</justification> + <other-information ssid="43665">Member of the Central Electoral Commission (CEC)</other-information> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_43718.xml b/test/data/target_43718.xml @@ -0,0 +1,33 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="43713"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="43718" main="true"> + <name ssid="43721" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Tselikavets</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Tselikovec</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">ЦЭЛIКАВЕЦ</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">ЦЕЛИКОВЕЦ</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Irina</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Irina</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Iрына</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Ирина</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Aliaksandrauna</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Alexandrovna</spelling-variant> + <spelling-variant lang="BEL" script="CYRL" spelling-variant-type="not-defined">Аляксандраўна</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Александровна</spelling-variant> + </name-part> + </name> + <day-month-year ssid="43719" day="2" month="11" year="1976" calendar="Gregorian" quality="good"/> + <place-of-birth ssid="43720" place-id="43717" quality="good"/> + </identity> + <justification ssid="73940">In her former position as a member of the CEC college, she was responsible for its misconduct in the 2020 presidential electoral process, its non-compliance with basic international standards of fairness and transparency and its falsification of election results. The CEC and its college have, in particular, organised the dismissal of certain opposition candidates on spurious grounds and placed disproportionate restrictions on observers in polling stations. The CEC has also ensured that the election commissions under its supervision are composed in a biased manner.</justification> + <other-information ssid="73941">Former Member of the Central Electoral Commission (CEC)</other-information> + </individual> + </target> +</swiss-sanctions-list>