package Ġbr . com . z up edu . pix . cad astro ch ave Ċ Ċ import Ġbr . com . z up . edu .* Ċ import Ġbr . com . z up edu . Grpc Client Factory Ċ 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 . http . client . exceptions . HttpClient Response Exception Ċ 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 . assertTrue Ċ 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 . util .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Mic ronaut Test Ċ class ĠC ad astro Ch ave Pix Controller Test ( Ċ ) Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġclient Regist ra Grpc : ĠKey Manager Regist ra Grpc Service Grpc . Key Manager Regist ra Grpc Service Blocking Stub ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġ@ field : Client ("/") ĊĠĠĠ Ġlateinit Ġvar Ġclient Http : ĠHttpClient ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` de ve Ġcada strar Ġuma Ġnova Ġch ave Ġpix `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc enario ĊĠĠĠĠĠĠĠ Ġval Ġid Cliente Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠ Ġval Ġpix Id Ġ= ĠUUID . randomUUID () ĊĊĠĠĠĠĠĠĠ Ġval Ġnova Ch ave Request Ġ= ĠN ova Ch ave Pix Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ġ= ĠTipo De Ch ave Request . CEL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġ"+ 7 3 4 3 3 6 7 2 0 0 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo De Cont a Ġ= ĠTipo De Cont a Request . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . POST ("/ api / v 1 / client es /${ id Cliente }/ pix ", Ġnova Ch ave Request ) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( client Regist ra Grpc . c ada strar ( Mockito . any ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegist ra Ch ave Pix Response . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Cliente ( id Cliente . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Pix ( pix Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġa cao ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient Http . to Blocking (). exchange ( request , ĠAny :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid ao ĊĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . CREATED , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( headers . contains (" Location ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( header (" Location "). contains ( pix Id . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` na o Ġdeve Ġcada strar Ġch ave Ġpix Ġcom Ġdados Ġinvalid os `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġc enario ĊĠĠĠĠĠĠĠ Ġval Ġid Cliente Ġ= Ġ" c 5 6 d fef 4 - 7 9 0 1 - 4 4 fb - 8 4 e 2 - a 2 ce fb 1 5 7 8 9 0 " ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtipo Ġ= ĠTipo De Ch ave Request . CEL ULAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ" 7 3 4 3 3 6 7 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtipo De Cont a Ġ= ĠTipo De Cont a Request . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . POST ("/ api / v 1 / client es /${ id Cliente }/ pix ", Ġbody ) ĊĊĠĠĠĠĠĠĠ ĠMockito .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Regist ra Grpc . c ada strar ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegist ra Ch ave Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Cliente ( id Cliente ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo ( Tipo Ch ave . valueOf ( body . tipo . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( body . ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo Cont a ( Tipo Cont a . valueOf ( body . tipo De Cont a . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). thenReturn ( Regist ra Ch ave Pix Response . newBuilder (). build ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġa cao ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠassertThrows < HttpClient Response Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Http . to Blocking (). exchange ( request , ĠAny :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalid ao ĊĠĠĠĠĠĠĠ Ġwith ( exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . BAD _ REQUEST , Ġstatus ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġ@ Re places ( factory Ġ= ĠGr pc Client Factory :: class ) ĊĠĠĠ Ġclass ĠMock Factory Grpc Client Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġfun Ġmock Regist ra (): ĠKey Manager Regist ra Grpc Service Grpc . Key Manager Regist ra Grpc Service Blocking Stub Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMockito . mock ( Key Manager Regist ra Grpc Service Grpc . Key Manager Regist ra Grpc Service Blocking Stub :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }