package Ġcom . rag in . bdd . cucumber . core Ċ Ċ import Ġcom . rag in . bdd . cucumber . config . B dd Properties Ċ import Ġcom . rag in . bdd . cucumber . core . Scenario State Context . bearer Token Ċ import Ġcom . rag in . bdd . cucumber . core . Scenario State Context . file BasePath Ċ import Ġcom . rag in . bdd . cucumber . utils . Json Utils Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ @ Component Ċ open Ġclass ĠBase C ucumber Core ( protected Ġval Ġjson Utils : ĠJson Utils , Ġprotected Ġval Ġb dd Properties : ĠB dd Properties ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY WORD _ AB SOL UTE _ PATH Ġ= Ġ" absolute Path :" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle ĠBearer Token ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdefault Bearer Token Ġdefault ĠBearer Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠsetDefault Bearer Token ( default Bearer Token : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isNotEmpty ( bdd Properties . authorization ?. bearer Token ?. default )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScenario State Context . default Bearer Token Ġ= Ġb dd Properties . authorization ?. bearer Token ?. default !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isEmpty ( bearer Token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe arer Token Ġ= Ġdefault Bearer Token ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget FilePath ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( path . startsWith ( KEYWORD _ AB SOL UTE _ PATH )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprefix Length Ġ= ĠKEY WORD _ AB SOL UTE _ PATH . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . startsWith ("$ KEYWORD _ AB SOL UTE _ PATH / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Length Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpath . substring ( prefix Length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile BasePath Ġ+ Ġpath ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRead Ġfile Ġand Ġreturn Ġcontent Ġas ĠString . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġpath Ġcontains Ġthe Ġreserved Ġword Ġ" absolute Path :" Ġit Ġtries Ġto Ġresolve Ġthe Ġfile Ġfrom Ġthe Ġclasspath Ġroot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpath ĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPath Ġto Ġfile ĊĠĠĠĠ Ġ* Ġ@ return ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContent Ġof Ġfile Ġas ĠString ĊĠĠĠĠ Ġ* Ġ@ throws ĠIOException ĠĠĠĠĠ ĠError Ġwhile Ġreading Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprotected Ġfun ĠreadFile ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġget FilePath ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġresource AsStream Ġ= Ġjava Class . class Loader . getResource AsStream ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠFileNotFoundException (" Could Ġnot Ġfind Ġthe Ġfile Ġ$ name Ġin Ġthe Ġclass Ġpath .") ĊĠĠĠĠĠĠĠ Ġreturn ĠIO Utils . toString ( resource AsStream , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAssert Ġthat ĠJSON s Ġare Ġequal ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexpected Ġ Ġexpected ĠJSON ĊĠĠĠĠ Ġ* Ġ@ param Ġactual ĠĠĠ Ġactual ĠJSON ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġassert JSON isEqual ( expected : ĠString ?, Ġactual : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġjson Utils . assert Json Equals ( expected , Ġactual ) ĊĠĠĠ Ġ} Ċ }