// Ġpackage Ġio . pro venance . explorer . service Ċ // Ċ // Ġimport Ġcom . fasterxml . jackson . databind . JsonNode Ċ // Ġimport Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ // Ġimport Ġio . pro venance . explorer . Application Ċ // Ġimport Ġio . pro venance . explorer . OBJECT _ MAP PER Ċ // Ġimport Ġio . pro venance . explorer . client . Pb Client Ċ // Ġimport Ġio . pro venance . explorer . domain . Pb St aking Validator Ċ // Ġimport Ġio . pro venance . explorer . domain . Recent Tx Ċ // Ġimport Ġorg . joda . time . DateTime Ċ // Ġimport Ġorg . junit . Assert Ċ // Ġimport Ġorg . junit . Ignore Ċ // Ġimport Ġorg . junit . Test Ċ // Ġimport Ġorg . junit . runner . RunWith Ċ // Ġimport Ġorg . springframework . beans . factory . annotation . Autowired Ċ // Ġimport Ġorg . springframework . boot . test . context . SpringBootTest Ċ // Ġimport Ġorg . springframework . test . context . Active Profiles Ċ // Ġimport Ġorg . springframework . test . context . junit 4 . Spring Runner Ċ // Ġimport Ġorg . springframework . transaction . annotation . Transactional Ċ // Ġimport Ġjava . net . Http URLConnection Ċ // Ġimport Ġjava . net . URL Ċ // Ġimport Ġjava . math . BigDecimal Ċ // Ċ // Ċ // Ġ@ RunWith ( Spring Runner :: class ) Ċ // Ġ@ SpringBootTest ( classes Ġ= Ġ[ Application :: class ], Ġweb Environment Ġ= ĠSpring Boot Test . Web Environment . RANDOM _ PORT ) Ċ // Ġ@ Active Profiles (" test ") Ċ // Ġ@ Transactional Ċ // Ġopen Ġclass ĠExplorer Service Test Ġ{ Ċ // Ċ // Ċ // ĠĠĠ Ġ@ Autowired Ċ // ĠĠĠ Ġlateinit Ġvar Ġexplorer Service : ĠExplorer Service Ċ // Ċ // ĠĠĠ Ġ@ Autowired Ċ // ĠĠĠ Ġlateinit Ġvar Ġpb Client : ĠP b Client Ċ // Ċ // Ġ// ĠĠĠ Ġ@ Mock Ġ@ Autowired Ġlateinit Ġvar Ġrest Template : ĠRest Template Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġreturn Ġrecent Ġblocks Ġof Ġdifferent Ġsizes Ġand Ġsort Ġorder `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . get Recent Blocks ( 2 5 , Ġ- 1 , Ġ"") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 5 , Ġresult . results . size ) Ċ // ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Recent Blocks ( 1 0 2 , Ġ 0 , Ġ" asc ") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 0 2 , Ġresult . results . size ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġreturn Ġa Ġblock Ġat Ġspecific Ġheight `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . getBlock At Height ( 2 8 4 0 2 8 4 ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġreturn Ġmost Ġrecent Ġtransactions `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Recent Tx >() Ċ // ĠĠĠĠĠĠĠ Ġresult . addAll ( explorer Service . get Recent Transactions ( 3 0 , Ġ 0 , Ġ""). results ) Ċ // ĠĠĠĠĠĠĠ Ġresult . addAll ( explorer Service . get Recent Transactions ( 3 0 , Ġ 1 , Ġ""). results ) Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 6 0 , Ġresult . count ()) Ċ // ĠĠĠ Ġ} Ċ // Ċ // Ċ // Ġ// ĠĠĠĠ 3 1 3 7 2 2 4 Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġreturn Ġtransaction Ġby Ġhash `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtransfer Hash Ġ= Ġ" 2 7 0 3 8 4 FE 0 D 3 9 1 0 4 C 3 3 7 6 BE 9 6 D 6 D 7 1 7 7 2 E ADA 5 CE 2 1 4 6 0 CE 2 C 8 8 9 CF 8 8 7 3 A 5 B 4 5 9 6 " Ċ // ĠĠĠĠĠĠĠ Ġval Ġname Bound Hash Ġ= Ġ" AF 5 5 8 EF 8 E 9 0 3 D 7 6 F 6 0 EE 4 1 D 4 1 5 2 7 6 F ED 3 2 A 5 4 2 F BF 2 7 8 EE 9 2 1 8 C 4 6 1 9 E 3 DB 6 F 6 4 1 " Ċ // ĠĠĠĠĠĠĠ Ġval Ġtransfer Transaction Ġ= Ġexplorer Service . getTransaction By Hash ( transfer Hash ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġname Bound Transaction Ġ= Ġexplorer Service . getTransaction By Hash ( name Bound Hash ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` get Ġstatus `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexplorer Service . getStatus () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` get Ġcurrent Ġheight Ġ 2 8 2 7 0 9 5 `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġcurrent Height Ġ= Ġexplorer Service . get Latest Block Height () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` test Ġlatest Ġheight Ġjob `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġexplorer Service . update Latest Block Height Job () Ċ // ĠĠĠĠĠĠĠ Ġexplorer Service . update Latest Block Height Job () Ċ // ĠĠĠ Ġ} Ċ // Ċ // Ġ// ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // Ġ// ĠĠĠ Ġfun Ġ` test Ġget Ġrest `() Ġ{ Ċ // Ġ// ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexplorer Service . get Rest T ender mint Result (" https :// test . pro venance . io / explorer / sentinel / status ") Ċ // Ġ// ĠĠĠĠĠĠĠ ĠAssert . assertTrue ( result Ġis ĠJsonNode ) Ċ // Ġ// ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` get Ġcurrent Ġvalidators Ġat Ġheight Ġand Ġpage Ġv 1 `() Ġ{ Ċ // Ġ// ĠĠĠĠĠĠĠ Ġexplorer Service . get Latest Block Height () Ċ // ĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) Ċ // Ġ// ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . get Recent Validators V 2 ( 1 1 , Ġ 0 , Ġ" asc ") Ċ // Ġ// ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 , Ġresult . results . size ) Ċ // Ġ// ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Recent Validators V 2 ( 1 , Ġ 1 , Ġ" asc ") Ċ // Ġ// ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġresult . results . size ) Ċ // Ġ// ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Recent Validators V 2 ( 2 , Ġ 1 , Ġ" asc ") Ċ // Ġ// ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġresult . results . size ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` get Ġcurrent Ġvalidators Ġat Ġheight Ġand Ġpage Ġv 2 `() Ġ{ Ċ // Ġ// ĠĠĠĠĠĠĠ Ġexplorer Service . get Latest Block Height () Ċ // ĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . get Recent Validators ( 1 1 , Ġ 0 , Ġ" asc ") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 4 , Ġresult . results . size ) Ċ // ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Recent Validators ( 1 , Ġ 1 , Ġ" asc ") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġresult . results . size ) Ċ // ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Recent Validators ( 2 , Ġ 1 , Ġ" asc ") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġresult . results . size ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġget Ġvalidator Ġby Ġaddress Ġid Ġof Ġlatest Ġblock `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . get Validator ("") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNull ( result ) Ċ // ĠĠĠĠĠĠĠ Ġresult Ġ= Ġexplorer Service . get Validator ("") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( result ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` test Ġhistory Ġinit `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġexplorer Service . update Cache () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore (" TODO Ġturn Ġinto Ġintegration Ġtests ") Ċ // ĠĠĠ Ġfun Ġ` should Ġreturn Ġspot light Ġobject Ġwith Ġcurrent Ġblock Ġand Ġaverage Ġblock Ġcreation Ġtime `() Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġexplorer Service . get Spot light Statistics () Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( result ) Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertTrue ( result . avg Block Time Ġ> ĠBigDecimal (" 0 . 0 ")) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore Ċ // ĠĠĠ Ġfun Ġ` test Ġget Ġtransaction Ġhistory `() Ġ{ Ċ // Ġ// ĠĠĠĠĠĠĠ Ġhttps :// test . pro venance . io / explorer / sec ured / api / v 1 / tx s / history ? toDate = 2 0 2 0 - 1 1 - 2 4 & from Date = 2 0 2 0 - 1 1 - 1 1 & gran ul at iry = day Ċ // ĠĠĠĠĠĠĠ Ġexplorer Service . getTransaction History ( DateTime . parse (" 2 0 2 0 - 1 1 - 2 4 "), ĠDateTime . parse (" 2 0 2 0 - 1 1 - 1 1 "), Ġ" day ") Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // Ġ// ĠĠĠ Ġ@ Ignore Ċ // ĠĠĠ Ġfun Ġ` test Ġget Ġtransaction Ġv 2 `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġexplorer Service . getTransaction By Hash V 2 (" 3 6 B 7 3 E AF 8 9 6 6 9 9 5 F 2 7 9 3 8 0 5 7 7 6 B 4 7 CA F 2 B 4 2 A 0 CA E 5 4 0 6 B 2 B 3 B 7 7 2 8 8 8 B 0 8 5 7 4 A 8 ") Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( tx ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġ` get Ġst aking Ġpool `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġpool Ġ= Ġexplorer Service . get St aking Pool () Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( pool ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġ` get Ġst aking Ġvalidators `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġbounded Ġ= Ġpb Client . get St aking Validators (" bon ded ", 1 , Ġ 1 0 0 ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġun bounded Ġ= Ġpb Client . get St aking Validators (" un bon ded ", 1 , Ġ 1 0 0 ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġun bounding Ġ= Ġpb Client . get St aking Validators (" un bon ding ", 1 , Ġ 1 0 0 ) Ċ // Ċ // Ġ// ĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠOBJECT _ MAP PER . readValue ( pool . toString (), ĠP b Response :: class . java ) Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( bounded ) Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( un bounded ) Ċ // ĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( un bounding ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġ` get Ġrecent Ġvalidators Ġv 2 `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġexplorer Service . get Recent Validators V 2 ( 1 0 , Ġ 1 , Ġ" desc ", Ġ" bon ded ") Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġ` get Ġsl ashing Ġinfo `() Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" hello ") Ċ // ĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġpb Client . get Sl ashing Signing Info () Ċ // ĠĠĠĠĠĠĠ Ġprintln ( response ) Ċ // ĠĠĠ Ġ} Ċ // Ġ} Ċ