// ĠSPDX - File Copyright Text : Ġ 2 0 2 0 ĠL ars ĠG ey er - B la ume iser Ġ< lar s @ lg bl a ume iser . de > Ċ // ĠSPDX - License - Identifier : ĠMIT Ċ package Ġde . lg bl a ume iser . pt m . service Ċ Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . should Ċ Ċ class ĠUserService Test Ġ: ĠWord Spec ({ ĊĊĠĠĠ Ġbefore Test Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialize UserService () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" get Ġuser Ġby Ġname Ġresults Ġin Ġexception Ġis Ġuser Ġis Ġunknown " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĠuserService . getUser ( test Username 1 , Ġtest Password 1 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" add Ġuser " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" First Ġadded Ġuser Ġcan Ġbe Ġretrieved , Ġhe Ġis Ġadmin " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstored Ġ= ĠuserService . getUser ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . username . equals ( test Username 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . password . equals (" xxx ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . email . equals ( test Email 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . question . equals ( test Question 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . answer . equals (" xxx ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstored . admin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" First Ġadded Ġis Ġadmin Ġand Ġsecond Ġis Ġnot " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 2 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . getUser ( test Username 1 , Ġtest Password 1 ). admin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! userService . getUser ( test Username 2 , Ġtest Password 2 ). admin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" No Ġtwo Ġusers Ġwith Ġsame Ġusername Ġallowed " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . add User ( test Username 1 , Ġtest Password 2 , Ġtest Email 2 , Ġtest Question 2 , Ġtest Answer 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" add Ġuser Ġsets Ġpassword , Ġso Ġthat Ġuser Ġcannot Ġbe Ġauthenticated Ġwith Ġwrong Ġpassword " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! userService . authenticate User ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal AccessException > Ġ{ ĠuserService . getUser ( test Username 1 , Ġtest Password 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" change Ġuser " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" It Ġis Ġpossible Ġto Ġchange Ġall Ġproperties Ġexcept Ġusername " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! userService . authenticate User ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . change User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġtest Username 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġtest Password 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Password Ġ= Ġtest Password 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġtest Email 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġtest Question 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer Ġ= Ġtest Answer 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! userService . authenticate User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . getUser ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . email . equals ( test Email 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . question . equals ( test Question 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" It Ġis Ġpossible Ġto Ġonly Ġchange Ġthe Ġemail " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . change User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġtest Username 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġtest Password 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġtest Email 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! userService . authenticate User ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . getUser ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . email . equals ( test Email 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . question . equals ( test Question 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" Not Ġpossible Ġto Ġchange Ġuser Ġwith Ġwrong Ġpassword " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal AccessException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . change User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġtest Username 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġtest Password 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġtest Email 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" reset Ġpassword " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" reset Ġpassword Ġworks Ġwith Ġright Ġanswer Ġeven Ġafter Ġchange " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Password Ġ= ĠuserService . reset Password ( test Username 1 , Ġtest Answer 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġnew Password ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . change User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġtest Username 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġnew Password , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġtest Question 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer Ġ= Ġtest Answer 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġnew Password ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Password Ġ= ĠuserService . reset Password ( test Username 1 , Ġtest Answer 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġsecond Password ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" reset Ġrequires Ġright Ġanswer Ġfor Ġchange " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal AccessException > Ġ{ ĠuserService . reset Password ( test Username 1 , Ġtest Answer 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" delete Ġuser " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" delete Ġuser Ġdeletes Ġall Ġactivities Ġand Ġbook ings Ġbefore Ġuser Ġis Ġdeleted " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Standard Activity 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Complete Booking () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . delete User ( test Username 1 , Ġtest Password 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Service . get Activities ( test Username 1 , Ġtrue ). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbooking Service . get Book ings ( test Username 1 ). isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < java . lang . IllegalArgumentException > Ġ{ ĠuserService . getUser ( test Username 1 , Ġtest Password 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" delete Ġuser Ġshould Ġnot Ġwork Ġwith Ġwrong Ġpassword " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Test User 1 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Ġ{ ĠuserService . authenticate User ( test Username 1 , Ġtest Password 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < Illegal AccessException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserService . delete User ( test Username 1 , Ġtest Password 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ