[Carol] Plataforma Carol permite o cadastro de URL inválidas no DataSubscription

Description

01 - STAKEHOLDER (quem valida e esclarece):
02 - PROBLEMA (cenário e/ou dor):

Através desse link curl 'http://localhost:19201/*/mdmSubscription/_search?size=900000' | jq -c '.hits.hits[]["_source"] | {mdmWebhookUrl}' | sort -k1 | uniq -c é possivel validar que a Plataforma Carol permite o cadastro de URL inválidas no Data Subscription. O que posteriormente causa erro na classe SubscriptionMessageReceiver no método getHttpRoute.

Stacktrace:

java.lang.IllegalArgumentException: The string " https" for the URI component SCHEME contains an invalid character, ' ', at index 0.	at org.glassfish.jersey.uri.UriComponent.validate(UriComponent.java:140)	at org.glassfish.jersey.uri.internal.JerseyUriBuilder.scheme(JerseyUriBuilder.java:258)	at org.glassfish.jersey.uri.internal.JerseyUriBuilder.uri(JerseyUriBuilder.java:181)	at org.glassfish.jersey.uri.internal.JerseyUriBuilder.uri(JerseyUriBuilder.java:52)	at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:96)	at org.glassfish.jersey.client.JerseyWebTarget.<init>(JerseyWebTarget.java:50)	at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:274)	at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:56)	at com.totvslabs.mdm.worker.handler.pubsub.SubscriptionMessageReceiver.createRequestBuilder(SubscriptionMessageReceiver.java:810)	at com.totvslabs.mdm.worker.handler.pubsub.SubscriptionMessageReceiver.receiveMessage(SubscriptionMessageReceiver.java:397)	at com.google.cloud.pubsub.v1.MessageDispatcher$3.run(MessageDispatcher.java:514)	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)	at java.base/java.lang.Thread.run(Thread.java:829)


03 - OBJETIVO (solução proposta):

Precisamos tanto criar uma validação para não permitir URL inválida, tanto quanto logar caso a gente tenha uma exception desse tipo pois hoje não temos informações nem qual é a subscription, nem a tenant e nem a URL invalida quando esse cenário acontece.


04 - QUEM PODE USAR (perfis de usuários):
05 - ASSETS (links e arquivos relevantes):
06 - CRITÉRIOS DE ACEITE:

  • Cadastro de URL Inválidas bloqueado tanto pela UI plataforma Carol quanto pelo envio de comandos CURL no terminal

  • Logs registrando tentativas de inserção de URL Inválidas na Carol:

    • Data e Hora da requisição

    • Host / IP de origem da requisição

    • Dispositivo utilizado (User Agent)

    • Tenant ID

    • Subscription ID

    • User ID