package Ġorg . f ager land . user Ċ Ċ import Ġio . quarkus . test . junit . Qu ark us Test Ċ import Ġio . rest ass ured . module . kotlin . extensions . Given Ċ import Ġio . rest ass ured . module . kotlin . extensions . Then Ċ import Ġio . rest ass ured . module . kotlin . extensions . When Ċ import Ġio . small ry e . jwt . build . Jwt Ċ import Ġorg . hamcrest . Core Matchers Ċ import Ġorg . junit . jupiter . api . After All Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Method Order er Ċ import Ġorg . junit . jupiter . api . Order Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . TestMethod Order Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . transaction . Transactional Ċ import Ġjavax . ws . rs . core . MediaType Ċ Ċ @ Qu ark us Test Ċ @ Transactional Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ @ TestMethod Order ( Method Order er . Order Annotation :: class ) Ċ class ĠUser Resource Test Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Repository : ĠUser Repository ĊĊĠĠĠ Ġprivate Ġval Ġusername Ġ= Ġ" test _ user " ĊĠĠĠ Ġprivate Ġval Ġpassword Ġ= Ġ" test _ password " ĊĊĠĠĠ Ġ@ After All ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Repository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Order ( 1 ) ĊĠĠĠ Ġfun Ġ` should Ġtest Ġregister Ġuser `() Ġ{ ĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username ": Ġ"$ username ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password ": Ġ"$ password " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ api / users / register ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 2 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsaved User Ġ= Ġuser Repository . findBy Username ( username ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( saved User ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 1 , Ġuser Repository . count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Order ( 2 ) ĊĠĠĠ Ġfun Ġ` should Ġtest Ġuser Ġlogin `() Ġ{ ĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username ": Ġ"$ username ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password ": Ġ"$ password " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ api / users / login ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody (" jwt ", ĠCore Matchers . notNull Value ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( 1 , Ġuser Repository . count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġ` should Ġtest Ġvalidate Ġuser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠJwt . up n ( username ). groups ( set Of (" user ")). sign () ĊĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ api / users / validate ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( Core Matchers . equalTo (" valid ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġ` should Ġnot Ġvalidate Ġfake Ġtoken `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġ" not Ġvalid Ġtoken " ĊĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ api / users / validate ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 4 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġ` should Ġnot Ġvalidate Ġuser Ġnot Ġregistered `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠJwt . up n (" test _ user _ not _ registered "). groups ( set Of (" user ")). sign () ĊĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ api / users / validate ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 4 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġ` should Ġnot Ġvalidate Ġwhen Ġmissing Ġheader `() Ġ{ ĊĠĠĠĠĠĠĠ ĠGiven Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Content - Type ", ĠMediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ} ĠWhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ api / users / validate ") ĊĠĠĠĠĠĠĠ Ġ} ĠThen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstatusCode ( 4 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }