/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠG reg or ĠD sch ung Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġde . chk pnt . gradle . plugin . serv iced ien ste Ċ Ċ import Ġassert k . assertThat Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġcom . google . common . j im fs . Configuration Ċ import Ġcom . google . common . j im fs . Jim fs Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġjava . nio . file . FileSystem Ċ import Ġjava . nio . file . Files Ċ import Ġjava . time . LocalDate Ċ import Ġorg . gradle . api . tasks . Task ExecutionException Ċ import Ġorg . gradle . test fixtures . Project Builder Ċ import Ġorg . junit . jupiter . api . Assertions . assert Throws Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠSer v iced ien ste Conversion Task Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsut : ĠSer v iced ien ste Conversion Task ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfs : ĠFileSystem ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġserv iced ien ste Service : ĠSer v iced ien ste Service ĊĊĠĠĠ Ġprivate Ġval Ġserv iced ien ste Ġ= ĠSer v iced ien ste ( ĊĠĠĠĠĠĠĠ Ġsource Url Ġ= Ġ" https :// 1 und 1 . de / R uf nummer n liste . pdf ", ĊĠĠĠĠĠĠĠ Ġsource Sha 2 5 6 Ġ= Ġ" 4 9 ee 2 bf 9 3 aac 3 b 1 fb 4 1 1 7 e 5 9 0 9 5 e 0 7 abe 5 5 5 c 3 3 8 3 b 3 8 d 6 0 8 da 3 7 6 8 0 a 4 0 6 0 9 6 e 8 ", ĊĠĠĠĠĠĠĠ Ġas Of Date Ġ= ĠLocalDate . parse (" 2 0 2 0 - 0 4 - 0 1 "), ĊĠĠĠĠĠĠĠ Ġphone Numbers Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSer v iced ien st ( phoneNumber Ġ= Ġ" 0 4 0 8 0 8 0 8 1 ", Ġchar ged Since Ġ= ĠLocalDate . parse (" 2 0 1 1 - 0 5 - 0 4 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSer v iced ien st ( phoneNumber Ġ= Ġ" 0 6 9 4 0 0 5 9 0 0 ", Ġchar ged Since Ġ= ĠLocalDate . parse (" 2 0 1 1 - 0 5 - 0 4 "), Ġdescription Ġ= Ġ" Sp am ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġempty Serv iced ien ste Ġ= ĠSer v iced ien ste ( ĊĠĠĠĠĠĠĠ Ġsource Url Ġ= Ġ" https :// 1 und 1 . de / R uf nummer n liste . pdf ", ĊĠĠĠĠĠĠĠ Ġsource Sha 2 5 6 Ġ= Ġ" 4 9 ee 2 bf 9 3 aac 3 b 1 fb 4 1 1 7 e 5 9 0 9 5 e 0 7 abe 5 5 5 c 3 3 8 3 b 3 8 d 6 0 8 da 3 7 6 8 0 a 4 0 6 0 9 6 e 8 ", ĊĠĠĠĠĠĠĠ Ġas Of Date Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġphone Numbers Ġ= Ġempty List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġfs Ġ= ĠJim fs . new FileSystem ( Configuration . unix ()) ĊĠĠĠĠĠĠĠ ĠFiles . write ( fs . getPath (" R uf nummer n liste . pdf "), Ġbyte ArrayOf ( 0 x 1 1 , Ġ 0 x 2 2 , Ġ 0 x 3 3 )) ĊĊĠĠĠĠĠĠĠ Ġserv iced ien ste Service Ġ= Ġmock k < Serv iced ien ste Service >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġserv iced ien ste Service . load Pdf ( any ()) Ġ} Ġreturns Ġserv iced ien ste ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= ĠProject Builder . builder (). build () ĊĠĠĠĠĠĠĠ Ġsut Ġ= Ġproject . tasks . create (" convert Serv iced ien ste ", ĠSer v iced ien ste Conversion Task :: class . java ) ĊĠĠĠĠĠĠĠ Ġsut . serv iced ien ste Service Ġ= Ġserv iced ien ste Service ĊĠĠĠĠĠĠĠ Ġsut . fs Ġ= Ġfs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġdata Ġis Ġcorre cl ty Ġserialized Ġand Ġsaved Ġin Ġthe Ġfilesystem `() Ġ{ ĊĠĠĠĠĠĠĠ Ġsut . pdf . set ( fs . getPath (" R uf nummer n liste . pdf ")) ĊĠĠĠĠĠĠĠ Ġsut . json Export File . set ( fs . getPath (" R uf nummer n liste . json ")) ĊĠĠĠĠĠĠĠ Ġsut . ldap Organization al Unit Name . set (" 1 & 1 ĠSer v iced ien ste ") ĊĠĠĠĠĠĠĠ Ġsut . ldap Ld if File . set ( fs . getPath (" Serv iced ien ste . ld if ")) ĊĠĠĠĠĠĠĠ Ġsut . f rit z box Phone book Name . set (" 1 & 1 ĠSer v iced ien ste ") ĊĠĠĠĠĠĠĠ Ġsut . f rit z box Phone book Starting Contact Id . set ( 1 0 0 0 1 ) ĊĠĠĠĠĠĠĠ Ġsut . f rit z box Phone book File . set ( fs . getPath (" Phone book . xml ")) ĊĠĠĠĠĠĠĠ Ġsut . source Url . set (" https :// 1 und 1 . de / R uf nummer n liste . pdf ") ĊĊĠĠĠĠĠĠĠ Ġsut . convert () ĊĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġserv iced ien ste Service . load Pdf ( fs . getPath (" R uf nummer n liste . pdf ")) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Json Ġ= ĠString ( Files . read All Bytes ( fs . getPath (" R uf nummer n liste . json "))) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual Json ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" source Url " Ġ: Ġ" https :// 1 und 1 . de / R uf nummer n liste . pdf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" source Sha 2 5 6 " Ġ: Ġ" 4 9 ee 2 bf 9 3 aac 3 b 1 fb 4 1 1 7 e 5 9 0 9 5 e 0 7 abe 5 5 5 c 3 3 8 3 b 3 8 d 6 0 8 da 3 7 6 8 0 a 4 0 6 0 9 6 e 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" as Of Date " Ġ: Ġ" 2 0 2 0 - 0 4 - 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phone Numbers " Ġ: Ġ[ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phoneNumber " Ġ: Ġ" 0 4 0 8 0 8 0 8 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" char ged Since " Ġ: Ġ" 2 0 1 1 - 0 5 - 0 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" phoneNumber " Ġ: Ġ" 0 6 9 4 0 0 5 9 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" char ged Since " Ġ: Ġ" 2 0 1 1 - 0 5 - 0 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" description " Ġ: Ġ" Sp am " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ld if Ġ= ĠString ( Files . read All Bytes ( fs . getPath (" Serv iced ien ste . ld if "))) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual Ld if ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# ĠGenerated Ġby Ġhttps :// github . com / chk pnt / 1 und 1 - Serv iced ien ste ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# Ġbased Ġon Ġhttps :// 1 und 1 . de / R uf nummer n liste . pdf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# Ġwith Ġsha 2 5 6 Ġ 4 9 ee 2 bf 9 3 aac 3 b 1 fb 4 1 1 7 e 5 9 0 9 5 e 0 7 abe 5 5 5 c 3 3 8 3 b 3 8 d 6 0 8 da 3 7 6 8 0 a 4 0 6 0 9 6 e 8 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdn : Ġdc = serv iced ien ste , dc = 1 und 1 , dc = de ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Class : Ġorganization al Unit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Class : Ġdc Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġou : Ġ 1 & 1 ĠSer v iced ien ste ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdc : Ġserv iced ien ste ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠCalls Ġto Ġthe Ġnumbers Ġincluded Ġin Ġthis Ġorganisation ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġare Ġchar ged Ġby Ġ 1 & 1 Ġas Ġof Ġ 2 0 2 0 - 0 4 - 0 1 . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdn : Ġou = 0 4 0 8 0 8 0 8 1 , dc = serv iced ien ste , dc = 1 und 1 , dc = de ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Class : Ġorganization al Unit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġou : Ġ 0 4 0 8 0 8 0 8 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phoneNumber : Ġ 0 4 0 8 0 8 0 8 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : Ġchar ged Ġsince Ġ 2 0 1 1 - 0 5 - 0 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdn : Ġou = 0 6 9 4 0 0 5 9 0 0 , dc = serv iced ien ste , dc = 1 und 1 , dc = de ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Class : Ġorganization al Unit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Class : Ġorganization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo : ĠSp am ĊĠĠĠĠĠĠĠĠĠĠĠ Ġou : Ġ 0 6 9 4 0 0 5 9 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtele phoneNumber : Ġ 0 6 9 4 0 0 5 9 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : Ġchar ged Ġsince Ġ 2 0 1 1 - 0 5 - 0 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Phone book Ġ= ĠString ( Files . read All Bytes ( fs . getPath (" Phone book . xml "))) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual Phone book ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< phone books > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< phone book Ġowner =" 0 " Ġname =" 1 & amp ; 1 ĠSer v iced ien ste "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< contact > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< category > 0 </ category > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< person > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< real Name > 0 4 0 8 0 8 0 8 1 </ real Name > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ person > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tele phony Ġnid =" 1 "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< number Ġtype =" work " Ġpri o =" 1 " Ġid =" 0 "> 0 4 0 8 0 8 0 8 1 </ number > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tele phony > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< services /> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< setup /> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< features Ġdoor phone =" 0 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< mod _ time > 1 3 0 4 4 6 0 0 0 0 </ mod _ time > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< unique id > 1 0 0 0 1 </ unique id > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ contact > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< contact > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< category > 0 </ category > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< person > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< real Name > Sp am </ real Name > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ person > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tele phony Ġnid =" 1 "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< number Ġtype =" work " Ġpri o =" 1 " Ġid =" 0 "> 0 6 9 4 0 0 5 9 0 0 </ number > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tele phony > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< services /> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< setup /> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< features Ġdoor phone =" 0 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< mod _ time > 1 3 0 4 4 6 0 0 0 0 </ mod _ time > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< unique id > 1 0 0 0 2 </ unique id > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ contact > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ phone book > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ phone books > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` if Ġno Ġphone Numbers Ġcan Ġbe Ġextracted Ġan Ġexception Ġis Ġthrown `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġserv iced ien ste Service . load Pdf ( any ()) Ġ} Ġreturns Ġempty Serv iced ien ste ĊĠĠĠĠĠĠĠ Ġsut . pdf . set ( fs . getPath (" R uf nummer n liste . pdf ")) ĊĠĠĠĠĠĠĠ Ġsut . json Export File . set ( fs . getPath (" R uf nummer n liste . json ")) ĊĠĠĠĠĠĠĠ Ġsut . source Url . set (" https :// 1 und 1 . de / R uf nummer n liste . pdf ") ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠassertThrows ( Task ExecutionException :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsut . convert () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcause Ġ= Ġexception . cause Ġas ĠIllegalArgumentException ĊĠĠĠĠĠĠĠ ĠassertThat ( cause . message ). isEqualTo (" Failed Ġto Ġextract Ġphone Ġnumbers Ġfrom ĠR uf nummer n liste . pdf ") ĊĠĠĠ Ġ} Ċ } Ċ