package Ġcom . example . t ict act oe . auth Ċ Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . context . ApplicationContext Ċ import Ġorg . springframework . test . context . junit 4 . Spring Runner Ċ import Ġorg . springframework . test . web . reactive . server . Web Test Client Ċ import Ġjava . util . UUID Ċ Ċ const Ġval ĠTOKEN _ COOKIE _ PATTERN Ġ= Ġ" Token = .* ?; ĠPath =/ ; ĠMax - Age = PT 7 2 0 H ; ĠExp ires = .* ?; ĠHttp Only " Ċ Ċ @ RunWith ( Spring Runner :: class ) Ċ @ SpringBootTest Ċ class ĠSecurity Configuration Test Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠApplication Context ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar ĠuserService : ĠUserService ĊĊĠĠĠ Ġlateinit Ġvar Ġrest : ĠWeb Test Client ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġrest Ġ= ĠWeb Test Client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To ApplicationContext ( this . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. configure Client () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` un authenticated Ġaccess Ġis Ġallowed Ġto Ġthe Ġroot Ġpath `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrest . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is 2 xx Successful ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` un authenticated Ġaccess Ġis Ġnot Ġallowed Ġto Ġapi `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrest . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / boards ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Unauthorized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. does NotExist (" W ww - Authenticate ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` authenticate Ġrequest Ġshould Ġset Ġcookie `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrest . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / auth ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is 2 xx Successful ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Matches (" Set - Cookie ", ĠTOKEN _ COOKIE _ PATTERN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` authenticated Ġaccess Ġis Ġallowed Ġto Ġapi `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . createUser (). block () !! ĊĊĠĠĠĠĠĠĠ Ġrest . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / boards ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cookie (" Token ", Ġuser . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is 2 xx Successful ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. does NotExist (" Set - Cookie ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` unknown Ġuser Ġaccess Ġis Ġnot Ġallowed Ġto Ġapi `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrest . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / boards ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cookie (" Token ", ĠUUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Unauthorized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. does NotExist (" Set - Cookie ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` authenticate Ġrequest Ġwith Ġunknown Ġuser Ġshould Ġset Ġnew Ġcookie `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrest . post () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ api / auth ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cookie (" Token ", ĠUUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is 2 xx Successful ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Matches (" Set - Cookie ", ĠTOKEN _ COOKIE _ PATTERN ) ĊĠĠĠ Ġ} Ċ }