package Ġorg . v accine impact . order ly web . tests ĊĊ Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . v accine impact . order ly web . Content Types Ċ import Ġorg . v accine impact . order ly web . models . Scope Ċ import Ġorg . v accine impact . order ly web . models . permissions . Re ified Permission Ċ import Ġorg . v accine impact . order ly web . test _ helpers . http . Response Ċ import Ġorg . v accine impact . order ly web . test _ helpers . insert Report Ċ import Ġorg . v accine impact . order ly web . test _ helpers . remove Permission Ċ import Ġorg . v accine impact . order ly web . tests . integration _ tests . helpers . Request Helper Ċ import Ġspark . route . HttpMethod Ċ Ċ abstract Ġclass ĠPermission Checker ( protected Ġval Ġurl : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotected Ġval Ġall Required Permissions : ĠSet < Re ified Permission >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotected Ġval ĠcontentType : ĠString Ġ= ĠContent Types . html , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotected Ġval Ġmethod : ĠHttpMethod Ġ= ĠHttpMethod . get , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotected Ġval Ġpost Data : ĠMap < String , ĠAny >? Ġ= Ġnull ) Ċ { ĊĊĠĠĠ Ġabstract Ġval Ġrequest Helper : ĠRequest Helper ĊĠĠĠ Ġabstract Ġval Ġun sec ured Response Code : ĠInt ĊĊĠĠĠ Ġfun Ġcheck Permissions Are S ufficient () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck These Permissions Are S ufficient ( all Required Permissions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Expected Ġsuccessful Ġrequest Ġto Ġ$ url Ġwith Ġthe Ġgiven Ġpermissions ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Permission IsRequired ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission : ĠRe ified Permission ĊĠĠĠ Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġassertion Text Ġ= Ġ" Expected Ġpermission Ġ'$ permission ' Ġto Ġbe Ġrequired Ġfor Ġ$ url " ĊĠĠĠĠĠĠĠ Ġval Ġlimited Permissions Ġ= Ġall Required Permissions Ġ- Ġpermission ĊĠĠĠĠĠĠĠ Ġremove Permission ( request Helper . Mont ag u Test User , Ġpermission . name , Ġpermission . scope . database Scope Prefix Ġ?: Ġ"") ĊĊĠĠĠĠĠĠĠ Ġ// Ġalso Ġremove Ġthe Ġglobal Ġpermission Ġwhich Ġshould Ġalways Ġbe Ġstrong er Ġthan Ġthe Ġscoped Ġone ĊĠĠĠĠĠĠĠ Ġremove Permission ( request Helper . Mont ag u Test User , Ġpermission . name , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġprintln (" Checking Ġthat Ġpermission Ġ'$ permission ' Ġis Ġrequired Ġfor Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġcheck These Permissions Are Ins ufficient ( limited Permissions , Ġassertion Text ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( permission . scope Ġis ĠScope . Specific ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscope Ġ= Ġpermission . scope Ġas ĠScope . Specific ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Checking Ġthat Ġsame Ġpermission Ġwith Ġdifferent Ġscope Ġwill Ġnot Ġsatisfy Ġthe Ġrequirement ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbad Permission Ġ= ĠRe ified Permission ( permission . name , ĠScope . Specific ( scope . database Scope Prefix , Ġ" bad - id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Report (" bad - id ", Ġ" v 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck These Permissions Are Ins ufficient ( limited Permissions Ġ+ Ġbad Permission , Ġassertion Text ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Checking Ġthat Ġsame Ġpermission Ġwith Ġthe Ġglobal Ġscope ĠWILL Ġsatisfy Ġthe Ġrequirement ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbetter Permission Ġ= ĠRe ified Permission ( permission . name , ĠScope . Global ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck These Permissions Are S ufficient ( limited Permissions Ġ+ Ġbetter Permission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Expected Ġto Ġbe Ġable Ġto Ġsubstitute Ġ'$ better Permission ' Ġin Ġplace Ġof Ġ'$ permission ' Ġfor Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġrequest With Permissions ( permissions : ĠSet < Re ified Permission >): ĠResponse ĊĊĠĠĠ Ġprivate Ġfun Ġcheck These Permissions Are Ins ufficient ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions : ĠSet < Re ified Permission >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassertion Text : ĠString ĊĠĠĠ Ġ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrequest With Permissions ( permissions ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( response . statusCode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message ( assertion Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( un sec ured Response Code ) Ġ// Ġwe Ġreturn Ġ 4 0 4 s Ġfor Ġun authorized Ġusers ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck These Permissions Are S ufficient ( permissions : ĠSet < Re ified Permission >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassertion Text : ĠString ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrequest With Permissions ( permissions ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( response . statusCode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Fail Message ( assertion Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 2 0 0 ) ĊĠĠĠ Ġ} Ċ Ċ }