package Ġsk . cs irt . vir us checker . driver . ant ivirus Ċ Ċ import Ġcom . kan ish ka . vir ust otal . dto . File Scan Report Ċ import Ġcom . kan ish ka . vir ust otal . dto . V irus Scan Info Ċ import Ġcom . kan ish ka . vir ust otal v 2 . V ir ust otal Public V 2 Impl Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . io . File Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ Experimental Cor outines Api Ċ internal Ġclass ĠV irus Total Test Ġ: ĠAnt ivirus Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtest ApiKey Ġ= Ġ" test - api - key " ĊĠĠĠ Ġprivate Ġval Ġtest FileName Ġ= Ġ" test - file - name . txt " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġ` Health y Ġfile Ġscan Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal FileName Ġ= Ġ" test - file - name . txt " ĊĊĠĠĠĠĠĠĠ Ġval Ġmocked V irus Total Api Implementation Ġ= Ġmock k < V ir ust otal Public V 2 Impl >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġget Scan Report ( any ()) Ġ} Ġreturns Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġvirus Total Ġ= ĠV irus Total ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ= Ġtest ApiKey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirus Total Api Implementation Ġ= Ġmocked V irus Total Api Implementation ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtemp File Ġ= Ġcreate TempFile () ĊĊĠĠĠĠĠĠĠ Ġval Ġscan Parameters Ġ= ĠFile Scan Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile To Scan Ġ= Ġtemp File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal FileName Ġ= Ġoriginal FileName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Services Allowed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġscan Result Ġ= Ġrun Blocking Ġ{ Ġvirus Total . scan File ( scan Parameters ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( original FileName , Ġscan Result . filename ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Scan Status Result . NOT _ AVAILABLE , Ġscan Result . scan Report . status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġ` Inf ected Ġfile Ġscan Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscan Result Ġ= Ġmocked Inf ected File Scan () ĊĠĠĠĠĠĠĠ ĠassertEquals ( test FileName , Ġscan Result . filename ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( scan Result . scan Report . reports . isNotEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Scan Status Result . INF ECT ED , Ġscan Result . scan Report . status ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( scan Result . scan Report . reports . all Ġ{ Ġit . ant ivirus Name . isNotBlank () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmocked Inf ected File Scan (): ĠFile Scan Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmocked V irus Total Api Implementation Ġ= Ġmock k < V ir ust otal Public V 2 Impl >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery < File Scan Report ?> Ġ{ Ġget Scan Report ( any ()) Ġ} Ġreturns ĠFile Scan Report (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmd 5 Ġ= Ġ" 1 d 9 ab 6 2 fa 8 be 2 e 5 9 3 4 f 7 a 1 9 2 dd 4 7 2 8 a 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsha 1 Ġ= Ġ" 7 3 6 9 a 8 d 4 8 5 4 6 e 3 be 6 4 ff 4 c 3 e 0 6 5 5 de ba 0 1 ba 2 2 b 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsha 2 5 6 Ġ= Ġ" a 9 f 3 4 a 5 2 0 f 3 fad 3 da 9 f 9 6 1 e 7 6 9 c 6 fce 0 5 3 9 7 5 2 1 2 aa 3 8 cbb 7 7 7 7 f 7 4 f 5 3 ff eb 0 ce " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscans Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" H ell u va AV " Ġto ĠV irus Scan Info (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Detected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 1 . 1 . 1 7 0 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ" Sk yn et " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverbose Message Ġ= Ġ" Scan Ġfinished . ĠRun Ġfor Ġyour Ġlives !! !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" i Ant ivirus " Ġto ĠV irus Scan Info (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Detected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġ" 2 . 2 . 7 4 6 5 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġ" Model ĠT 8 0 0 - 1 0 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverbose Message Ġ= Ġ" Scan Ġfinished . ĠMay Ġthe Ġ< insert - your - god > Ġhave Ġmer cy Ġon Ġyour Ġsoul ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġvirus Total Ġ= ĠV irus Total ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ= Ġtest ApiKey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirus Total Api Implementation Ġ= Ġmocked V irus Total Api Implementation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtemp File Ġ= Ġcreate TempFile () ĊĠĠĠĠĠĠĠ Ġval Ġscan Parameters Ġ= ĠFile Scan Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile To Scan Ġ= Ġtemp File , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal FileName Ġ= Ġtest FileName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Services Allowed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Blocking { Ġvirus Total . scan File ( scan Parameters ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġ` Health y Ġarchive Ġfile Ġscan Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` Health y Ġfile Ġscan Ġtest `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġ` Inf ected Ġarchive Ġfile Ġscan Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ` Inf ected Ġfile Ġscan Ġtest `() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġoverride Ġfun Ġ` Get Ġvirus Ġdatabase Ġversion Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġmocked Inf ected File Scan () ĊĠĠĠĠĠĠĠ ĠassertTrue ( report . scan Report . reports . first (). vir us Database Version . isNotBlank ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Handle Ġnot Ġallowed Ġexternal Ġservices Ġscenario Ġtest `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal FileName Ġ= Ġ" does - not - matter " ĊĠĠĠĠĠĠĠ Ġval Ġscan Parameters Ġ= ĠFile Scan Parameters ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile To Scan Ġ= ĠFile ( original FileName ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal FileName Ġ= Ġoriginal FileName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Services Allowed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġmocked V irus Total Api Implementation Ġ= Ġmock k < V ir ust otal Public V 2 Impl >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġget Scan Report ( any ()) Ġ} Ġreturns Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġvirus Total Ġ= ĠV irus Total ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ= Ġtest ApiKey , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvirus Total Api Implementation Ġ= Ġmocked V irus Total Api Implementation ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġscan Result Ġ= Ġrun Blocking Ġ{ Ġvirus Total . scan File ( scan Parameters ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( original FileName , Ġscan Result . filename ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Scan Status Result . SCAN _ REF USED , Ġscan Result . scan Report . status ) ĊĠĠĠ Ġ} Ċ Ċ }