package Ġcom . z up edu . gab riel ped ric o . endpoints . regist ra Ċ Ċ import Ġcom . z up edu . gab riel ped ric o . Regist ra Ch ave Pix Request Ċ import Ġcom . z up edu . gab riel ped ric o . Regist ra Pix Grpc Service Grpc Ċ import Ġcom . z up edu . gab riel ped ric o . Tipo De Ch ave Ċ import Ġcom . z up edu . gab riel ped ric o . Tipo De Cont a Ċ import Ġcom . z up edu . gab riel ped ric o . d tos . regist ra . Bank Account Ċ import Ġcom . z up edu . gab riel ped ric o . d tos . regist ra . B cb Ch ave Pix Request Ċ import Ġcom . z up edu . gab riel ped ric o . d tos . regist ra . Owner Ċ import Ġcom . z up edu . gab riel ped ric o . integrations .* Ċ import Ġcom . z up edu . gab riel ped ric o . models . Ch ave Pix Ċ import Ġcom . z up edu . gab riel ped ric o . repositories . Ch ave Pix Repository Ċ import Ġio . grpc . Managed Channel Ċ import Ġio . grpc . Status Ċ import Ġio . grpc . Status RuntimeException Ċ import Ġio . mic ronaut . context . annotation . Bean Ċ import Ġio . mic ronaut . context . annotation . Factory Ċ import Ġio . mic ronaut . grpc . annotation . Grpc Channel Ċ import Ġio . mic ronaut . grpc . server . Grpc Server Channel Ċ import Ġio . mic ronaut . http . HttpResponse Ċ import Ġio . mic ronaut . test . annotation . Mock Bean Ċ import Ġio . mic ronaut . test . extensions . junit 5 . annotation . Mic ronaut Test Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Assertions . assertNotNull Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ Mic ronaut Test ( transaction al Ġ= Ġfalse ) Ċ internal Ġclass ĠRegist ra Ch ave Endpoint Test ( ĊĠĠĠ Ġval Ġrepository : ĠCh ave Pix Repository , ĊĠĠĠ Ġval Ġgrpc Client : ĠRegist ra Pix Grpc Service Grpc . Regist ra Pix Grpc Service Blocking Stub Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġit au Client : ĠCont as De Client es No It au Client ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠCLIENT E _ ID Ġ= ĠUUID . randomUUID () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġregist rar Ġnova Ġch ave Ġpix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// c enario ĊĠĠĠĠĠĠĠ ĠMockito .` when `( it au Client . bus ca Cont a Por Tipo ( cliente Id Ġ= ĠCLIENT E _ ID . toString (), Ġtipo Ġ= Ġ" CONT A _ COR REN TE ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . ok ( dados Da Cont a Response ())) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb cb Client (). regist ra Cont a ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB cb Ch ave Pix Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcom . z up edu . gab riel ped ric o . enums . Tipo De Ch ave . EMAIL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" gab riel . ped ric o @ z up . com . br ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBank Account ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 0 7 0 1 1 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 1 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 9 1 9 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" C ACC " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOwner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NAT UR AL _ PERSON ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RA FA EL ĠM ĠC ĠP ON TE ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 2 4 6 7 7 8 1 0 5 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ )). thenReturn ( HttpResponse . ok ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client Ġ. Ġregist ra Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegist ra Ch ave Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( CLIENT E _ ID . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Ch ave ( Tipo De Ch ave . EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" gab riel . ped ric o @ z up . com . br ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Cont a ( Tipo De Cont a . CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( CLIENT E _ ID . toString (), ĠclientId ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( pix Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġregist rar Ġch ave Ġpix Ġexist ente `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// c en Ã¡rio ĊĠĠĠĠĠĠĠ Ġrepository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCh ave Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ġ= Ġcom . z up edu . gab riel ped ric o . enums . Tipo De Ch ave . CP F , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġ" 4 1 5 3 1 9 5 2 8 6 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcliente Id Ġ= ĠCLIENT E _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtipo De Cont a Ġ= ĠTipo De Cont a . CONT A _ COR REN TE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconta Ġ= Ġdados Da Cont a Response (). para Cont a Associ ada () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . regist ra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegist ra Ch ave Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( CLIENT E _ ID . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Ch ave ( Tipo De Ch ave . CP F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" 4 1 5 3 1 9 5 2 8 6 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Cont a ( Tipo De Cont a . CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . AL READY _ EXISTS . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave ĠP ix Ġ' 4 1 5 3 1 9 5 2 8 6 0 ' Ġexist ente ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġregist rar Ġch ave Ġpix Ġquando Ġn ao Ġencontr ar Ġdados Ġda Ġconta Ġcliente `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// c en Ã¡rio ĊĠĠĠĠĠĠĠ Ġ` when `( it au Client . bus ca Cont a Por Tipo ( cliente Id Ġ= ĠCLIENT E _ ID . toString (), Ġtipo Ġ= Ġ" CONT A _ COR REN TE ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . not Found ()) ĊĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . regist ra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegist ra Ch ave Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( CLIENT E _ ID . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Ch ave ( Tipo De Ch ave . EMAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" ped rip ed rio @ gmail . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo De Cont a ( Tipo De Cont a . CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . FAILED _ PRE CONDITION . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Cliente ĠnÃ£o Ġencontr ado Ġno ĠI tau ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġregist rar Ġch ave Ġpix Ġquando Ġparame tros Ġfore m Ġinvalid os `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . regist ra ( Regist ra Ch ave Pix Request . newBuilder (). build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Dados Ġinv Ã¡l idos ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Mock Bean ( Cont as De Client es No It au Client :: class ) ĊĠĠĠ Ġfun Ġit au Client (): ĠCont as De Client es No It au Client ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMockito . mock ( Cont as De Client es No It au Client :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Mock Bean ( B cb Client :: class ) ĊĠĠĠ Ġfun Ġb cb Client (): ĠB cb Client Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMockito . mock ( B cb Client :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġclass ĠClients Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġblocking Stub (@ Grpc Channel ( Grpc Server Channel . NAME ) Ġchannel : ĠManaged Channel ): ĠRegist ra Pix Grpc Service Grpc . Regist ra Pix Grpc Service Blocking Stub Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRegist ra Pix Grpc Service Grpc . new Blocking Stub ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdados Da Cont a Response (): ĠD ados Da Cont a Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠD ados Da Cont a Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ġ= Ġ" CONT A _ COR REN TE ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst itu icao Ġ= ĠInst itu icao Response (" UN IB AN CO ĠI TA U ĠSA ", Ġ" IT AU _ UN IB AN CO _ IS BP "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġag encia Ġ= Ġ" 1 2 1 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumero Ġ= Ġ" 2 9 1 9 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt it ular Ġ= ĠT it ular Response (" 9 7 3 d 9 0 e 9 - ba 0 9 - 4 1 8 d - aa 1 e - 7 8 5 cf 2 f 4 1 3 5 0 ", Ġ" RA FA EL ĠM ĠC ĠP ON TE ", Ġ" 4 1 5 3 1 9 5 2 8 6 0 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }