package Ġbr . com . z up . b 1 gv ini . pix . grpc . car rega Ċ Ċ import Ġbr . com . z up . b 1 gv ini .* Ċ import Ġbr . com . z up . b 1 gv ini . clients .* Ċ import Ġbr . com . z up . b 1 gv ini . pix . model . Ch ave Pix Ċ import Ġbr . com . z up . b 1 gv ini . pix . model . Cont a Associ ada Ċ import Ġbr . com . z up . b 1 gv ini . pix . repository . 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 .* Ċ 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 : ĠCh ave Pix Repository , ĊĠĠĠ Ġprivate Ġval Ġservice Grpc : ĠCar rega Grpc Service Grpc . Car rega Grpc Service Blocking Stub Ċ ){ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġb cb : ĠB CB ĊĊĠĠĠ Ġ@ Mock Bean ( B CB :: class ) ĊĠĠĠ Ġfun Ġb cb Mock (): ĠB CB Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMockito . mock ( B CB :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġclass ĠClient Car rega Ch ave Pix Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Bean ĊĠĠĠĠĠĠĠ Ġfun Ġblocking Stub (@ Grpc Channel ( Grpc Server Channel . NAME ) Ġchannel : ĠManaged Channel ): ĠCar rega Grpc Service Grpc . Car rega Grpc Service Blocking Stub ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCar rega Grpc Service Grpc . new Blocking Stub ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġinternal Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġch ave Pix Ġ= ĠCh ave Pix ( ĊĠĠĠĠĠĠĠ ĠclientId Ġ= Ġ" 5 2 6 0 2 6 3 c - a 3 c 1 - 4 7 2 7 - ae 3 2 - 3 bdb 2 5 3 8 8 4 1 b ", ĊĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= Ġbr . com . z up . b 1 gv ini . pix . model . enums . Tipo Ch ave . EMAIL , ĊĠĠĠĠĠĠĠ Ġch ave Ġ= Ġ" ar mand o @ mail . com ", ĊĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= Ġbr . com . z up . b 1 gv ini . pix . model . enums . Tipo Cont a . CONT A _ COR REN TE , ĊĠĠĠĠĠĠĠ Ġconta Ġ= ĠCont a Associ ada ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst itu icao Nome Ġ= Ġ" Del co i ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinst itu icao I spb Ġ= Ġ" 6 0 7 0 1 1 9 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt it ular Nome Ġ= Ġ" Ar mand o ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt it ular C pf Ġ= Ġ" 0 1 0 0 2 0 0 3 0 4 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġag encia Ġ= Ġ" 0 0 0 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumero Cont a Ġ= Ġ" 1 0 0 0 1 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġpix Key Details Response (): ĠP ix Key Details Response Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠP ix Key Details Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Type Ġ= ĠP ix KeyType . EMAIL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" user . from . another . bank @ s ant ander . com . br ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbank Account Ġ= Ġbank Account (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġowner Ġ= Ġowner (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbank Account (): ĠBank Account Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBank Account ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparticipant Ġ= Ġ" 0 1 0 0 2 0 0 3 0 4 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbranch Ġ= Ġ" 0 0 0 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Number Ġ= Ġ" 1 0 0 0 1 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type Ġ= ĠBank Account . Account Type . C ACC ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġowner (): ĠOwner Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOwner ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠOwner . Owner Type . NAT UR AL _ PERSON , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Another ĠUser ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtax Id Number Ġ= Ġ" 1 2 3 4 5 6 7 8 9 0 1 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcar regar Ġch ave Ġpor Ġpix Id Ġe Ġcliente Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc en Ã¡rio ĊĠĠĠĠĠĠĠ Ġrepository . save ( ch ave Pix ) ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ex istent e Ġ= Ġrepository . findBy Ch ave (" ar mand o @ mail . com "). get () ĊĊĠĠĠĠĠĠĠ Ġ// Ġa Ã§Ã£o ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Pix Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ch ave Ex istent e . pix Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( ch ave Ex istent e . clientId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). build ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid aÃ§Ã£o ĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . pix Id , Ġthis . pix Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . clientId , Ġthis . clientId ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Ch ave . name , Ġthis . ch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . ch ave , Ġthis . ch ave . ch ave ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcar regar Ġch ave Ġpor Ġch ave ` (){ ĊĠĠĠĠĠĠĠ Ġ// c enario ĊĠĠĠĠĠĠĠ Ġrepository . save ( ch ave Pix ) ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ex istent e Ġ= Ġrepository . findBy Ch ave (" ar mand o @ mail . com "). get () ĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" ar mand o @ mail . com ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . tipo Ch ave . name , Ġthis . ch ave . tipo . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ch ave Ex istent e . ch ave , Ġthis . ch ave . ch ave ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar Ġerro Ġquando Ġfor Ġpass ado Ġapenas Ġa Ġch ave Ġe Ġa Ġch ave Ġfor Ġv az ia ` (){ ĊĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" ch ave : ĠnÃ£o Ġdeve Ġestar Ġem Ġbr anco ", status . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar Ġerro Ġquando Ġfor Ġpass ado Ġpix Id Ġe ĠclientId Ġe Ġe les Ġfore m Ġv az ios ` (){ ĊĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder (). set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Pix Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , status . code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar Ġerro Ġquando Ġfor Ġpass ado Ġpix Id Ġe ĠclientId Ġe Ġo Ġpix Id Ġn ao Ġfor Ġinform ado ` (){ ĊĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder (). set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Pix Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId (" 5 2 6 0 2 6 3 c - a 3 c 1 - 4 7 2 7 - ae 3 2 - 3 bdb 2 5 3 8 8 4 1 b ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , status . code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar Ġerro Ġquando Ġfor Ġpass ado Ġpix Id Ġe ĠclientId Ġe Ġo ĠclientId Ġn ao Ġfor Ġinform ado ` (){ ĊĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( Car rega Pix Request . newBuilder (). set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Pix Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id (" 5 2 6 0 2 6 3 c - a 3 c 1 - 4 7 2 7 - ae 3 2 - 3 bdb 2 5 3 8 8 4 1 b ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . INVALID _ ARGUMENT . code , status . code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar Ġum Ġerro Ġcaso Ġn ao Ġten ha Ġdados Ġde Ġentrada `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc enario ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCar rega Pix Request . newBuilder (). build () ĊĠĠĠĠĠĠĠ Ġ// Ġa cao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġvalid acao ĊĠĠĠĠĠĠĠ ĠassertEquals ( Status . INTERNAL . code , Ġresponse . status . code ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Inform ar Ġapenas Ġch ave Pix Ġou Ġ( clientId Ġe Ġpix Id )", Ġresponse . status . description ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar ĠNotFound Ġcaso Ġn ao Ġcons iga Ġa char Ġch ave Ġno ĠB CB `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc enario ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCar rega Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave (" ar mand o @ mail . com "). build () ĊĠĠĠĠĠĠĠ ĠMockito .` when `( bcb . bus car Ch ave Pix ( ch ave Pix . ch ave )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( HttpResponse . not Found ()) ĊĠĠĠĠĠĠĠ Ġ// Ġa cao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġvalid acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . NOT _ FOUND . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave ĠP ix ĠnÃ£o Ġencontr ada ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġret orn ar ĠNotFound Ġcaso Ġn ao Ġcons iga Ġa char ĠclientId , Ġpix Id Ġlocal `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc enario ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠCar rega Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar rega Pix Request . Filt ro Por Pix Id . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ClientId ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Pix Id ( UUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ// Ġa cao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠassertThrows < Status RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Grpc . car rega ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġvalid acao ĊĠĠĠĠĠĠĠ Ġwith ( response ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Status . NOT _ FOUND . code , Ġstatus . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Ch ave ĠP ix ĠnÃ£o Ġencontr ada ", Ġstatus . description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }