package Ġbr . com . z up . edu . controller Ċ Ċ import Ġbr . com . z up . edu .* Ċ import Ġbr . com . z up . edu . dto . Ch ave Pix DTO Ċ import Ġcom . github . java faker . F aker Ċ import Ġio . grpc . Status Ċ import Ġio . grpc . Status RuntimeException Ċ import Ġio . mic ronaut . context . annotation . Factory Ċ import Ġio . mic ronaut . context . annotation . Re places Ċ import Ġio . mic ronaut . http . HttpHeaders Ċ import Ġio . mic ronaut . http . HttpRequest Ċ import Ġio . mic ronaut . http . HttpResponse Ċ 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 Ġjak arta . inject . Inject Ċ import Ġjak arta . inject . Singleton Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . mockito . Mockito Ċ import Ġjava . util .* Ċ Ċ @ Mic ronaut Test Ċ internal Ġclass ĠRegist ra Controller Test Ġ{ ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġ@ field : Client ("/") ĊĠĠĠ Ġlateinit Ġvar Ġclient : ĠHttpClient ĊĊĠĠĠ Ġ@ field : Inject ĊĠĠĠ Ġlateinit Ġvar Ġgrpc Client : ĠKey Manager Grpc Service Grpc . Key Manager Grpc Service Blocking Stub ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġret orn ar ĠOK Ġpara Ġuma Ġch ave Ġregist rada `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġident ificador Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġtipo Ch ave Ġ= ĠTipo Ch ave . CP F ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ" 6 0 3 1 5 4 0 8 0 0 6 " ĊĊĠĠĠĠĠĠĠ ĠMockito . ĊĠĠĠĠĠĠĠ Ġ` when `( grpc Client . regist ra Ch ave Pix ( ch ave Pix Request ( ident ificador , Ġtipo Ch ave , Ġch ave ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Ch ave Pix Response . newBuilder (). set Pix Id ( 1 ). build ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequis icao Ġ= ĠCh ave Pix DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= Ġtipo Ch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= ĠTipo Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠHttpRequest . POST ("/ api / cliente /$ ident ificador / ch ave - pix ", Ġrequis icao ) ĊĠĠĠĠĠĠĠ Ġval ĠhttpResponse Ġ= Ġclient . to Blocking (). exchange ( request , ĠCh ave Pix DTO :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( httpResponse ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . CREATED , ĠhttpResponse . status ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( httpResponse . header (" Location ") !!. contains (" 1 ")) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġret orn ar ĠBAD _ REQUEST Ġpara Ġdados Ġinvalid os `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġident ificador Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġtipo Ch ave Ġ= ĠTipo Ch ave . CP F ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġrequis icao Ġ= ĠCh ave Pix DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= Ġtipo Ch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= ĠTipo Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= HttpRequest . POST ("/ api / cliente /$ ident ificador / ch ave - pix ", Ġrequis icao ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠassertThrows < HttpClient Response Exception >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . to Blocking (). exchange ( request , ĠCh ave Pix DTO :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( error ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . BAD _ REQUEST , Ġerror . status ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġret orn ar ĠNOT _ FOUND Ġpara Ġcliente Ġin existent e Ġno ĠI tau `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġident ificador Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġtipo Ch ave Ġ= ĠTipo Ch ave . CP F ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ" 6 0 3 1 5 4 0 8 0 0 6 " ĊĊĠĠĠĠĠĠĠ Ġval Ġrequis icao Ġ= ĠCh ave Pix DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= Ġtipo Ch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= ĠTipo Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠMockito . ĊĠĠĠĠĠĠĠ Ġ` when `( grpc Client . regist ra Ch ave Pix ( ch ave Pix Request ( ident ificador , Ġtipo Ch ave , Ġch ave ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Status RuntimeException ( Status . NOT _ FOUND )) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= HttpRequest . POST ("/ api / cliente /$ ident ificador / ch ave - pix ", Ġrequis icao ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠassertThrows < HttpClient Response Exception >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . to Blocking (). exchange ( request , ĠCh ave Pix DTO :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln ( error . message ) ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( error ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . NOT _ FOUND , Ġerror . status ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġ` de ve Ġret orn ar ĠUN PROCESS ABLE _ ENTITY Ġpara Ġch ave Ġja Ġcada str ada `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġident ificador Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġtipo Ch ave Ġ= ĠTipo Ch ave . CP F ĊĠĠĠĠĠĠĠ Ġval Ġch ave Ġ= Ġ" 6 0 3 1 5 4 0 8 0 0 6 " ĊĊĠĠĠĠĠĠĠ Ġval Ġrequis icao Ġ= ĠCh ave Pix DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave Ġ= Ġtipo Ch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave Ġ= Ġch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Cont a Ġ= ĠTipo Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠMockito . ĊĠĠĠĠĠĠĠ Ġ` when `( grpc Client . regist ra Ch ave Pix ( ch ave Pix Request ( ident ificador , Ġtipo Ch ave , Ġch ave ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Throw ( Status RuntimeException ( Status . AL READY _ EXISTS )) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= HttpRequest . POST ("/ api / cliente /$ ident ificador / ch ave - pix ", Ġrequis icao ) ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠassertThrows < HttpClient Response Exception >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . to Blocking (). exchange ( request , ĠCh ave Pix DTO :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( error ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatus . UN PROCESS ABLE _ ENTITY , Ġerror . status ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġch ave Pix Request ( ident ificador : ĠString , Ġtipo Ch ave : ĠTipo Ch ave , Ġch ave : ĠString ): ĠCh ave Pix Request Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCh ave Pix Request . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ident ificador ( ident ificador ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo Ch ave ( tipo Ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ch ave ( ch ave ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tipo Cont a ( Tipo Cont a . CONT A _ COR REN TE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġch ave Pix DTO ( tipo Ch ave : ĠTipo Ch ave , Ġch ave : ĠString ): ĠCh ave Pix DTO Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCh ave Pix DTO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtipo Ch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch ave , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTipo Cont a . CONT A _ COR REN TE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Factory ĊĠĠĠ Ġ@ Re places ( factory Ġ= ĠGr pc Client Factory :: class ) ĊĠĠĠ Ġinternal Ġclass ĠMockito Client Stub Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Singleton ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġstub Mock () Ġ= ĠMockito . mock ( Key Manager Grpc Service Grpc . Key Manager Grpc Service Blocking Stub :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ