package Ġlt . bold admin . c row bar . test . accept ance . step Ċ Ċ import Ġio . cucumber . java . Before Ċ import Ġio . cucumber . java . en . Given Ċ import Ġio . cucumber . java . en . Then Ċ import Ġio . cucumber . java . en . When Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġlt . bold admin . c row bar . Identity Confirmation Ċ import Ġlt . bold admin . c row bar . api . Confirmation Message Gateway Ċ import Ġlt . bold admin . c row bar . generator . Confirmation Code Generator Ċ import Ġlt . bold admin . c row bar . generator . Token Generator Ċ import Ġlt . bold admin . c row bar . repository . User Confirmation Code Repository Ċ import Ġlt . bold admin . c row bar . repository . User Token Repository Ċ import Ġlt . bold admin . c row bar . test . accept ance . holder . Token Holder Ċ import Ġlt . bold admin . c row bar . test . accept ance . holder . User Holder Ċ import Ġlt . bold admin . c row bar . type . entity . User Confirmation Code Ċ import Ġlt . bold admin . c row bar . type . entity . User Token Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġjava . util .* Ċ Ċ class ĠConfirm ation Step Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconfirmation Message Gateway Mock : ĠConfirm ation Message Gateway ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcode Repository Mock : ĠUser Confirmation Code Repository ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Token Repository Mock : ĠUser Token Repository ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcode Generator Stub : ĠConfirm ation Code Generator ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoken Generator : ĠToken Generator ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtoken Holder : ĠToken Holder ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser Holder : ĠUser Holder ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġidentity Confirmation : ĠIdentity Confirmation ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġ` Set Ġup `() Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġtoken Holder Ġ= ĠToken Holder () ĊĠĠĠĠĠĠĠ Ġuser Holder Ġ= ĠUser Holder () ĊĠĠĠĠĠĠĠ Ġtoken Generator Ġ= ĠToken Generator ( user Token Repository Mock ) ĊĠĠĠĠĠĠĠ Ġidentity Confirmation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIdentity Confirmation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Repository Mock , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmation Message Gateway Mock , Ġcode Generator Stub , Ġtoken Generator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Given ("^ user Ġexists $ ") ĊĠĠĠ Ġfun Ġ` user Ġexists `() Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Holder . userId Ġ= ĠUSER _ ID ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ When ("^ I Ġprovide Ġconfirmation Ġaddress $ ") ĊĠĠĠ Ġfun Ġ` I Ġprovide Ġconfirmation Ġaddress `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Repository Mock . findById ( USER _ ID ) Ġ} Ġreturns ĠOptional . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Confirmation Code ( USER _ ID , ĠCON FIRM ATION _ CODE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Generator Stub . generate And Store ( USER _ ID ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġconfirmation Message Gateway Mock . send ( any (), ĠADDRESS ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġidentity Confirmation . send Confirmation Code ( user Holder . userId !! , ĠADDRESS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ When ("^ I Ġprovide Ġcorrect Ġconfirmation Ġcode $ ") ĊĠĠĠ Ġfun Ġ` I Ġprovide Ġcorrect Ġconfirmation Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Repository Mock . findBy Code ( CONFIRM ATION _ CODE ) Ġ} Ġreturns ĠUser Confirmation Code ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUSER _ ID , ĠCON FIRM ATION _ CODE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Token Repository Mock . findById ( USER _ ID ) Ġ} Ġreturns ĠOptional . of ( User Token ( USER _ ID , Ġ" token ")) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġcode Repository Mock . delete By Code ( CONFIRM ATION _ CODE ) Ġ} Ġjust ĠRuns ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Token Repository Mock . exists By Token ( any ()) Ġ} Ġreturns Ġfalse ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġuser Token Repository Mock . save ( any ()) Ġ} Ġjust ĠRuns ĊĊĠĠĠĠĠĠĠ Ġidentity Confirmation . confirm Code ( CONFIRM ATION _ CODE ) ĊĊĠĠĠĠĠĠĠ Ġtoken Holder . apply Ġ{ Ġtoken Ġ= Ġidentity Confirmation . getToken ById ( USER _ ID ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Then ("^ user Ġidentity Ġis Ġconfirmed $ ") ĊĠĠĠ Ġfun Ġ` user Ġis Ġconfirmed `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( token Holder . token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Then ("^ I Ġreceive Ġconfirmation Ġcode $ ") ĊĠĠĠ Ġfun Ġ` I Ġreceive Ġconfirmation Ġcode `() Ġ{ ĊĠĠĠĠĠĠĠ Ġverify Ġ{ Ġconfirmation Message Gateway Mock . send ( any (), Ġeq ( ADDRESS )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER _ ID Ġ= Ġ" 4 6 af g 4 df 4 g 5 ds 4 6 g 5 s " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCON FIRM ATION _ CODE Ġ= Ġ" 1 2 3 4 5 6 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠADDRESS Ġ= Ġ"+ 3 7 0 1 2 3 4 5 6 7 8 " ĊĠĠĠ Ġ} Ċ } Ċ