package Ġbr . com . z up . edu . key manager Ċ Ċ import Ġbr . com . z up .* Ċ import Ġbr . com . z up . edu . key manager . shared . grpc . Key Manager Grpc Factory Ċ import Ġcom . google . protobuf . Timestamp Ċ import Ġio . mic ronaut . context . annotation . Factory Ċ import Ġio . mic ronaut . context . annotation . Re places Ċ import Ġio . mic ronaut . http . HttpRequest Ċ import Ġio . mic ronaut . http . HttpStatus Ċ import Ġio . mic ronaut . http . client . HttpClient Ċ import Ġio . mic ronaut . http . client . annotation . Client Ċ import Ġio . mic ronaut . test . extensions . junit 5 . annotation . Mic ronaut Test Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . BDD Mockito Ċ import Ġorg . mockito . Mockito Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Mic ronaut Test Ċ internal Ġclass ĠCar rega Ch ave Pix Controller Test Ġ{ ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġlateinit Ġvar Ġcar rega Ch ave Stub : ĠP ix Key manager Detail Grpc Service Grpc . Pix Key manager Detail Grpc Service Blocking Stub ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġlateinit Ġvar Ġlista Ch ave Stub : ĠP ix Key manager List Grpc Service Grpc . Pix Key manager List Grpc Service Blocking Stub ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġ@ field : Client ("/") ĊĠĠĠ Ġlateinit Ġvar Ġclient : ĠHttpClient ĊĊĠĠĠ Ġval ĠCH AVE _ EMAIL Ġ= Ġ" test e @ test e . com . br " ĊĠĠĠ Ġval ĠCH AVE _ CEL ULAR Ġ= Ġ"+ 5 5 1 1 9 1 2 3 4 5 6 7 8 " ĊĠĠĠ Ġval ĠCON TA _ COR REN TE Ġ= ĠAccount Type . CONT A _ COR REN TE ĊĠĠĠ Ġval ĠTI PO _ DE _ CH AVE _ EMAIL Ġ= ĠKey Type . EMAIL ĊĠĠĠ Ġval ĠTI PO _ DE _ CH AVE _ CEL ULAR Ġ= ĠKey Type . MOB ILE ĊĠĠĠ Ġval ĠIN STIT UIC AO Ġ= Ġ" It au " ĊĠĠĠ Ġval ĠT IT ULAR Ġ= Ġ" Wo ody " ĊĠĠĠ Ġval ĠDOC UM ENTO _ DO _ TIT ULAR Ġ= Ġ" 3 4 5 9 7 5 6 3 0 6 7 " ĊĠĠĠ Ġval ĠA GEN CI A Ġ= Ġ" 0 0 0 1 " ĊĠĠĠ Ġval ĠNUM ERO _ DA _ CONT A Ġ= Ġ" 1 0 1 0 - 1 " ĊĠĠĠ Ġval ĠCH AVE _ CR I ADA _ EM Ġ= ĠLocalDateTime . now () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġcar regar Ġuma Ġch ave Ġpix Ġexist ente `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcliente Id Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġpix Id Ġ= ĠUUID . randomUUID (). toString () ĊĊĠĠĠĠĠĠĠ ĠB DD Mockito . given ( car rega Ch ave Stub . detail ( Mockito . any ())). willReturn ( car rega Ch ave Pix Response ( cliente Id , Ġpix Id )) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . GET < Any > ("/ api / v 1 / client es /$ cliente Id / pix /$ pix Id ") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . to Blocking (). exchange ( request , ĠAny :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( HttpStatus . OK , Ġresponse . status ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( response . body ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġlist ar Ġtodas Ġas Ġch aves Ġpix Ġexist ente `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcliente Id Ġ= ĠUUID . randomUUID (). toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġresp osta Grpc Ġ= Ġlista Ch ave Pix Response ( cliente Id ) ĊĊĠĠĠĠĠĠĠ ĠB DD Mockito . given ( lista Ch ave Stub . list ( Mockito . any ())). willReturn ( resp osta Grpc ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . GET < Any > ("/ api / v 1 / client es /$ cliente Id / pix /") ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . to Blocking (). exchange ( request , ĠList :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( HttpStatus . OK , Ġresponse . status ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertNotNull ( response . body ()) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( response . body () !!. size , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlista Ch ave Pix Response ( cliente Id : ĠString ): ĠList Pix Keys Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Email Ġ= ĠList Pix Keys Response . Pix Key . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( TI PO _ DE _ CH AVE _ EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Key ( CH AVE _ EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Account Type ( CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set CreatedAt ( CH AVE _ CR I ADA _ EM . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcreatedAt Ġ= Ġit . at Zone ( Zone Id . of (" UTC ")). to Instant () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Seconds ( createdAt . epoch Second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Nan os ( createdAt . nano ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġch ave Cel ular Ġ= ĠList Pix Keys Response . Pix Key . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( TI PO _ DE _ CH AVE _ CEL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Key ( CH AVE _ CEL ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Account Type ( CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set CreatedAt ( CH AVE _ CR I ADA _ EM . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcreatedAt Ġ= Ġit . at Zone ( Zone Id . of (" UTC ")). to Instant () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Seconds ( createdAt . epoch Second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Nan os ( createdAt . nano ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĊĠĠĠĠĠĠĠ Ġreturn ĠList Pix Keys Response . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set OwnerId ( cliente Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Keys ( listOf ( ch ave Email , Ġch ave Cel ular )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcar rega Ch ave Pix Response ( cliente Id : ĠString , Ġpix Id : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠDetail Pix Key Response . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cliente Id ( cliente Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( pix Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( Detail Pix Key Response . Ch ave Pix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo ( TI PO _ DE _ CH AVE _ EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( CH AVE _ EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cont a ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Pix Key Response . Ch ave Pix . Cont a Info . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo ( CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Inst itu icao ( INST IT UIC AO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Nome Do T it ular ( TIT ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set C pf Do T it ular ( DOC UM ENTO _ DO _ TIT ULAR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ag encia ( AG ENCI A ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Numero Da Cont a ( NUM ERO _ DA _ CONT A ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cri ada Em ( CH AVE _ CR I ADA _ EM . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcreatedAt Ġ= Ġit . at Zone ( Zone Id . of (" UTC ")). to Instant () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimestamp . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Seconds ( createdAt . epoch Second ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Nan os ( createdAt . nano ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġ@ Re places ( factory Ġ= ĠKey Manager Grpc Factory :: class ) ĊĠĠĠ Ġinternal Ġclass ĠMockito Stub Factory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġfun Ġstub Lista Mock () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMockito . mock ( Pix Key manager List Grpc Service Grpc . Pix Key manager List Grpc Service Blocking Stub :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġfun Ġstub Det al hes Mock () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMockito . mock ( Pix Key manager Detail Grpc Service Grpc . Pix Key manager Detail Grpc Service Blocking Stub :: class . java ) ĊĠĠĠ Ġ} Ċ Ċ }