package Ġorg . ort . school . app . service Ċ Ċ import Ġcom . w inter be . ex pe kt . should Ċ import Ġio . kot est . core . spec . style . Annotation Spec Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . mind rot . j bcrypt . BC rypt Ċ Ċ class ĠPassword Service Test Ġ: ĠAnnotation Spec () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġencrypt Password () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassword Service Ġ= ĠPassword Service () ĊĠĠĠĠĠĠĠ Ġpassword Service . encrypt Password (" aaa "). should . start With ("$ 2 a $ 1 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġencrypt Password 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassword Service Ġ= ĠPassword Service () ĊĠĠĠĠĠĠĠ Ġpassword Service . encrypt Password (" aaa ", Ġ 1 2 ). should . start With ("$ 2 a $ 1 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Pw () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġ" ss " ĊĠĠĠĠĠĠĠ Ġval Ġhash pw Ġ= ĠBC rypt . hash pw ( pass , ĠBC rypt . gens alt ()) ĊĠĠĠĠĠĠĠ ĠPassword Service (). check Pw ( pass , Ġhash pw ). should . be .` true ` ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test () ĊĠĠĠ Ġfun Ġ` non - bcrypt - encrypted Ġpass Ġshould Ġcause Ġexception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġ" ss " ĊĠĠĠĠĠĠĠ Ġval Ġhash pw Ġ= Ġ" l ala " ĊĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( IllegalArgumentException :: class . java ) Ġ{ ĠPassword Service (). check Pw ( pass , Ġhash pw ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` wrong Ġpass Ġshould Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġ" ss " ĊĠĠĠĠĠĠĠ Ġval Ġhash pw Ġ= Ġ"\ $ 2 a \$ 1 0 \$ 2 W 5 9 w Xh Mc Qy ls q 9 q wb z Zo O a UC 9 My M . y Y nm A 2 u CH z W 2 yl Q OK wt Kn MW " ĊĠĠĠĠĠĠĠ ĠPassword Service (). check Pw ( pass , Ġhash pw ). should . be .` false ` ĊĠĠĠ Ġ} Ċ }