package Ġcom . mob il ab solutions . stash . core /* Ċ Ġ* ĠCopyright ĠÂ© ĠM obi Lab ĠSolutions ĠGmbH Ċ Ġ*/ Ċ Ċ // Ġpackage Ġcom . mob il ab solutions . payment . android . new api Ċ // Ċ // Ġimport Ġandroid . app . Application Ċ // Ġimport Ġandroid . os . Build Ċ // Ġimport Ġandroidx . test . Instrumentation Registry Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . Build Config Ċ // Ġimport Ġcom . mob il ab solutions . stash . core . Other Exception Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . ps dk . internal .* Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . ps dk . internal . p sp handler . bsp ay one . Bs Pay one Module Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . ps dk . internal . p sp handler . hyper charge . Hyper charge Module Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . ps dk . integration . bs old integration . ol db sp ay one . Old Bs Pay one Module Ċ // Ġimport Ġcom . mob il ab solutions . stash . core . Billing Data Ċ // Ġimport Ġcom . mob il ab solutions . stash . core . CreditCard Data Ċ // Ġimport Ġcom . mob il ab solutions . payment . android . ps dk . model . Payment Data Ċ // Ġ// import Ġcom . t sp oon . trace ur . Trace ur Ċ // Ġimport Ġdagger . Component Ċ // Ġimport Ġio . reactivex . schedul ers . Schedulers Ċ // Ġimport Ġorg . junit . Assert ; Ċ // Ġimport Ġorg . junit . Before Ċ // Ġimport Ġorg . junit . Test Ċ // Ġimport Ġorg . th reet en . bp . LocalDate Ċ // Ġimport Ġtim ber . log . Tim ber Ċ // Ġimport Ġjava . util . concurrent . Count DownLatch Ċ // Ġimport Ġjavax . inject . Inject Ċ // Ġimport Ġjavax . inject . Singleton Ċ // Ċ // Ġ/** Ċ // Ġ* Ġ@ author Ġ[ U gi ]( ugi @ mob il ab solutions . com ) Ċ // Ġ*/ Ċ // Ġclass ĠOld BSP ayment Instrumentation Tests Ġ{ Ċ // ĠĠĠ Ġ// Q Ev up r LE f Aes qa V xf HO m Nx Rt KF NA a Vy X Ċ // ĠĠĠ Ġ// m OQ Ix ngx M du uv qg Tl By cd K Hf Cp M qw TC y Ċ // Ċ // ĠĠĠ Ġval Ġtest Publish able Key : ĠString Ġ= ĠBuild Config . old Bs Test Key Ċ // ĠĠĠ Ġval ĠM OB IL AB _ BE _ URL : ĠString Ġ= ĠBuild Config . mob il ab Backend Url Ċ // ĠĠĠ Ġval ĠO LD _ BS _ PAY ONE _ URL : ĠString Ġ= ĠBuild Config . old Bs Api Url Ċ // ĠĠĠ Ġval ĠNEW _ BS _ PAY ONE _ URL : ĠString Ġ= ĠBuild Config . new Bs Api Url Ċ // Ċ // ĠĠĠ Ġ// ĠĠĠ Ġvar Ġcredit Card Alias Ġ= ĠBuild Config . old Bs Existing Cc Alias Ċ // ĠĠĠ Ġvar Ġcredit Card Alias Ġ= Ġ" Q Ev up r LE f Aes qa V xf HO m Nx Rt KF NA a Vy X " Ċ // Ġ// ĠĠĠ Ġvar Ġse pa Alias Ġ= ĠBuild Config . old Bs Existing Se pa Alias Ċ // ĠĠĠ Ġvar Ġse pa Alias Ġ= Ġ" Y U J ok V WX Cb v G TL VN xh B to Y dp co Nz CG Mr " Ċ // Ġ// ĠĠĠ Ġvar Ġse pa Alias Ġ= Ġ" w I Ch kv SA AP LL h Lr AH Nd v T je Dj ib f ho Dc " Ċ // ĠĠĠ Ġvar Ġpayment Data : ĠPayment Data Ġ= ĠPayment Data ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġ 1 0 0 , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Ġ= Ġ" EUR ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcustomer Id Ġ= Ġ" 1 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreason Ġ= Ġ" Test Ġpayment " Ċ // ĠĠĠ Ġ) Ċ // Ċ // ĠĠĠ Ġprivate Ġvar Ġvalid CreditCard Data : ĠCredit Card Data Ġ= ĠCredit Card Data ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . of ( 2 0 2 1 , Ġ 1 , Ġ 1 ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 3 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Holder ĠH older man " Ċ // ĠĠĠ Ġ) Ċ // ĠĠĠ Ġprivate Ġvar Ġvalid Billing Data : ĠBilling Data Ġ= ĠBilling Data ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġ" Co log ne ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġ" holder @ email . test ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġaddress 1 Ġ= Ġ" Street Ġ 1 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= Ġ" Ger many ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" Holder ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" Holder man ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġzip Ġ= Ġ" 1 2 3 4 5 " Ċ // ĠĠĠ Ġ) Ċ // Ċ // ĠĠĠ Ġ@ Inject Ċ // ĠĠĠ Ġlateinit Ġvar Ġpayment Manager : ĠNew Payment Manager Ċ // Ċ // ĠĠĠ Ġ@ Inject Ċ // ĠĠĠ Ġlateinit Ġvar Ġregistration Manager : ĠRegistration ManagerImpl Ċ // Ċ // ĠĠĠ Ġ@ Before Ċ // ĠĠĠ Ġfun ĠsetUp () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠInstrument ation Registry . getContext (). application Context Ġas ĠApplication Ċ // ĠĠĠĠĠĠĠ Ġval Ġgraph Builder Ġ= ĠD agger Test Old Bs St ash Component . builder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. stash Module ( St ash Module ( test Publish able Key , ĠM OB IL AB _ BE _ URL , Ġcontext )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. old Bs Pay one Module ( Old Bs Pay one Module ( OLD _ BS _ PAY ONE _ URL )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. bs Pay one Module ( Bs Pay one Module ( NEW _ BS _ PAY ONE _ URL )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hyper charge Module ( Hyper charge Module ()) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< Ġ 2 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Builder . ssl Support Module ( Ssl Support Module ( TL SS ocket Factory Compat (), ĠSupport X 5 0 9 Trust Manager . get Trust Manager ())) Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Builder . ssl Support Module ( Ssl Support Module ()) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġgraph Ġ= Ġgraph Builder . build () Ċ // ĠĠĠĠĠĠĠ Ġgraph . inject Test ( this ) Ċ // ĠĠĠĠĠĠĠ Ġ// Trace ur . enable Logging () Ċ // ĠĠĠĠĠĠĠ ĠTim ber . plant ( Tim ber . Debug Tree ()) Ċ // Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġtest B SC redit Card Payment () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġpayment Disposable Ġ= Ġpayment Manager . execute CreditCard Payment With Alias ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredit Card Alias , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Data Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtransaction Id Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( transaction Id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Transaction : Ġ$ transaction Id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġerror Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( error , Ġ" BS Ġcredit Ġcard Ġpayment Ġfailed ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail ( error . message ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . await () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġpayment Disposable . dispose () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġtest BS Se pa Payment () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġpayment Disposable Ġ= Ġpayment Manager . execute Se pa Payment With Alias ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġse pa Alias , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Data Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtransaction Id Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( transaction Id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Transaction : Ġ$ transaction Id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġerror Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( error , Ġ" BS Ġse pa Ġpayment Ġfailed ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail ( error . message ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . await () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġpayment Disposable . dispose () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġtest BS One Time Payment () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġregistration Disposable Ġ= Ġpayment Manager . execute CreditCard Payment ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalid CreditCard Data , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Data Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtransaction Id Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( transaction Id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Transaction : Ġ$ transaction Id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġerror Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( error , Ġ" BS Ġcredit Ġcard Ġpayment Ġfailed ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail ( error . message ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . await () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġregistration Disposable . dispose () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġfun Ġtest B SC redit Card Payment Failure () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġl atch Ġ= ĠCount DownLatch ( 1 ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġpayment Disposable Ġ= Ġpayment Manager . execute CreditCard Payment With Alias ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Data Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtransaction Id Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( transaction Id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Transaction : Ġ$ transaction Id ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail (" Expected Ġfailure ") Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġerror Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( error ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOther Exception Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( error , Ġ" BS Ġcredit Ġcard Ġpayment Ġfailed Ġ" Ġ+ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ error . message } Ġ${ error . provider Message }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Unexpected Ġerror !") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . fail (" Unexpected Ġerror ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . count Down () Ċ // Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġl atch . await () Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġpayment Disposable . dispose () Ċ // ĠĠĠ Ġ} Ċ // Ċ // Ġ} Ċ // Ċ // Ġ@ Singleton Ċ // Ġ@ Component ( modules Ġ= Ġ[ Ssl Support Module :: class , ĠSt ash Module :: class , ĠOld Bs Pay one Module :: class , ĠHyper charge Module :: class , ĠB s Pay one Module :: class ]) Ċ // Ġinternal Ġinterface ĠTest Old Bs St ash Component Ġ: ĠSt ash Component Ġ{ Ċ // ĠĠĠ Ġfun Ġinject Test ( test : ĠOld BSP ayment Instrumentation Tests ) Ċ // Ġ}