package Ġcom . lo vel ys ystem s . sign pdf Ċ Ċ import Ġio . ktor . config . Map Application Config Ċ import Ġio . ktor . content . Part Data Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . server . testing .* Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . junit . Test Ċ Ċ class ĠApp Kt Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Require Multipart () Ġ= Ġtest App Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Post , Ġ"/ sign ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status () !!. value Ġshould Equal Ġ 4 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status () !!. description Ġshould Equal Ġ" Not Ġa Ġmultipart Ġrequest " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invalid Call () Ġ= Ġtest App Ġ{ ĊĠĠĠĠĠĠĠ Ġsign ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" invalid ", Ġ" John ĠDoe "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" location ", Ġ" D or nb ir n "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Item (" my file ", Ġ"/ com / lo vel ys ystem s / sign pdf / simple . pdf ", Ġ" simple . pdf ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status () !!. value Ġshould Equal Ġ 4 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . content Ġshould Equal Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnknown Ġform Ġfield Ġinvalid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnknown Ġfile Ġfield Ġmy file ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġfield Ġis Ġnot Ġdefined """. trim Indent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sign () Ġ= Ġtest App Ġ{ ĊĠĠĠĠĠĠĠ Ġsign ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Item (" file ", Ġ"/ com / lo vel ys ystem s / sign pdf / bug . pdf ", Ġ" simple . pdf "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" name ", Ġ" John ĠDoe "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" location ", Ġ" D or nb ir n "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" reason ", Ġ" My ĠSt uff "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform Item (" contact Info ", Ġ" H inter e ĠA ch m Ã¼ h ler stra ÃŁ e Ġ 1 a ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . status ()?. value Ġshould Equal Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . contentType (). toString () Ġshould Equal Ġ" application / pdf " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsig Ġ= Ġvalidate AndGet First Signature ( response . byte Content !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsig . name Ġshould Equal Ġ" John ĠDoe " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsig . location Ġshould Equal Ġ" D or nb ir n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsig . reason Ġshould Equal Ġ" My ĠSt uff " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsig . contact Info Ġshould Equal Ġ" H inter e ĠA ch m Ã¼ h ler stra ÃŁ e Ġ 1 a " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest App ( callback : ĠTest Application Engine . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Test Application ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( environment . config Ġas ĠMap Application Config ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" signer . type ", Ġ" se fl signed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" signer . key Store Path ", Ġsample Path (" sample keystore . p 1 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" signer . key Store Pass Path ", Ġsample Path (" sample keystore pass . txt ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain () ĊĠĠĠĠĠĠĠ Ġ}, Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsample Path ( name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjava Class . getResource ("/ com / lo vel ys ystem s / sign pdf /$ name "). path !! ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠTest Application Engine . sign ( form Items : ĠList < Part Data >, Ġsetup : ĠTest Application Request . () Ġ-> ĠUnit Ġ= Ġ{}) ĊĠĠĠĠĠĠĠ Ġ: ĠTest Application Call Ġ= Ġhandle Request ( HttpMethod . Post , Ġ"/ sign ") Ġ{ ĊĠĠĠ Ġval Ġboundary Ġ= Ġ" *** bbb *** " ĊĠĠĠ Ġadd Header ( ĊĠĠĠĠĠĠĠ ĠHttp Headers . ContentType , ĊĠĠĠĠĠĠĠ ĠContentType . Multi Part . FormData . with Parameter (" boundary ", Ġboundary ). toString () ĊĠĠĠ Ġ) ĊĠĠĠ Ġset Body ( boundary , Ġform Items ) ĊĠĠĠ Ġsetup ( this ) Ċ } Ċ Ċ fun Ġform Item ( name : ĠString , Ġvalue : ĠString ): ĠPart Data . Form Item Ġ{ ĊĠĠĠ Ġreturn ĠPart Data . Form Item ( ĊĠĠĠĠĠĠĠ Ġvalue , Ġ{ Ġ}, Ġheaders Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Headers . Content Disposition , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContent Disposition . Inline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Parameter ( Content Disposition . Parameters . Name , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠTest Application Engine . file Item ( name : ĠString , ĠfilePath : ĠString , ĠfileName : ĠString ) Ġ= ĊĠĠĠ ĠPart Data . File Item ( ĊĠĠĠĠĠĠĠ Ġ{ Ġjava Class . getResource AsStream ( filePath ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{}, ĊĠĠĠĠĠĠĠ Ġheaders Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Headers . Content Disposition , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContent Disposition . File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Parameter ( Content Disposition . Parameters . Name , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Parameter ( Content Disposition . Parameters . FileName , ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ