package Ġbr . com . z up . consult a Ċ Ċ import Ġbr . com . z up .* Ċ import Ġbr . com . z up . bcb .* Ċ import Ġbr . com . z up . it au . Cont a Ċ import Ġbr . com . z up . it au . Inst itu icao Ċ 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 .* Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . junit . jupiter . api . function . Executable Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Empty Source Ċ import Ġorg . junit . jupiter . params . provider . Null Source Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ Mic ronaut Test ( transaction al Ġ= Ġfalse ) Ċ internal Ġclass ĠKey Manager Consult a Test ( ĊĠĠĠ Ġprivate Ġval Ġch ave Pix Repository : ĠCh ave Pix Repository , ĊĠĠĠ Ġprivate Ġval Ġgrpc Client : ĠKey Manager Consult a Grpc Service Grpc . Key Manager Consult a Grpc Service Blocking Stub Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġb cb Client : ĠHttpClient B cb ĊĊĠĠĠ Ġprivate Ġval Ġid Cliente : ĠUUID Ġ= ĠUUID . randomUUID () ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġch ave Pix Repository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna Ġdados Ġda Ġch ave Ġquando Ġconsult ado Ġp ela Ġch ave `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client . consult a ( consult a Ch ave Request Por Ch ave ( ch ave . ch ave )) ĊĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconta Ġ= Ġthis . ch ave . cont a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcri ado Em Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . of Epoch Second ( this . ch ave . cri ada Em . seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Zone ( Zone Id . of (" UTC ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . id Cliente , Ġthis . id Cliente ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . id , Ġthis . id Pix . to Long ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Ch ave , Ġthis . ch ave . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . ch ave , Ġthis . ch ave . ch ave ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Cont a , Ġconta . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . inst itu icao . nome Inst itu icao , Ġconta . inst itu icao ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . nome Cliente , Ġconta . nome T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . cpf Cliente , Ġconta . cpf T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . ag encia , Ġconta . ag encia ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . numero Da Cont a , Ġconta . numero Cont a ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . regist rada Em . to LocalDate (), Ġcri ado Em ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna ĠNOT _ FOUND Ġquando Ġa Ġch ave Ġn ao Ġexiste Ġno ĠB CB `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ" ch ave " ĊĠĠĠĠĠĠĠ Ġ` when `( bcb Client . consult a Ch ave ( ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . not Found ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Ch ave ( ch ave )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" Ch ave Ġch ave Ġn ao Ġencontr ada ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . NOT _ FOUND . code , Ġthis . status . code ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna Ġdados Ġda Ġch ave Ġret orn ada Ġdo ĠB CB Ġquando Ġconsult ado Ġp ela Ġch ave Ġe Ġn ao Ġlocal izada Ġna Ġbase ĠI TA U `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ") ĊĊĠĠĠĠĠĠĠ Ġ` when `( bcb Client . consult a Ch ave ( ch ave . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . ok ( pix Key Details Response ( ch ave ))) ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client . consult a ( consult a Ch ave Request Por Ch ave ( ch ave . ch ave )) ĊĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconta Ġ= Ġthis . ch ave . cont a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcri ado Em Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . of Epoch Second ( this . ch ave . cri ada Em . seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Zone ( Zone Id . of (" UTC ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Ch ave , Ġthis . ch ave . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . ch ave , Ġthis . ch ave . ch ave ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Cont a , Ġconta . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Inst itu icao . IS BP , Ġconta . inst itu icao ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . nome Cliente , Ġconta . nome T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . cpf Cliente , Ġconta . cpf T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . ag encia , Ġconta . ag encia ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . numero Da Cont a , Ġconta . numero Cont a ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . regist rada Em . to LocalDate (), Ġcri ado Em ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna Ġdados Ġda Ġch ave Ġquando Ġconsult ado Ġpelo Ġid Ġda Ġch ave Ġe Ġid Ġdo Ġcliente `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġ` when `( bcb Client . consult a Ch ave ( ch ave . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . ok ()) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Id Pix ( id Pix Ġ= Ġch ave . id . toString (), Ġid Cliente Ġ= Ġch ave . id Cliente )) ĊĊĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconta Ġ= Ġthis . ch ave . cont a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcri ado Em Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . of Epoch Second ( this . ch ave . cri ada Em . seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Zone ( Zone Id . of (" UTC ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . id Cliente , Ġthis . id Cliente ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . id , Ġthis . id Pix . to Long ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Ch ave , Ġthis . ch ave . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . ch ave , Ġthis . ch ave . ch ave ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . tipo Cont a , Ġconta . tipo ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . inst itu icao . nome Inst itu icao , Ġconta . inst itu icao ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . nome Cliente , Ġconta . nome T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . cpf Cliente , Ġconta . cpf T it ular ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . ag encia , Ġconta . ag encia ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . cont a . numero Da Cont a , Ġconta . numero Cont a ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( ch ave . regist rada Em . to LocalDate (), Ġcri ado Em ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna ĠNOT _ FOUND Ġquando Ġbus ca Ġpor Ġid Ġe Ġa Ġch ave Ġn ao Ġexiste `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Pix Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Id Pix ( id Cliente Ġ= Ġid Cliente . toString (), Ġid Pix Ġ= Ġid Pix )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" Ch ave Ġ$ id Pix Ġn ao Ġencontr ada ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . NOT _ FOUND . code , Ġthis . status . code ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna ĠNOT _ FOUND Ġquando Ġid Cliente Ġinform ado Ġeh Ġdifer ente Ġdo Ġid Ġdo Ġdon o Ġda Ġch ave `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġ` when `( bcb Client . consult a Ch ave ( ch ave . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . ok ()) ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsulta Ch ave Request Por Id Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Cliente Ġ= ĠUUID . randomUUID (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Pix Ġ= Ġch ave . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" Ch ave Ġ${ ch ave . id } Ġn ao Ġencontr ada ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . NOT _ FOUND . code , Ġthis . status . code ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Null Source ĊĠĠĠ Ġ@ Empty Source ĊĠĠĠ Ġfun Ġ` Ret orna ĠINVALID _ ARGUMENT Ġquando Ġid Cliente Ġeh Ġn ulo Ġou Ġv az io `( id Cliente : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Id Pix ( id Cliente Ġ= Ġid Cliente , Ġid Pix Ġ= Ġch ave . id . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" id Cliente Ġinvalid o ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġthis . status . code ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Null Source ĊĠĠĠ Ġ@ Empty Source ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[" id Pix N ao Numero "]) ĊĠĠĠ Ġfun Ġ` Ret orna ĠINVALID _ ARGUMENT Ġquando Ġid Pix Ġeh Ġn ulo , Ġv az io Ġou Ġinvalid o `( id Pix : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Id Pix ( id Cliente Ġ= Ġid Cliente . toString (), Ġid Pix Ġ= Ġid Pix )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" id Pix ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġthis . status . code ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Null Source ĊĠĠĠ Ġ@ Empty Source ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[" Lorem Ġipsum Ġdolor Ġsit Ġamet , Ġconsectetur Ġadipiscing Ġelit . ĠDuis Ġporta Ġtellus Ġeu ." ]) ĊĠĠĠ Ġfun Ġ` Ret orna ĠINVALID _ ARGUMENT Ġquando Ġch ave Ġn ulo , Ġv az io Ġou Ġmai or Ġdo Ġque Ġ 7 7 Ġcaracteres `( ch ave : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( consult a Ch ave Request Por Ch ave ( ch ave )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġthis . status . code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ret orna ĠNOT _ FOUND Ġquando ĠB CB Ġret orna Ġstatus Ġdifer ente Ġde ĠOK Ġna Ġbus ca Ġpor Ġid Pix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġch ave Pix Repository . save ( ch ave Pix (" 7 9 4 3 6 7 0 2 0 5 1 ")) ĊĠĠĠĠĠĠĠ Ġ` when `( bcb Client . consult a Ch ave ( ch ave . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . not Found ()) ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . consult a ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsulta Ch ave Request Por Id Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Cliente Ġ= ĠUUID . randomUUID (). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Pix Ġ= Ġch ave . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertTrue ( this . message !!. contains (" Ch ave Ġ${ ch ave . id } Ġn ao Ġencontr ada ")) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utable Ġ{ ĠassertEquals ( Status . NOT _ FOUND . code , Ġthis . status . code ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconsulta Ch ave Request Por Ch ave ( ch ave : ĠString ?): ĠConsult a Ch ave Request Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( ch ave Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder (). build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( ch ave ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconsulta Ch ave Request Por Id Pix ( id Cliente : ĠString ?, Ġid Pix : ĠString ?): ĠConsult a Ch ave Request Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( id Cliente Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Pix Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( id Pix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Pix Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Cliente ( id Cliente ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsult a Ch ave Request . Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Cliente ( id Cliente ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( id Pix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpix Key Details Response ( ch ave : ĠCh ave Pix ) Ġ= ĠP ix Key Details Response ( ĊĠĠĠĠĠĠĠ Ġkey Type Ġ= ĠKey Type . CP F , ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġch ave . ch ave , ĊĠĠĠĠĠĠĠ Ġbank Account Ġ= ĠBank Account ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= ĠInst itu icao . IS BP , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġch ave . cont a . ag encia . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Number Ġ= Ġch ave . cont a . numero Da Cont a . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type Ġ= ĠBank Account . Account Type . C ACC ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġowner Ġ= ĠOwner ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOwner . Owner Type . NAT UR AL _ PERSON , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġch ave . cont a . nome Cliente !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtax Id Number Ġ= Ġch ave . cont a . cpf Cliente !! ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠLocalDateTime . now () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġch ave Pix ( ch ave : ĠString ) Ġ= ĠCh ave Pix ( ĊĠĠĠĠĠĠĠ Ġch ave , ĊĠĠĠĠĠĠĠ ĠTipo Ch ave . CP F , ĊĠĠĠĠĠĠĠ ĠTipo Cont a . CONT A _ COR REN TE , ĊĠĠĠĠĠĠĠ Ġid Cliente Ġ= Ġid Cliente . toString (), ĊĠĠĠĠĠĠĠ ĠCont a ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cliente ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst itu icao Ġ= ĠInst itu icao ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" UN IB AN CO ĠI TA U ĠSA " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumero Da Cont a Ġ= Ġ" 1 2 3 4 5 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġag encia Ġ= Ġ" 1 2 3 4 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Mock Bean ( HttpClient B cb :: class ) ĊĠĠĠ Ġfun Ġb cb Client (): ĠHttpClient B cb Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMockito . mock ( HttpClient B cb :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġclass ĠClients Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġblocking Stub (@ Grpc Channel ( Grpc Server Channel . NAME ) Ġchannel : ĠManaged Channel ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Manager Consult a Grpc Service Grpc . Key Manager Consult a Grpc Service Blocking Stub ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKey Manager Consult a Grpc Service Grpc . new Blocking Stub ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }