package Ġcom . soft mot ions . nc ms Ċ Ċ import Ġch . qos . log back . classic . Level Ċ import Ġcom . github . ke v ins aw ick i . http . HttpRequest Ċ import Ġcom . google . inject . Injector Ċ import Ġcom . soft mot ions . we boot . testing . tomcat . Tom cat Runner Ċ import Ġjava . nio . file . Paths Ċ Ċ /** Ċ Ġ* ĠBase Ġclass Ġfor Ġweb Ġtests Ċ Ġ* Ġ@ author ĠAdam ans ky ĠAnt on Ġ( adam ans ky @ soft mot ions . com ) Ċ Ġ*/ Ċ open Ġclass ĠWeb Base Test ( db : ĠString ) Ġ: ĠDb Base Test ( db ) Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġrunner : ĠTom cat Runner ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġvar Ġproject Base dir : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġvar Ġinjector : ĠInject or ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Env () !!. injector ĊĊĠĠĠ Ġopen Ġfun Ġsetup Web () Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Logging ( Level . INFO ) ĊĠĠĠĠĠĠĠ Ġlog . info (" setup Web ") ĊĠĠĠĠĠĠĠ Ġsetup Db () ĊĠĠĠĠĠĠĠ Ġproject Base dir Ġ= ĠSystem . getProperty (" project . basedir ") Ġ?: Ġthrow ĠException (" Missing Ġrequired Ġsystem Ġproperty : Ġ' project . basedir '") ĊĠĠĠĠĠĠĠ ĠSystem . getProperty (" WE BOOT _ CFG _ LOCATION ") Ġ?: Ġthrow ĠException (" Missing Ġrequired Ġsystem Ġproperty : Ġ' WE BOOT _ CFG _ LOCATION '") ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠTom cat Runner . create Builder () ĊĠĠĠĠĠĠĠ Ġconfigure Tom cat Runner ( b ) ĊĠĠĠĠĠĠĠ Ġrunner Ġ= Ġb . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġshutdown Web () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" shutdown Web ") ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunner ?. shutdown () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error ("", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġshutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġshutdown Web () ĊĠĠĠĠĠĠĠ Ġshutdown Db () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun Ġconfigure Tom cat Runner ( b : ĠTom cat Runner . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġb . with Port ( 8 2 8 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Context Path ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Resources Base ( getBase Web app Dir ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun Ġget Base Web app Dir (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPaths . get ( project Base dir , Ġ" src / test / webapp "). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun Ġget Env (): ĠN cms Boot ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrunner ?. getContext EventListener ( N cms Boot :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun Ġauth ( r : ĠHttpRequest ): ĠHttpRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġauth (" admin ", Ġ" nc ms 1 ", Ġr ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun Ġauth ( login : ĠString , Ġpasswd : ĠString , Ġr : ĠHttpRequest ): ĠHttpRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġr . basic ( login , Ġpasswd ) ĊĠĠĠĠĠĠĠ Ġreturn Ġr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun ĠR ( resource : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR ( null , Ġresource ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun ĠR ( up : ĠString ?, Ġresource : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( 6 4 ) ĊĠĠĠĠĠĠĠ Ġsb . append (" http :// ") ĊĠĠĠĠĠĠĠ Ġif Ġ( up Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( up ). append ('@ ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append (" localhost :") ĊĠĠĠĠĠĠĠ Ġsb . append ( runner !!. used Builder (). port ) ĊĠĠĠĠĠĠĠ Ġif Ġ( resource [ 0 ] Ġ!= Ġ'/') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ('/') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append ( resource ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġprotected Ġfun ĠGET ( resource : ĠString ): ĠHttpRequest Ġ= Ġauth ( HttpRequest . get ( R ( resource ))) ĊĠĠĠ Ġopen Ġprotected Ġfun ĠHEAD ( resource : ĠString ): ĠHttpRequest Ġ= Ġauth ( HttpRequest . head ( R ( resource ))) ĊĠĠĠ Ġopen Ġprotected Ġfun ĠPUT ( resource : ĠString ): ĠHttpRequest Ġ= Ġauth ( HttpRequest . put ( R ( resource ))) ĊĠĠĠ Ġopen Ġprotected Ġfun ĠPOST ( resource : ĠString ): ĠHttpRequest Ġ= Ġauth ( HttpRequest . post ( R ( resource ))) ĊĠĠĠ Ġopen Ġprotected Ġfun ĠDELETE ( resource : ĠString ): ĠHttpRequest Ġ= Ġauth ( HttpRequest . delete ( R ( resource ))) Ċ }