package Ġblue jam . h obby . ge k its ui . webapp . util Ċ Ċ import Ġblue jam . h obby . ge k its ui . webapp . entity . Problem Ċ import Ġblue jam . h obby . ge k its ui . webapp . entity . User Ċ import Ġblue jam . h obby . ge k its ui . webapp . entity . Visibility Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . springframework . security . core . authority . Simple Granted Authority Ċ import Ġorg . springframework . security . oauth 2 . client . authentication . OAuth 2 Authentication Token Ċ import Ġorg . springframework . security . oauth 2 . core . user . Default OAuth 2 User Ċ Ċ internal Ġclass ĠVisibility Kt Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġwriter Id Ġ= Ġ 1 2 3 ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Anonymous Ġuser Ġcan Ġsee Ġpublic Ġproblem `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( check Is Accessible To Problem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprincipal Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem Ġ= Ġproblem ( Visibility . PUBLIC ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Anonymous Ġuser Ġcannot Ġsee Ġnon - public Ġproblem `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( check Is Accessible To Problem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprincipal Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem Ġ= Ġproblem ( Visibility . PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` User Ġcannot Ġsee Ġprivate Ġproblem `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( check Is Accessible To Problem ( principal ( git Hub Id Ġ= Ġwriter Id Ġ+ Ġ 1 0 ), Ġproblem ( Visibility . PRIVATE ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Writer Ġcan Ġsee Ġtheir Ġprivate Ġproblem `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( check Is Accessible To Problem ( principal ( git Hub Id Ġ= Ġwriter Id ), Ġproblem ( Visibility . PRIVATE ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Admin Ġcan Ġsee Ġany Ġprivate Ġproblem `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue ( check Is Accessible To Problem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprincipal ( git Hub Id Ġ= Ġwriter Id Ġ+ Ġ 1 0 , Ġauthority Names Ġ= ĠlistOf (" ROLE _ ADMIN ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproblem ( Visibility . PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproblem ( visibility : ĠVisibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠProblem (" name ", Ġ" title ", Ġ" statement ", Ġvisibility , Ġmutable Set Of ( User (" writer ", Ġwriter Id ))) ĊĊĠĠĠ Ġprivate Ġfun Ġprincipal ( git Hub Id : ĠInt , Ġauthority Names : ĠList < String > Ġ= Ġempty List ()) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOAuth 2 Authentication Token ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault OAuth 2 User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Simple Granted Authority (" ROLE _ USER ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( Pair (" id ", Ġgit Hub Id )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthority Names . map Ġ{ ĠSimple Granted Authority ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" registration Id " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ } Ċ