From 956a091414bd5f91905d2db062e6e09aa8150b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geir=20Andr=C3=A9=20Lund?= Date: Fri, 18 Oct 2024 15:59:12 +0200 Subject: [PATCH] =?UTF-8?q?Ettersom=20vi=20har=20startet=20=C3=A5=20fatte?= =?UTF-8?q?=20vedtak=20utenfor=20Arena=20og=20Lel-l=C3=B8sningen=20vil=20d?= =?UTF-8?q?et=20komme=20vedtak=20hvor=20Lel-l=C3=B8sningen=20ikke=20er=20i?= =?UTF-8?q?nvolvert.=20Laget=20en=20fiks=20der=20dp-regel-api=20skipper=20?= =?UTF-8?q?Id=20er=20som=20ikke=20er=20Ulid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../streams/KafkaSubsumsjonBruktConsumer.kt | 8 ++++ .../KafkaSubsumsjonBruktConsumerTest.kt | 37 +++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/main/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumer.kt b/src/main/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumer.kt index c499ea41..ed4d9c12 100644 --- a/src/main/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumer.kt +++ b/src/main/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumer.kt @@ -1,5 +1,6 @@ package no.nav.dagpenger.regel.api.streams +import de.huxhorn.sulky.ulid.ULID import mu.KotlinLogging import no.nav.dagpenger.regel.api.Configuration import no.nav.dagpenger.regel.api.db.EksternSubsumsjonBrukt @@ -82,6 +83,13 @@ internal class KafkaSubsumsjonBruktConsumer( .filterNot { _, bruktSubsumsjon -> "AVSLU" == bruktSubsumsjon.vedtakStatus && "AVBRUTT" == bruktSubsumsjon.utfall } + .filter { _, bruktSubsumsjon -> + kotlin.runCatching { ULID.parseULID(bruktSubsumsjon.id) }.isSuccess.also { + if (!it) { + LOGGER.warn { "Kunne ikke lese $bruktSubsumsjon -> ID er ikke ULID og ikke laget av dp-regel" } + } + } + } .mapValues { _, bruktSubsumsjon -> bruktSubsumsjonStrategy.handle(bruktSubsumsjon) } .filterNot { _, value -> value == null } .mapValues { _, faktum -> diff --git a/src/test/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumerTest.kt b/src/test/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumerTest.kt index 59c4173a..dabd707d 100644 --- a/src/test/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumerTest.kt +++ b/src/test/kotlin/no/nav/dagpenger/regel/api/streams/KafkaSubsumsjonBruktConsumerTest.kt @@ -31,6 +31,7 @@ import org.junit.jupiter.api.Test import java.time.LocalDate import java.time.ZonedDateTime import java.util.Properties +import java.util.UUID class KafkaSubsumsjonBruktConsumerTest { val streamsConfig = @@ -342,6 +343,42 @@ class KafkaSubsumsjonBruktConsumerTest { } } + @Test + fun `skal filtrere ut der Id ikke er laget av dp-regel-api (der Id er noe annet enn ULID)`() { + val config = Configuration + val storeMock = + mockk(relaxed = true) + val subsumsjonBruktConsumer = + KafkaSubsumsjonBruktConsumer(config, BruktSubsumsjonStrategy(mockk(relaxed = true), storeMock)) + + val bruktSubsumsjon = + EksternSubsumsjonBrukt( + id = UUID.randomUUID().toString(), + eksternId = 1234678L, + arenaTs = now, + ts = now.toInstant().toEpochMilli(), + ) + + TopologyTestDriver(subsumsjonBruktConsumer.buildTopology(), streamsConfig).use { + val topic = + it.createInputTopic( + subsumsjonBruktConsumer.subsumsjonBruktTopic.name, + subsumsjonBruktConsumer.subsumsjonBruktTopic.keySerde.serializer(), + subsumsjonBruktConsumer.subsumsjonBruktTopic.valueSerde.serializer(), + ) + topic.pipeInput(bruktSubsumsjon.toJson()) + + val outTopic = + it.createOutputTopic( + "teamdagpenger.inntektbrukt.v1", + Serdes.StringSerde().deserializer(), + Serdes.StringSerde().deserializer(), + ) + + outTopic.isEmpty shouldBe true + } + } + @Test fun `Should be able to convert scientific notation back to long`() { val science = "1.2345678E7"