// ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 ĠCoin base , ĠInc . Ġ< https :// coin base . com /> Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , Ġversion Ġ 2 . 0 Ċ Ċ package Ġcom . coin base . wallet link Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . coin base . wallet . core . extensions . base 6 4 Encoded String Ċ import Ġcom . coin base . wallet . crypto . ciph ers . AES 2 5 6 GCM Ċ import Ġcom . coin base . wallet . http . connectivity . Internet Ċ import Ġcom . coin base . wallet link . models . Client Metadata Key Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . net . URL Ċ import Ġjava . util . concurrent . Count DownLatch Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠWallet Link Tests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Wallet Link Connect () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Context Ġ= ĠApplication Provider . getApplicationContext < Context >() ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter (). apply Ġ{ Ġadd Action ( Connectivity Manager . CONNECT IVITY _ ACTION ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġapp Context . register Receiver ( Internet , Ġintent Filter ) ĊĠĠĠĠĠĠĠ ĠInternet . start Monitoring () ĊĊĠĠĠĠĠĠĠ Ġval Ġwallet Link Ġ= ĠWallet Link ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Url Ġ= ĠURL (" https :// wallet link . herokuapp . com "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġapp Context ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġmutable Map Of < Client Metadata Key , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata [ Client Metadata Key . E thereum Address ] Ġ= Ġ" 0 x 0 3 F 6 f 2 8 2 3 7 3 9 0 0 C 2 F 6 CE 5 3 B 5 A 9 f 5 9 5 b 9 2 aC 5 f 5 E 5 " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Link . link ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsessionId Ġ= Ġ" bcb 1 7 2 2 4 5 5 3 5 5 4 b 5 3 0 5 3 d 7 0 cc 6 d 0 5 cbb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecret Ġ= Ġ" d 2 a 4 0 9 2 7 0 8 e 1 9 4 c 8 5 0 7 1 5 6 8 2 ee 8 6 2 b 0 a 7 6 7 f 5 a 2 6 8 6 3 7 6 4 9 aae 0 a 4 ea 0 ead b 2 1 6 f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠURL (" https :// www . wallet link . org "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Ġ= Ġmetadata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" wallet Ġlink Ġconnected !! ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail (" Unable Ġto Ġconnect Ġdue Ġto Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequests Ġ= Ġwallet Link . requests Observable . blocking First () ĊĠĠĠĠĠĠĠ ĠTim ber . i (" wallet link Ġrequests Ġ$ requests ") ĊĊĠĠĠĠĠĠĠ Ġl atch . await () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġencryption De cryption () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġ" Needs Ġencryption ". toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġ" c 9 db 0 1 4 7 e 9 4 2 b 2 6 7 5 0 4 5 e 3 f 6 1 b 2 4 7 6 9 2 ". toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġiv Ġ= Ġ" 1 2 3 4 5 6 7 8 9 0 1 2 ". toByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġ( encrypted Data , Ġauth Tag ) Ġ= ĠAES 2 5 6 GCM . encrypt ( data , Ġkey , Ġiv ) ĊĊĠĠĠĠĠĠĠ ĠTim ber . i ( Base 6 4 . encode ToString ( encrypted Data , ĠBase 6 4 . NO _ WRAP )) ĊĠĠĠĠĠĠĠ Ġval Ġdecrypted Data Ġ= ĠAES 2 5 6 GCM . decrypt ( encrypted Data , Ġkey , Ġiv , Ġauth Tag ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( data . base 6 4 Encoded String (), Ġdecrypted Data . base 6 4 Encoded String ()) ĊĠĠĠ Ġ} Ċ } Ċ