package Ġuk . gov . just ice . digital . as sess ments . controller Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . boot . test . autoconfigure . web . reactive . Auto Configure Web Test Client Ċ import Ġorg . springframework . test . context . jdbc . Sql Ċ import Ġorg . springframework . test . context . jdbc . Sql Config Ċ import Ġorg . springframework . test . context . jdbc . Sql Group Ċ import Ġorg . springframework . test . web . reactive . server . expect Body Ċ import Ġuk . gov . just ice . digital . as sess ments . api . Assessment Episode Dto Ċ import Ġuk . gov . just ice . digital . as sess ments . api . ErrorResponse Ċ import Ġuk . gov . just ice . digital . as sess ments . api . Filtered Reference Data Request Ċ import Ġuk . gov . just ice . digital . as sess ments . rest client . assessment api . Ref Element Dto Ċ import Ġuk . gov . just ice . digital . as sess ments . test utils . IntegrationTest Ċ import Ġuk . gov . just ice . digital . as sess ments . utils . Request Data Ċ import Ġjava . util . UUID Ċ Ċ @ Sql Group ( ĊĠ ĠSql ( ĊĠĠĠ Ġscripts Ġ= Ġ[" classpath : filtered Reference Data / before - test . sql "], ĊĠĠĠ Ġconfig Ġ= ĠSql Config ( transaction Mode Ġ= ĠSql Config . Transaction Mode . IS OL ATED ) ĊĠ Ġ), ĊĠ ĠSql ( ĊĠĠĠ Ġscripts Ġ= Ġ[" classpath : filtered Reference Data / after - test . sql "], ĊĠĠĠ Ġconfig Ġ= ĠSql Config ( transaction Mode Ġ= ĠSql Config . Transaction Mode . IS OL ATED ), ĊĠĠĠ Ġexecution Phase Ġ= ĠSql . Execution Phase . AFTER _ TEST _ METHOD ĊĠ Ġ) Ċ ) Ċ @ Auto Configure Web Test Client Ċ class ĠReference Data Controller Test Ġ: ĠIntegration Test () Ġ{ ĊĠ Ġprivate Ġval Ġvalid Assessment Uuid Ġ= ĠUUID . fromString (" 2 e 0 2 0 e 7 8 - a 8 1 c - 4 0 7 f - bc 7 8 - e 5 f 2 8 4 e 2 3 7 e 5 ") ĊĠ Ġprivate Ġval Ġvalid Question Uuid Ġ= ĠUUID . fromString (" 2 fe 9 4 3 3 0 - 2 2 c 4 - 4 a 6 e - a 4 9 4 - 9 f 5 3 dc 2 1 3 9 c 6 ") ĊĠ Ġprivate Ġval Ġvalid Parent Question Uuid Ġ= ĠUUID . fromString (" 8 d 4 8 ff 4 d - 6 0 f 6 - 4 6 1 b - ab 0 0 - 6 7 d 1 c 2 ed 5 f 6 b ") ĊĠ Ġprivate Ġval Ġinvalid Uuid Ġ= ĠUUID . fromString (" aaaaaaaa - bbbb - cccc - dddd - eeee eeee eeee ") ĊĊĠ Ġ@ Nested ĊĠ Ġ@ DisplayName (" Fetching Ġfiltered Ġreference Ġdata ") ĊĠ Ġinner Ġclass ĠFetch ing Filtered Reference Data Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` access Ġforbidden Ġwhen Ġno Ġauthority `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Unauthorized ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġreturn Ġbad Ġrequest Ġwhen Ġno Ġuser Ġarea Ġheader Ġis Ġset `() Ġ{ ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( valid Assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Assessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. consume With Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . response Body ?. status ). isEqualTo ( 4 0 0 ) ĊĠĠĠĠĠĠĠĠĠ ĠassertThat ( it . response Body ?. developer Message ). isEqualTo (" Area ĠCode ĠHeader Ġis Ġmandatory ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġfiltered Ġreference Ġdata `() Ġ{ ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( valid Assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġval Ġresponse Ġ= Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Assessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Request Data . USER _ AREA _ HEADER _ NAME , Ġ" W WS ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body < Map < String , ĠList < Ref Element Dto >> >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĊĠĠĠĠĠ ĠassertThat ( response ?. get (" as sess or _ office ") ?. first ()). isInstanceOf ( Ref Element Dto :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġnot Ġfound Ġwhen Ġunable Ġto Ġfind ĠO AS ys Ġmapping Ġfor Ġthe Ġquestion `() Ġ{ ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( valid Assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Assessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġnot Ġfound Ġwhen Ġunable Ġto Ġfind ĠO AS ys Ġmapping Ġfor Ġparent Ġquestions `() Ġ{ ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( valid Assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Assessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( invalid Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġnot Ġfound Ġwhen Ġreference Ġdata Ġclient Ġreceives Ġa Ġ 4 0 4 `() Ġ{ ĊĠĠĠĠĠ Ġval Ġassessment Uuid Ġ= ĠUUID . fromString (" 8 1 7 7 b 6 c 7 - 1 b 2 0 - 4 5 9 b - b 6 ee - 0 ae eb 2 f 1 6 8 5 7 ") ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Request Data . USER _ AREA _ HEADER _ NAME , Ġ" W WS ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġnot Ġauthor ised Ġwhen Ġreference Ġdata Ġclient Ġreceives Ġa Ġ 4 0 1 `() Ġ{ ĊĠĠĠĠĠ Ġval Ġassessment Uuid Ġ= ĠUUID . fromString (" 8 0 fd 9 a 2 a - 5 9 dd - 4 7 8 3 - 8 cac - 1 6 8 9 a 0 4 6 4 4 3 7 ") ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Request Data . USER _ AREA _ HEADER _ NAME , Ġ" W WS ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Unauthorized ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġbad Ġrequest Ġwhen Ġreference Ġdata Ġclient Ġreceives Ġa Ġ 4 0 0 `() Ġ{ ĊĠĠĠĠĠ Ġval Ġassessment Uuid Ġ= ĠUUID . fromString (" bd 5 e 5 a 8 8 - c 0 ac - 4 f 5 5 - 9 c 0 8 - b 8 e 8 bdd 9 5 6 8 c ") ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Request Data . USER _ AREA _ HEADER _ NAME , Ġ" W WS ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` returns Ġserver Ġerror Ġwhen Ġreference Ġdata Ġclient Ġreceives Ġa Ġ 5 0 0 `() Ġ{ ĊĠĠĠĠĠ Ġval Ġassessment Uuid Ġ= ĠUUID . fromString (" bb bae 9 0 3 - 7 8 0 3 - 4 2 0 6 - 8 0 0 c - 2 d 3 b 8 1 1 1 6 d 5 c ") ĊĠĠĠĠĠ Ġval Ġcurrent Episode Ġ= Ġfetch Current Episode ( assessment Uuid . toString ()) ĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ referenced ata / filtered ") ĊĠĠĠĠĠĠĠ Ġ. body Value ( ĊĠĠĠĠĠĠĠĠĠ ĠFilter ed Reference Data Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode . episode Uuid !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Question Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( valid Parent Question Uuid Ġto Ġ" test ") ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Request Data . USER _ AREA _ HEADER _ NAME , Ġ" W WS ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ()) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is 5 xx ServerError ĊĠĠĠĠĠĠĠ Ġ. expect Body < ErrorResponse >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Current Episode ( assessment Guid : ĠString ): ĠAssessment Episode Dto Ġ{ ĊĠĠĠĠĠ Ġreturn Ġweb Test Client . get (). uri ("/ as sess ments /$ assessment Guid / episodes / current ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ PROB ATION "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body < Assessment Episode Dto >() ĊĠĠĠĠĠĠĠ Ġ. return Result () ĊĠĠĠĠĠĠĠ Ġ. response Body !! ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ