import Ġorg . apache . http . client . methods . Http Head Ċ import Ġorg . apache . http . impl . client . HttpClient Builder Ċ import Ġorg . openqa . selenium . By Ċ import Ġorg . openqa . selenium . Cookie Ċ import Ġorg . openqa . selenium . firefox . Firefox Driver Ċ import Ġkotlin . test . After Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNot Equals Ċ Ċ class ĠDownload Secure Files Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdriver Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirefox Driver () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠQu it Ġsession Ġ( clo ses Ġbrowser ) ĊĠĠĠĠĠĠĠ Ġdriver . quit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠcontentType ( file : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġfile . substring After Last (".", Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( extension ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jpg " Ġ-> Ġ" image / jpeg " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pdf " Ġ-> Ġ" application / pdf " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" xls " Ġ-> Ġ" application / vnd . ms - excel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gif ", Ġ" png ", Ġ" m 3 u ", Ġ" docx ", Ġ" xlsx ", Ġ" txt " Ġ-> Ġ" application / octet - stream " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ Ġ-> Ġ" Unknown Ġfile Ġtype " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdownload () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . get (" http :// admin : admin @ the - internet . herokuapp . com / download _ secure ") ĊĠĠĠĠĠĠĠ Ġdriver . manage (). add Cookie ( Cookie (" rack . session ", Ġ" true ")) ĊĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġdriver . findElement ( By . css Selector (". example Ġa ")). getAttribute (" href ") ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠHttpClient Builder . create (). build () ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttp Head ( link ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠhttpClient . execute ( request ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= ĠInteger . parseInt ( response . getFirst Header (" Content - Length "). value ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" image / jpeg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . getFirst Header (" Content - Type "). value ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Not Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Length ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdownload All () Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver . get (" http :// admin : admin @ the - internet . herokuapp . com / download _ secure ") ĊĠĠĠĠĠĠĠ Ġdriver . manage (). add Cookie ( Cookie (" rack . session ", Ġ" true ")) ĊĠĠĠĠĠĠĠ Ġval Ġlinks Ġ= Ġdriver . find Elements ( By . css Selector (". example Ġa ")) ĊĠĠĠĠĠĠĠ Ġfor Ġ( link Ġin Ġlinks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink File Ġ= Ġlink . getAttribute (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠHttpClient Builder . create (). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttp Head ( link File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠhttpClient . execute ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= ĠInteger . parseInt ( response . getFirst Header (" Content - Length "). value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType ( link File ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . getFirst Header (" Content - Type "). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Not Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }