robocop

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

commit 88c9fdf95fd5e6554badcb1c008e0fabcb7a9a40
parent ecdd5e585a391e0830b4d91d1128b63da41e546d
Author: Gust Leenaars <gl.nlnet@leenaa.rs>
Date:   Sun,  4 May 2025 21:35:41 +0200

Add more tests

Diffstat:
Mtest/Tests/Check.hs | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/data/target_29723.xml | 34++++++++++++++++++++++++++++++++++
Atest/data/target_38925.xml | 38++++++++++++++++++++++++++++++++++++++
Atest/data/target_43611.xml | 32++++++++++++++++++++++++++++++++
Atest/data/target_6.xml | 27+++++++++++++++++++++++++++
5 files changed, 215 insertions(+), 0 deletions(-)

diff --git a/test/Tests/Check.hs b/test/Tests/Check.hs @@ -103,6 +103,10 @@ personTests map_ind = testGroup "Individuals" , 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 + , testTarget False 43611 target_43611 map_ind $ distribution 0 0 0 125 0 0.75 + , testTarget False 29723 target_29723 map_ind $ distribution 0 100 0 125 0 0.75 + , testTarget False 6 target_6 map_ind $ distribution 0 100 0 125 0 0.75 + , testTarget False 38925 target_38925 map_ind $ distribution 100 0 0 0 0 0.75 ] , testGroup "Public and imaginary figures" [ testTrusted False public_figure_1 map_ind "Hergé" @@ -298,6 +302,66 @@ target_43662 = NaturalPerson } } +target_43611 :: NaturalPerson +target_43611 = NaturalPerson + { full_name = "Vladimir Viktorovich Kalach" + , last_name = "Kalach" + , birthdate = YearMonthDay 1960 12 22 -- Made up birth date + , 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_29723 :: NaturalPerson +target_29723 = NaturalPerson + { full_name = "Равиль Закариевич Халиков" + , last_name = "Халиков" + , birthdate = YearMonthDay 1969 02 23 + , 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_38925 :: NaturalPerson +target_38925 = NaturalPerson + { full_name = "Solomon Grundy" + , last_name = "Grundy" + , birthdate = YearMonthDay 1800 06 06 + , nationality = BE + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = BE + , street_name = "Kryzhizhanovskogo str." + , street_number = "5A" + , GLS.lines = Nothing + , building_name = Nothing + , building_number = Just "64" + , zipcode = "Non existent" + , town_location = Just "Gresovskoe" + , town_district = Nothing + , country_subdivision = Nothing + } + } + public_figure_1 :: NaturalPerson public_figure_1 = NaturalPerson { full_name = "Georges Prosper Remi" @@ -497,3 +561,23 @@ imaginary_figure_5 = NaturalPerson , country_subdivision = Just "Pennsylvania" } } + +target_6 :: NaturalPerson +target_6 = NaturalPerson + { full_name = "Bowser" + , last_name = "Bowser" + , birthdate = YearMonthDay 1985 09 13 + , nationality = JP + , national_id = "012345ABCDEF" + , residential = GLS.Address { GLS.country = JP + , 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 + } + } diff --git a/test/data/target_29723.xml b/test/data/target_29723.xml @@ -0,0 +1,34 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="29721"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="29723" main="true"> + <name ssid="36920" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Khalikov</value> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Халиков</spelling-variant> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Khalikov</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">Халiков</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Ravil</value> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Равиль</spelling-variant> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Ravil</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">Равіль</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Zakarievich</value> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Закариевич</spelling-variant> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Zakariyovych</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">Закарійович</spelling-variant> + </name-part> + </name> + <day-month-year ssid="31009" day="23" month="2" year="1969" calendar="Gregorian" quality="good"/> + <place-of-birth ssid="36095" place-id="36094" quality="good"/> + </identity> + <justification ssid="34851">Former so-called "First Deputy Prime Minister" and previous "Prosecutor-General" of the "Donetsk People's Republic".</justification> + <justification ssid="32156">In taking on and acting in this capacity, he has therefore actively supported actions and policies which undermine the territorial integrity, sovereignty and independence of Ukraine, and further destabilised Ukraine.</justification> + <justification ssid="38566">Currently "aide" to the head of the Moscow branch of the Investigative Committee of Russian Federation (GSU SK).</justification> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_38925.xml b/test/data/target_38925.xml @@ -0,0 +1,38 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="38922"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="38925" main="true"> + <name ssid="38929" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Bezruchenko</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Bezruchenko</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">БЕЗРУЧЕНКО</spelling-variant> + <spelling-variant lang="UKR" script="LATN" spelling-variant-type="not-defined">Bezruchenko</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">БЕЗРУЧЕНКО</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>Natalya</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Natalia</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Наталья</spelling-variant> + <spelling-variant lang="UKR" script="LATN" spelling-variant-type="not-defined">Nataliya</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">Наталія</spelling-variant> + </name-part> + <name-part order="3" name-part-type="father-name"> + <value>Ivanovna</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Ivanovna</spelling-variant> + <spelling-variant lang="RUS" script="CYRL" spelling-variant-type="not-defined">Ивановна</spelling-variant> + <spelling-variant lang="UKR" script="LATN" spelling-variant-type="not-defined">Ivanivna</spelling-variant> + <spelling-variant lang="UKR" script="CYRL" spelling-variant-type="not-defined">Iванівна</spelling-variant> + </name-part> + </name> + <day-month-year ssid="38927" day="22" month="8" year="1979" calendar="Gregorian" quality="good"/> + <place-of-birth ssid="38928" place-id="28333" quality="good"/> + <address ssid="38926" place-id="38924" quality="good"> + <address-details>Gresovskoe, 5-A, Kryzhizhanovskogo str., apt. 64</address-details> + </address> + </identity> + <justification ssid="38923">Secretary of the Crimea Electoral Commission. In this capacity she participated in the organisation of the Russian presidential elections of 18 Mar 2018 in the illegally annexed Crimea and Sevastopol, and thereby actively supported and implemented policies that undermine the territorial integrity, sovereignty and independence of Ukraine.</justification> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_43611.xml b/test/data/target_43611.xml @@ -0,0 +1,32 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="43609"> + <sanctions-set-id>4387</sanctions-set-id> + <individual> + <identity ssid="43611" main="true"> + <name ssid="43612" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Kalach</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Kalach</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>Uladzimir</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Vladimir</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-part order="3" name-part-type="father-name"> + <value>Viktaravich</value> + <spelling-variant lang="RUS" script="LATN" spelling-variant-type="not-defined">Viktorovich</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> + </identity> + <justification ssid="49850">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 Aide to the President of the Republic of Belarus - Inspector for Minsk Region/Oblast.</justification> + <other-information ssid="49851">Former Deputy Chairman of the State Security Committee (KGB); Aide to the President of the Republic of Belarus - Inspector for Minsk Region/Oblast</other-information> + <other-information ssid="49852">Rank: Major-General</other-information> + </individual> + </target> +</swiss-sanctions-list> diff --git a/test/data/target_6.xml b/test/data/target_6.xml @@ -0,0 +1,27 @@ +<swiss-sanctions-list list-type="whole-list" date="2024-07-30"> + <target ssid="6"> + <sanctions-set-id>27286</sanctions-set-id> + <individual sex="male"> + <identity ssid="6" main="true"> + <name ssid="6" name-type="primary-name" quality="good" lang="eng"> + <name-part order="1" name-part-type="family-name"> + <value>Bowser</value> + <spelling-variant lang="JAP" script="Jpan" spelling-variant-type="not-defined">クッパ</spelling-variant> + </name-part> + <name-part order="2" name-part-type="given-name"> + <value>King</value> + </name-part> + </name> + <day-month-year ssid="6" day="13" month="09" year="1985" calendar="Gregorian" quality="good"/> + <place-of-birth ssid="6" place-id="49815" quality="good"/> + </identity> + <justification ssid="6">He is the arch-nemesis of the plumber Mario and the leader of the turtle-like Koopa race. Depicted as a fire-breathing monster with a tyrannical personality, Bowser's ultimate goals are to kidnap Princess Peach and conquer the Mushroom Kingdom.</justification> + <other-information ssid="6">In Japan, he is titled Daimaō (大魔王, Great Demon King").</other-information> + <other-information ssid="6">NOT SUBJECT TO TRAVEL RESTRICTIONS ACCORDING TO ARTICLE 29(1)</other-information> + </individual> + </target> + <place ssid="6"> + <location>Mushroom Kingdom</location> + <country iso-code="JP">Japan</country> + </place> +</swiss-sanctions-list>