package Ġcom . tom as zn aj da . rx rec aptcha Ċ Ċ import Ġandroid . app . Activity Ċ import Ġcom . google . android . gms . common . Connection Result . API _ UN AVAILABLE Ċ import Ġcom . google . android . gms . common . Connection Result . SUCCESS Ċ import Ġcom . google . android . gms . common . Google Api Availability Ċ import Ġcom . google . android . gms . common . api . ApiException Ċ import Ġcom . google . android . gms . common . api . Status Ċ import Ġcom . google . android . gms . saf et yn et . Safety Net Api Ċ import Ġcom . google . android . gms . saf et yn et . Safety Net Client Ċ import Ġcom . google . android . gms . tasks . On Failure Listener Ċ import Ġcom . google . android . gms . tasks . On Success Listener Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . any Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġcom . tom as zn aj da . rx rec aptcha . exception .* Ċ import Ġcom . tom as zn aj da . rx rec aptcha . util . REC AP T CHA _ INVALID _ KEY TYPE Ċ import Ġcom . tom as zn aj da . rx rec aptcha . util . REC AP T CHA _ INVALID _ PACKAGE _ NAME Ċ import Ġcom . tom as zn aj da . rx rec aptcha . util . REC AP T CHA _ INVALID _ SITE KEY Ċ import Ġcom . tom as zn aj da . rx rec aptcha . util . UNSUPPORTED _ SDK _ VERSION Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . util . concurrent . Executor Ċ Ċ class ĠRe Captcha Test Ġ{ ĊĊĠĠĠ Ġval Ġsafety Net Provider Ġ= Ġmock < Safety Net Provider >() ĊĠĠĠ Ġval Ġsafety Net Client Ġ= Ġmock < Safety Net Client >() ĊĠĠĠ Ġval Ġgoogle Api Availability Ġ= Ġmock < Google Api Availability >() ĊĠĠĠ Ġval Ġtask Ġ= ĠRe Captcha Task Mock () ĊĊĠĠĠ Ġval Ġre Captcha Ġ= ĠRe Captcha ( safety Net Provider , Ġgoogle Api Availability ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( safety Net Provider . getClient ( any ())). do Return ( safety Net Client ) ĊĠĠĠĠĠĠĠ Ġwhenever ( safety Net Client . verify With Re captcha ( any ())). do Return ( task ) ĊĠĠĠĠĠĠĠ Ġwhenever ( google Api Availability . is Google Play Services Available ( any ())). do Return ( SUCCESS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsuccessfully Ġemits Ġtoken Ġwhen Ġtoken Ġis Ġnot Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Success (" token ") ĊĠĠĠĠĠĠĠ Ġobserver . assert Value (" token ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Play Services Unavailable Exception Ġwhen Ġdevice Ġhas Ġno Ġplay Ġservices `() Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( google Api Availability . is Google Play Services Available ( any ())). do Return ( API _ UN AVAILABLE ) ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Play Services Unavailable Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Empty Token Exception Ġwhen Ġtoken Ġis Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Success ("") ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Empty Token Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Empty Token Exception Ġwhen Ġtoken Ġis Ġblank `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Success (" ĠĠ Ġ") ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Empty Token Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Invalid KeyType Exception Ġwhen Ġkey Ġtype Ġis Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Failure ( ApiException ( Status ( REC AP T CHA _ INVALID _ KEY TYPE ))) ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Invalid KeyType Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Invalid PackageName Exception Ġwhen Ġpackage Ġname Ġis Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Failure ( ApiException ( Status ( REC AP T CHA _ INVALID _ PACKAGE _ NAME ))) ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Invalid PackageName Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Invalid Site Key Exception Ġwhen Ġsite Ġkey Ġis Ġinvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Failure ( ApiException ( Status ( REC AP T CHA _ INVALID _ SITE KEY ))) ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Invalid Site Key Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġemits ĠRe Captcha Unsupported Sdk Version Exception Ġwhen Ġsdk Ġversion Ġis Ġunsupported `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġre Captcha . verify ( mock (), Ġ" Site Key "). test () ĊĠĠĠĠĠĠĠ Ġtask . on Failure ( ApiException ( Status ( UNSUPPORTED _ SDK _ VERSION ))) ĊĠĠĠĠĠĠĠ Ġobserver . assert Error Ġ{ Ġit Ġis ĠRe Captcha Unsupported Sdk Version Exception Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRe Captcha Task Mock Ġ: ĠTask < Safety Net Api . Re captcha Token Response >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠonSuccess Listeners Ġ= Ġmutable ListOf < On Success Listener < in ĠS afety Net Api . Re captcha Token Response >>() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġon Failure Listeners Ġ= Ġmutable ListOf < On Failure Listener >() ĊĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmock < Safety Net Api . Re captcha Token Response >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhenever ( response . token Result ). thenReturn ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Listeners . forEach Ġ{ Ġit . on Success ( response ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Failure ( exception : ĠException ) Ġ= Ġon Failure Listeners . forEach Ġ{ Ġit . on Failure ( exception ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Success Listener ( p 0 : ĠExecutor , ĠonSuccess Listener : ĠOn Success Listener < in ĠS afety Net Api . Re captcha Token Response >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ ĠonSuccess Listeners . add ( on Success Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Success Listener ( p 0 : ĠActivity , ĠonSuccess Listener : ĠOn Success Listener < in ĠS afety Net Api . Re captcha Token Response >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ ĠonSuccess Listeners . add ( on Success Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Success Listener ( on Success Listener : ĠOn Success Listener < in ĠS afety Net Api . Re captcha Token Response >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ ĠonSuccess Listeners . add ( on Success Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Failure Listener ( p 0 : ĠExecutor , Ġon Failure Listener : ĠOn Failure Listener ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġon Failure Listeners . add ( on Failure Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Failure Listener ( on Failure Listener : ĠOn Failure Listener ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġon Failure Listeners . add ( on Failure Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd On Failure Listener ( p 0 : ĠActivity , Ġon Failure Listener : ĠOn Failure Listener ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ġ{ Ġon Failure Listeners . add ( on Failure Listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Result () Ġ= Ġmock < Safety Net Api . Re captcha Token Response >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< X Ġ: ĠThrowable ?> Ġget Result ( p 0 : ĠClass < X >) Ġ= Ġmock < Safety Net Api . Re captcha Token Response >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Exception () Ġ= Ġmock < Exception >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Successful () Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Complete () Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Canceled () Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ Ċ }