package Ġsystem kern . profile Ċ Ċ import Ġorg . json . JSONObject Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . autoconfigure . Enable Auto Configuration Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpHeaders . AUTHORIZATION Ċ import Ġorg . springframework . http . MediaType . APPLICATION _ JSON Ċ import Ġorg . springframework . rest docs . mock mvc . MockMvc Rest Documentation . document Ċ import Ġorg . springframework . rest docs . mock mvc . Rest Documentation Request Builders Ċ import Ġorg . springframework . rest docs . mock mvc . Rest Documentation Request Builders .* Ċ import Ġorg . springframework . rest docs . payload . Json FieldType . STRING Ċ import Ġorg . springframework . rest docs . payload . Payload Documentation . field With Path Ċ import Ġorg . springframework . rest docs . payload . Payload Documentation . response Fields Ċ import Ġorg . springframework . test . web . servlet . Result Actions Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ @ Enable Auto Configuration Ċ internal Ġclass ĠUser Controller IT Ġ: ĠIntegration Test () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġname Example Ġ= Ġ" And res A use cha " ĊĠĠĠ Ġprivate Ġval Ġusername Example Ġ= Ġname Example Ġ+ Ġ" 1 8 " ĊĠĠĠ Ġprivate Ġval Ġemail Example Ġ= Ġ"$ name Example @ gmail . com " ĊĠĠĠ Ġprivate Ġval Ġpassword Example Ġ= Ġusername Example . plus ("* ") ĊĠĠĠ Ġprivate Ġval Ġusername Example 1 Ġ= Ġname Example Ġ+ Ġ" 1 9 " ĊĠĠĠ Ġprivate Ġval Ġpassword Example 1 Ġ= Ġusername Example . plus ("* ") ĊĠĠĠ Ġprivate Ġval Ġusername Example 2 Ġ= Ġname Example Ġ+ Ġ" 2 0 " ĊĠĠĠ Ġprivate Ġval Ġpassword Example 2 Ġ= Ġusername Example . plus ("* ") ĊĠĠĠ Ġprivate Ġval Ġusername Example 3 Ġ= Ġname Example Ġ+ Ġ" 2 1 " ĊĠĠĠ Ġprivate Ġval Ġpassword Example 3 Ġ= Ġusername Example . plus ("* ") ĊĠĠĠ Ġprivate Ġval Ġusername Example 4 Ġ= Ġname Example Ġ+ Ġ" 2 2 " ĊĠĠĠ Ġprivate Ġval Ġpassword Example 4 Ġ= Ġusername Example . plus ("* ") ĊĠĠĠ Ġprivate Ġval Ġhttp Headers Ġ= ĠHttp Headers () ĊĠĠĠ Ġprivate Ġval Ġrest Url Ġ= Ġ"/ user - profiles " ĊĠĠĠ Ġprivate Ġval Ġrest Login Ġ= Ġ"/ auth " ĊĠĠĠ Ġprivate Ġvar Ġtoken : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġheaders : ĠHashMap < String , ĠString > Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġvar Ġusername Desc Ġ= Ġ" Username Ġto Ġlog Ġin " ĊĠĠĠ Ġprivate Ġvar Ġusername Ġ= Ġ" username " ĊĠĠĠ Ġprivate Ġvar Ġurl To Verify UserProfile Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġemail Change URL Ġ= Ġ"/ email - change " ĊĠĠĠ Ġprivate Ġvar Ġemail Change Token Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġpassword Reset EntityId : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġval Ġpassword Reset Url Ġ= Ġ"/ password - reset " ĊĠĠĊĠĠĠ Ġprivate Ġval Ġentity Response Fields Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġfield With Path (" name "). description (" Name Ġof Ġthe Ġuser "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ( username ). description ( username Desc ). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path (" email "). description (" User 's Ġemail "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ("_ links . self . href "). description (" User 's Ġemail "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ("_ links . user Profile . href "). description (" Link Ġto Ġaccess Ġuser Ġprofile "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ("_ links . password Reset List . href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. description (" Link Ġto Ġaccess Ġpassword Ġreset Ġchildren "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ("_ links . email Verification List . href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. description (" Link Ġto Ġaccess ĠEmail Ġverification Ġchildren "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠ Ġfield With Path ("_ links . email Change List . href ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. description (" Link Ġto Ġaccess ĠEmail ĠChange Ġchildren "). type ( STRING ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġlogin Response Fields Ġ= Ġresponse Fields ( listOf ( ĊĠĠĠĠĠĠĠ Ġfield With Path (" token "). description (" Token Ġto Ġauthenticate Ġthe Ġnext Ġrequests "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path ( username ). description ( username Desc ). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path (" userId "). description (" Password Ġof Ġuser Ġto Ġbe Ġcreated "). type ( STRING ), ĊĠĠĠĠĠĠĠ Ġfield With Path (" valid Until "). description (" Date Ġand ĠTime Ġuntil Ġsession Ġwill Ġexpire "). type ( STRING ))) ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠtestData Creator : ĠUser Profile TestData Creator ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠuserId : ĠUUID ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠtestData Creator . persist TestData () ĊĠĠĠĠĠĠĠ Ġthis . userId Ġ= ĠtestData Creator . userId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate User ( user : ĠTest User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( post ( rest Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( object Mapper . writeValue AsString ( user )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ create ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Fields ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" url "). description (" Url Ġto Ġverify Ġuser Ġemail "). type ( STRING )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andReturn (). response . content AsString . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . url To Verify UserProfile Ġ= ĠJSONObject ( it ). get (" url "). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify Email () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify Email (){ ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( Rest Documentation Request Builders . post ( this . url To Verify UserProfile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( http Headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andReturn (). response . content AsString . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Res Ġ= ĠJSONObject ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . token Ġ= Ġ" Bearer Ġ" Ġ+ ĠjsonObject Res . get (" token "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . userId Ġ= ĠUUID . fromString ( jsonObject Res . get (" userId "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin Function ( username : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Headers Object ( username , password ) ĊĠĠĠĠĠĠĠ Ġheaders [ this . username ] Ġ= Ġusername ĊĠĠĠĠĠĠĠ Ġheaders [" password "] Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġhttp Headers . set All ( headers ) ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( post ( rest Login ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( http Headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ login ", login Response Fields )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andReturn (). response . content AsString . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . token Ġ= Ġ" Bearer Ġ" Ġ+ ĠJSONObject ( it ). get (" token "). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Headers Object ( username : ĠString , Ġpassword : ĠString ){ ĊĠĠĠĠĠĠĠ Ġheaders [ this . username ] Ġ= Ġusername ĊĠĠĠĠĠĠĠ Ġheaders [" password "] Ġ= Ġpassword ĊĠĠĠĠĠĠĠ Ġhttp Headers . set All ( headers ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Password Function ( username : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Headers Object ( username , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġheaders [ AUTHORIZATION ] Ġ= Ġtoken ĊĠĠĠĠĠĠĠ Ġbuild Reset Password Function ( password Reset Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" reset Password ", Ġresponse Fields ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" id "). description (" The ĠId Ġof Ġthe Ġuser Ġentity "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" creation Date "). description (" Date Ġwhich Ġwas Ġcreated Ġthe Ġrequest "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" valid Until "). description (" Date Ġuntil Ġtoken Ġis Ġvalid "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" completion Date "). description (" Date Ġin Ġwhich Ġrequest Ġis Ġconfirmed "). type ( STRING ))))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andReturn (). response . content AsString . let Ġ{ Ġpassword Reset EntityId Ġ= ĠJSONObject ( it ). get (" id "). toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Password Function With Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild Reset Password Function ("$ password Reset Url /$ password Reset EntityId ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Reset Password Function ( url : ĠString ): ĠResult Actions Ġ= ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( post ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. headers ( http Headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( object Mapper . writeValue AsString ( New Password Reset Body ( password Ġ= Ġ" New Password * "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )). andExpect ( status (). is Ok ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġcreate Ġa ĠUser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġreset Ġpassword `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġusername Example 3 ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword Example 3 ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġreset Password Function ( username , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġreset Password Function With Id () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġlogin ĠUser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġusername Example 4 ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword Example 4 ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġlogin Function ( username , Ġpassword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġread ĠUser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername Example 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword Example 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( get ("$ rest Url /$ userId ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( AUTHORIZATION , Ġthis . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ read ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Fields ( entity Response Fields ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġupdate ĠUser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġusername Example 2 ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword Example 2 ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( put ("$ rest Url /$ userId ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( AUTHORIZATION , Ġthis . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest User ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" Test User ToUpdate ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Test Ġuser Ġto Ġupdate ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ" Test User ToUpdate *", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ update ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Fields ( entity Response Fields ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cannot Ġdelete ĠUser `() Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( delete ("$ rest Url /$ userId ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Forbidden ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ delete ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Can Ġchange ĠUser Ġemail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate User ( Test User ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġusername Example , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail Example ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( post ( email Change URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. content ( object Mapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEmail Change Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew EmailAddress Ġ= Ġ" test Change Email @ gmail . com ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Profile Id Ġ= ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ email _ change ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Fields ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" email Change Req Id "). description (" Token Ġof Ġemail Ġchange Ġrequest "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" valid Until "). description (" Time Ġuntil Ġtoken Ġis Ġvalid "). type ( STRING ))))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andReturn (). response . content AsString . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Change Token Ġ= ĠJSONObject ( it ). get (" email Change Req Id "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . mock Mvc . perform ( post ("$ email Change URL /$ email Change Token ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Do ( document (" user _ email _ change _ confirmation ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Fields ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" token "). description (" Token Ġto Ġauthenticate Ġfuture Ġrequest "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" username "). description (" User Ġname Ġof Ġuser Ġprofile "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" userId "). description (" Id Ġof Ġuser Ġprofile Ġentity "). type ( STRING ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield With Path (" valid Until "). description (" Time Ġuntil Ġtoken Ġis Ġvalid "). type ( STRING ))))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġdata Ġclass ĠTest User ( ĊĠĠĠ Ġval Ġusername : ĠString , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġpassword : ĠString , ĊĠĠĠ Ġval Ġemail : ĠString Ċ ) Ċ Ċ internal Ġdata Ġclass ĠEmail Change Request ( ĊĠĠĠ Ġval Ġnew EmailAddress : ĠString , ĊĠĠĠ Ġval Ġuser Profile Id : ĠUUID Ċ ) Ċ