package Ġorg . http 4 k . filter Ċ Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . nat pr y ce . ham k rest . equalTo Ċ import Ġorg . http 4 k . core . Filter Ċ import Ġorg . http 4 k . core . Method . GET Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . http 4 k . core . Status . Companion . OK Ċ import Ġorg . http 4 k . core . Status . Companion . UN AUTHORIZ ED Ċ import Ġorg . http 4 k . core . then Ċ import Ġorg . http 4 k . ham k rest . has Header Ċ import Ġorg . junit . jupiter . api . Assertions . assertNull Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠThen If Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠUser Agent Filter Ġ= ĠFilter Ġ{ Ġnext Ġ-> ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( it ). header (" is Browser ", Ġ" true ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġhandler Ġ= Ġfoo bar Filter ĊĠĠĠĠĠĠĠ Ġ. then If ({ Ġit . header (" referrer ") Ġ!= Ġnull Ġ}, ĠUser Agent Filter ) ĊĠĠĠĠĠĠĠ Ġ. then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it , Ġhas Header (" foo ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse ( OK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġrun Ġfilter Ġwhen Ġcondition Ġis Ġsatisfied `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġ"/ employee / 1 "). header (" referrer ", Ġ" firefox ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler ( request ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response . header (" is Browser "), ĠequalTo (" true ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnot Ġrun Ġfilter Ġwhen Ġcondition Ġis Ġnot Ġsatisfied `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġ"/ employee / 1 ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler ( request ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( response . header (" is Browser ")) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠThen Not If Test Ġ{ ĊĠĠĠ Ġprivate Ġval ĠUnauthorized User Filter Ġ= ĠFilter Ġ{ Ġnext Ġ-> ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext ( it ). status ( UN AUTHORIZ ED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġauthorized : Ġ( Request ) Ġ-> ĠBoolean Ġ= Ġ{ Ġit . query (" userName ") Ġ== Ġ" admin " Ġ} ĊĊĠĠĠ Ġval Ġhandler Ġ= Ġfoo bar Filter ĊĠĠĠĠĠĠĠ Ġ. then IfNot ( authorized , ĠUnauthorized User Filter ) ĊĠĠĠĠĠĠĠ Ġ. then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it , Ġhas Header (" foo ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResponse ( OK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġrun Ġfilter Ġwhen Ġcondition Ġis Ġnot Ġsatisfied `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġ"/ get / sensitive / data "). query (" userName ", Ġ" invalid Ġuser ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler ( request ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response . status , ĠequalTo ( UN AUTHORIZ ED )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġnot Ġrun Ġfilter Ġwhen Ġcondition Ġis Ġsatisfied `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( GET , Ġ"/ get / sensitive / data "). query (" userName ", Ġ" admin ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler ( request ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response . status , ĠequalTo ( OK )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġfoo bar Filter Ġ= ĠFilter Ġ{ Ġnext Ġ-> ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġnext ( it . header (" foo ", Ġ" bar ")) ĊĠĠĠ Ġ} Ċ } Ċ