package Ġuk . gov . just ice . digital . h mp ps . nom is user roles api . resource Ċ Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . web . reactive . function . Body Inser ters Ċ import Ġuk . gov . just ice . digital . h mp ps . nom is user roles api . data . Create Role Request Ċ import Ġuk . gov . just ice . digital . h mp ps . nom is user roles api . data . Update Role Request Ċ import Ġuk . gov . just ice . digital . h mp ps . nom is user roles api . integration . Integration TestBase Ċ Ċ class ĠRole Resource Int Test Ġ: ĠIntegration TestBase () Ġ{ ĊĊĠ Ġ@ DisplayName (" GET Ġ/ roles ") ĊĠ Ġ@ Nested ĊĠ Ġinner Ġclass ĠGet Roles Ġ{ ĊĠĠĠ Ġval Ġmatch By Role Code Ġ= Ġ"$ .[ ? (@ . code Ġ== Ġ'% s ') ]" ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` access Ġforbidden Ġwhen Ġno Ġauthority `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Unauthorized ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġroles Ġforbidden Ġwith Ġwrong Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ BAN AN AS "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġroles Ġis Ġallowed Ġfor ĠROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN Ġand ĠROLE _ MA INT AIN _ ACCESS _ RO LES `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" GLOBAL _ SEARCH "). exists () ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" DELETE _ S ENS ITIVE _ CASE _ NOTES "). exists () ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" GLOBAL _ SEARCH "). exists () ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" DELETE _ S ENS ITIVE _ CASE _ NOTES "). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` can Ġopt Ġto Ġretrieve ĠNO MIS Ġrole `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" 3 0 0 "). does NotExist () ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri Ġ{ Ġit . path ("/ roles / "). query Param (" all - roles ", Ġ" true "). build () Ġ} ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" 3 0 0 "). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` by Ġdefault Ġall ĠD PS Ġroles , Ġincluding Ġadmin Ġroles , Ġwill Ġbe Ġretrieved `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" GLOBAL _ SEARCH "). exists () ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" MO IC _ ADMIN "). exists () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` can Ġopt Ġto Ġonly Ġreturn Ġgeneral ĠD PS Ġroles `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri Ġ{ Ġit . path ("/ roles / "). query Param (" admin - roles ", Ġ" false "). build () Ġ} ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path ("$ "). isArray ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" GLOBAL _ SEARCH "). exists () ĊĠĠĠĠĠĠĠ Ġ. json Path ( match By Role Code , Ġ" MO IC _ ADMIN "). does NotExist () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ DisplayName (" GET Ġ/ roles /{ code }") ĊĠ Ġ@ Nested ĊĠ Ġinner Ġclass ĠGet Roles By Code Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` access Ġforbidden Ġwhen Ġno Ġauthority `() Ġ{ ĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / GLOBAL _ SEARCH ") ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Unauthorized ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` access Ġforbidden Ġwhen Ġno Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / GLOBAL _ SEARCH ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf ())) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġrole Ġforbidden Ġwith Ġwrong Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / GLOBAL _ SEARCH ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ BAN AN AS "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġrole Ġnot Ġfound `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / dummy ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / GLOBAL _ SEARCH ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path (" code "). isEqualTo (" GLOBAL _ SEARCH ") ĊĠĠĠĠĠĠĠ Ġ. json Path (" name "). isEqualTo (" Global ĠSearch ") ĊĠĠĠĠĠĠĠ Ġ. json Path (" sequence "). isEqualTo (" 1 ") ĊĠĠĠĠĠĠĠ Ġ. json Path (" type "). isEqualTo (" APP ") ĊĠĠĠĠĠĠĠ Ġ. json Path (" admin Role Only "). isEqualTo (" false ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Nested ĊĠ Ġ@ DisplayName (" POST Ġ/ roles ") ĊĠ Ġinner Ġclass ĠCreate Roles Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcannot Ġbe Ġcreated Ġwithout Ġcorrect Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ D UMMY "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" TEST _ ROLE 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" A ĠTest Ġrole " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcan Ġbe Ġcreated `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" test _ role 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" A ĠTest Ġrole " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Created ĊĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ": Ġ" TEST _ ROLE 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" A ĠTest Ġrole ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sequence ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" APP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin Role Only ": Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġsub Ġrole Ġcannot Ġbe Ġcreated Ġif Ġparent Ġdoes Ġnot Ġexist `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" TEST _ ROLE 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" A ĠTest Ġrole ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Role Code Ġ= Ġ" D UMMY " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Body () ĊĠĠĠĠĠĠĠ Ġ. json Path (" user Message "). isEqualTo (" Role Ġnot Ġfound : ĠParent Ġrole Ġwith Ġcode ĠD UMMY Ġnot Ġfound ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġsub Ġrole Ġcan Ġbe Ġcreated `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . post (). uri ("/ roles ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġ" TEST _ ROLE 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" A ĠTest Ġsub Ġrole ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent Role Code Ġ= Ġ" LIC ENCE _ ROLE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadmin Role Only Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Created ĊĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ": Ġ" TEST _ ROLE 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" A ĠTest Ġsub Ġrole ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sequence ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" APP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin Role Only ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" parent Role " Ġ: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ": Ġ" LIC ENCE _ ROLE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" Lic ence Ġroles Ġ( Not Ġused )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sequence ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" APP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin Role Only ": Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Nested ĊĠ Ġ@ DisplayName (" PUT Ġ/ roles /{ code }") ĊĠ Ġinner Ġclass ĠUpdate Roles Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcannot Ġbe Ġupdated Ġwithout Ġcorrect Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . put (). uri ("/ roles / LIC ENCE _ RO ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ D UMMY "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Updated ĠRole ĠName " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġname Ġcan Ġbe Ġupdated `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . put (). uri ("/ roles / LIC ENCE _ RO ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Updated ĠRole ĠName " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ": Ġ" LIC ENCE _ RO ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" Updated ĠRole ĠName ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" APP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin Role Only ": Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġadmin Role Only Ġcan Ġbe Ġupdated `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . put (). uri ("/ roles / LIC ENCE _ DM ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠ ĠBody Inser ters . from Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Role Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadmin Role Only Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠ Ġ. expect Body (). json ( ĊĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" code ": Ġ" LIC ENCE _ DM ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" Lic ence ĠDecision ĠM aker ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" APP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin Role Only ": Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Nested ĊĠ Ġ@ DisplayName (" DELETE Ġ/ roles /{ code }") ĊĠ Ġinner Ġclass ĠDelete Roles Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcannot Ġbe Ġdeleted Ġwithout Ġcorrect Ġrole `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . delete (). uri ("/ roles / CATEG OR IS ATION _ READ ONLY ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ D UMMY "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Forbidden ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcannot Ġbe Ġdeleted Ġif Ġnot Ġexists `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . delete (). uri ("/ roles / D UMMY ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` a Ġrole Ġcan Ġbe Ġdeleted `() Ġ{ ĊĊĠĠĠĠĠ Ġweb Test Client . delete (). uri ("/ roles / CATEG OR IS ATION _ READ ONLY ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĊĠĠĠĠĠ Ġweb Test Client . get (). uri ("/ roles / CATEG OR IS ATION _ READ ONLY ") ĊĠĠĠĠĠĠĠ Ġ. headers ( set Author isation ( roles Ġ= ĠlistOf (" ROLE _ MA INT AIN _ ACCESS _ RO LES _ ADMIN "))) ĊĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠ Ġ. expect Status (). is NotFound ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ