package Ġbr . com . z up . edu . c int ia . test es Ċ Ċ import Ġbr . com . z up . edu . c int ia . Car rega Ch ave Grpc Service Grpc Ċ import Ġbr . com . z up . edu . c int ia . Car rega Ch ave Request Ċ import Ġbr . com . z up . edu . c int ia . Tipo Ch ave Ċ import Ġbr . com . z up . edu . c int ia . pix . car reg ach ave . dto . Ch ave Info Ċ import Ġbr . com . z up . edu . c int ia . pix . exception . vi olations Ċ import Ġbr . com . z up . edu . c int ia . pix . extern o . B CB Client Ċ import Ġbr . com . z up . edu . c int ia . pix . extern o . bcb .* Ċ import Ġbr . com . z up . edu . c int ia . pix . regist r ach ave . repository . Pix Repository Ċ import Ġbr . com . z up . edu . c int ia . util . Ger ador Ch ave Pix Ċ 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 . hamcrest . Matcher Assert Ċ import Ġorg . hamcrest . Matchers Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . mockito . Mockito Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ Mic ronaut Test ( transaction al Ġ= Ġfalse ) Ċ internal Ġclass ĠCar rega Ch ave Endpoint Test Ġ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠP ix Repository , ĊĠĠĠ Ġprivate Ġval Ġgrpc Client : ĠCar rega Ch ave Grpc Service Grpc . Car rega Ch ave Grpc Service Blocking Stub Ċ ) Ċ { ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġb cb Client : ĠB CB Client ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġval ĠCLIENT E _ ID Ġ= ĠUUID . randomUUID () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup (){ ĊĠĠĠĠĠĠĠ Ġrepository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGer ador Ch ave Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= ĠTipo Ch ave . EMAIL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalor Ch ave Ġ= Ġ" y uri . ol ive ira @ z up . com . br " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). ger ador Ch ave () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( Ger ador Ch ave Pix ( tipo Ch ave Ġ= ĠTipo Ch ave . CP F , Ġvalor Ch ave Ġ= Ġ" 6 3 6 5 7 5 2 0 3 2 5 "). ger ador Ch ave ()) ĊĠĠĠĠĠĠĠ Ġrepository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGer ador Ch ave Pix ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= ĠTipo Ch ave . ALE ATOR IA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalor Ch ave Ġ= Ġ" e 4 6 c 1 5 df - 3 af 2 - 4 b 0 d - bda 9 - 1 6 b 3 4 8 e 3 d 4 cf " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). ger ador Ch ave () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġrepository . save ( Ger ador Ch ave Pix ( tipo Ch ave Ġ= ĠTipo Ch ave . TELE F ONE , Ġvalor Ch ave Ġ= Ġ"+ 5 5 9 9 9 9 9 9 9 9 9 9 9 "). ger ador Ch ave ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġclean Up (){ ĊĠĠĠĠĠĠĠ Ġrepository . delete All () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 1 Â° Ġc en Ã¡rio Ġ- ĠH AP PY ĠPATH Ġ- Ġpor Ġpix Id Ġe Ġcliente Id ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcar regar Ġch ave Ġpor Ġpix Id Ġe Ġcliente Id ` (){ ĊĠĠĠĠĠĠĠ Ġ// c en Ã¡rio ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ex istent e Ġ= Ġrepository . findBy Valor Ch ave (" y uri . ol ive ira @ z up . com . br "). get () ĊĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ch ave Ex istent e . id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( ch ave Ex istent e . cliente Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()). build ()) ĊĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . id . toString (), Ġpix Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cliente Id . toString (), Ġcliente Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Ch ave . name , Ġch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . valor Ch ave , Ġch ave . ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Cont a . name , Ġch ave . cont a . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . nome T it ular , Ġch ave . cont a . nome Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . cpf T it ular , Ġch ave . cont a . cpf Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . nome Inst itu icao , Ġch ave . cont a . inst itu icao ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . ag encia , Ġch ave . cont a . ag encia ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . numero Cont a , Ġch ave . cont a . numero Da Cont a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 2 Â° Ġc en Ã¡rio Ġ- ĠH AP PY ĠPATH Ġ- Ġpor Ġch ave ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcar regar Ġch ave Ġpor Ġseu Ġvalor Ġquando Ġexist ir Ġno Ġbanco ` (){ ĊĠĠĠĠĠĠĠ Ġ// c en Ã¡rio ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ex istent e Ġ= Ġrepository . findBy Valor Ch ave (" y uri . ol ive ira @ z up . com . br "). get () ĊĠĠĠĠĠĠĠ Ġval Ġcar rega Ch ave Response Ġ= ĠCh ave Info . of ( ch ave Ex istent e ) ĊĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( ch ave Ex istent e . valor Ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . id . toString (), Ġpix Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cliente Id . toString (), Ġcliente Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Ch ave . name , Ġch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . valor Ch ave , Ġch ave . ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Cont a . name , Ġch ave . cont a . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . nome T it ular , Ġch ave . cont a . nome Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . cpf T it ular , Ġch ave . cont a . cpf Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . nome Inst itu icao , Ġch ave . cont a . inst itu icao ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . ag encia , Ġch ave . cont a . ag encia ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . cont a . numero Cont a , Ġch ave . cont a . numero Da Cont a ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . pix Id . toString (), Ġpix Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cliente Id . toString (), Ġcliente Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . tipo Ch ave . name , Ġch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . valor Ch ave , Ġch ave . ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . tipo Cont a . name , Ġch ave . cont a . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cont a . nome T it ular , Ġch ave . cont a . nome Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cont a . cpf T it ular , Ġch ave . cont a . cpf Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cont a . nome Inst itu icao , Ġch ave . cont a . inst itu icao ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cont a . ag encia , Ġch ave . cont a . ag encia ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( car rega Ch ave Response . cont a . numero Cont a , Ġch ave . cont a . numero Da Cont a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 3 Â° Ġc en Ã¡rio Ġ- ĠH AP PY ĠPATH ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcar regar Ġa Ġch ave Ġpor Ġseu Ġvalor Ġquando Ġn ao Ġexist ir Ġno Ġbanco Ġlocal Ġmas Ġsim Ġno Ġb cb ` (){ ĊĠĠĠĠĠĠĠ Ġ// c en Ã¡rio ĊĠĠĠĠĠĠĠ Ġval Ġdetal hes Ġ= Ġpix Key Details Response () ĊĠĠĠĠĠĠĠ Ġval Ġdetal he Response Ġ= Ġdetal hes . to Model () ĊĠĠĠĠĠĠĠ ĠMockito .` when `( bcb Client . findBy KeyValue (" email @ test e . com ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . ok ( detal hes )) ĊĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" email @ test e . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("", Ġpix Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("", Ġcliente Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . tipo Ch ave . name , Ġch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . valor Ch ave , Ġch ave . ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . tipo Cont a . name , Ġch ave . cont a . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . cont a . nome T it ular , Ġch ave . cont a . nome Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . cont a . cpf T it ular , Ġch ave . cont a . cpf Do T it ular ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . cont a . nome Inst itu icao , Ġch ave . cont a . inst itu icao ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . cont a . ag encia , Ġch ave . cont a . ag encia ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( detal he Response . cont a . numero Cont a , Ġch ave . cont a . numero Da Cont a ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 4 Â° Ġc en Ã¡rio Ġ- ĠBAD ĠPATH Ġ- ĠRe quis iÃ§Ã£o Ġinv Ã¡l ida ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcar regar Ġa Ġch ave Ġpor Ġpix Id Ġe Ġcliente Id Ġquando Ġa Ġrequis iÃ§Ã£o Ġfor Ġinv Ã¡l ida ` (){ ĊĠĠĠĠĠĠĠ Ġ// aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()). build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// valid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolations (), ĠMatch ers . contains In Any Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" cliente Id ", Ġ" n Ã£o Ġdeve Ġestar Ġem Ġbr anco "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" cliente Id ", Ġ" Format o Ġde ĠUUID Ġinv Ã¡l ido "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" pix Id ", Ġ" n Ã£o Ġdeve Ġestar Ġem Ġbr anco "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" pix Id ", Ġ" Format o Ġde ĠUUID Ġinv Ã¡l ido "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 5 Â° Ġc en Ã¡rio Ġ- ĠBAD ĠPATH Ġ- ĠRegist ro ĠnÃ£o Ġexiste ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcar regar Ġa Ġch ave Ġpor Ġpix Id Ġe Ġcliente Id Ġquando Ġregistro Ġn ao Ġexist ir `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġa Ã§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()). build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . NOT _ FOUND . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave ĠP ix ĠnÃ£o Ġencontr ada ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 6 Â° Ġc en Ã¡rio Ġ- ĠBAD ĠPATH Ġ- ĠN Ã£o Ġexiste Ġem Ġlugar Ġn en hum ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcar regar Ġa Ġch ave Ġpor Ġseu Ġvalor Ġquando Ġregistro Ġn ao Ġexist ir Ġnem Ġlocal mente Ġnem Ġno Ġb cb `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc en Ã¡rio ĊĠĠĠĠĠĠĠ ĠMockito .` when `( bcb Client . findBy KeyValue (" in existent e ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . not Found ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġa Ã§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" in existent e ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . NOT _ FOUND . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave Ġpix ĠnÃ£o Ġencontr ada ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 7 Â° Ġc en Ã¡rio Ġ- ĠBAD ĠPATH Ġ- ĠCh ave Ġpor Ġseu Ġvalor Ġcom Ġa Ġrequest Ġinv Ã¡l ida ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcar regar Ġa Ġch ave Ġpor Ġseu Ġvalor Ġquando Ġrequest Ġfor Ġinvalid a `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġa Ã§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . car rega ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Dados Ġinv Ã¡l idos ", Ġstatus . description ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMatcher Assert . assertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviolations (), ĠMatch ers . contains In Any Order ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ch ave ", Ġ" n Ã£o Ġdeve Ġestar Ġem Ġbr anco ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// 8 Â° Ġc en Ã¡rio Ġ- ĠBAD ĠPATH Ġ- ĠCh ave Ġcom Ġa Ġrequest Ġinv Ã¡l ida ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcar regar Ġa Ġch ave Ġquando Ġrequest Ġfor Ġinvalid a `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġa Ã§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrpc Client . car rega ( Car rega Ch ave Request . newBuilder (). build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( throw n ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave Ġpix Ġinv Ã¡l ida Ġou ĠnÃ£o Ġinform ada ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ////////////////////////////////////////////////////////////////// //////////////////////////////////////////////// / ĊĠĠĠ Ġ@ 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 ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Ch ave Grpc Service Grpc . Car rega Ch ave Grpc Service Blocking Stub Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCar rega Ch ave Grpc Service Grpc . new Blocking Stub ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpix Key Details Response (): ĠP ix Key Details Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠP ix Key Details Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Type Ġ= ĠP ix KeyType . EMAIL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" test e @ test e . com ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbank Account Ġ= ĠBank Account Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= Ġ" 9 0 4 0 0 8 8 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġ" 0 0 0 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Number Ġ= Ġ" 1 2 3 4 5 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type Ġ= ĠBank Account . Account Type . SV GS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner Ġ= ĠOwner Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠOwner . Owner Type . NAT UR AL _ PERSON , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Ful ano Ġde ĠT al ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtax Id Number Ġ= Ġ" 1 1 1 1 1 1 1 1 1 1 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }