Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fjerne avhengighet til libs #215

Merged
merged 1 commit into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions apps/etterlatte-notifikasjoner/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ dependencies {
implementation(libs.ktor.jackson)
implementation(libs.rapidAndRivers)

implementation(libs.etterlatte.common)
implementation(libs.etterlatte.ktorClientAuth)

implementation(libs.brukernotifikasjonSchemas) {
exclude("org.apache.commons", "commons-compress")
}
Expand All @@ -19,5 +16,4 @@ dependencies {
implementation(libs.kafka.clients)

testImplementation(libs.mockk)
testImplementation(libs.etterlatte.commonTest)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package no.nav.etterlatte

import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.module.kotlin.readValue
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.InnsendtSoeknad
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.MessageContext
import no.nav.helse.rapids_rivers.RapidsConnection
Expand Down Expand Up @@ -30,7 +30,7 @@ class Notifikasjon(private val sendNotifikasjon: SendNotifikasjon, rapidsConnect

override fun onPacket(packet: JsonMessage, context: MessageContext) {
runBlocking {
val soeknad: InnsendtSoeknad = mapper.readValue(packet["@skjema_info"].toString())
val soeknad = mapper.readValue<Soeknad>(packet["@skjema_info"].toString())

sendNotifikasjon.sendMessage(soeknad)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package no.nav.etterlatte

import com.fasterxml.jackson.databind.JsonNode
import no.nav.brukernotifikasjon.schemas.builders.BeskjedInputBuilder
import no.nav.brukernotifikasjon.schemas.builders.NokkelInputBuilder
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.InnsendtSoeknad
import no.nav.etterlatte.libs.common.innsendtsoeknad.common.SoeknadType
import org.apache.kafka.clients.producer.KafkaProducer
import org.apache.kafka.clients.producer.Producer
import org.apache.kafka.clients.producer.ProducerRecord
Expand All @@ -29,19 +28,19 @@ class SendNotifikasjon(
private val sikkerhetsNivaa = 4
private val eksternVarsling = false

fun sendMessage(soeknad: InnsendtSoeknad) {
val innsender = soeknad.innsender.foedselsnummer.svar.value
fun sendMessage(soeknad: Soeknad) {
val innsender = soeknad.innsender.foedselsnummer.value

send(opprettNokkel(innsender), opprettBeskjed(soeknad))
send(opprettNokkel(innsender), opprettBeskjed(soeknad.type))
}

internal fun opprettBeskjed(soeknad: InnsendtSoeknad): BeskjedInput {
internal fun opprettBeskjed(type: Soeknad.Type): BeskjedInput {
val now = LocalDateTime.now(ZoneOffset.UTC)
val weekFromNow = now.plusDays(7)
val tekst = when (soeknad.type) {
SoeknadType.GJENLEVENDEPENSJON -> "Vi har mottatt søknaden din om gjenlevendepensjon"
SoeknadType.BARNEPENSJON -> "Vi har mottatt søknaden din om barnepensjon"
SoeknadType.OMSTILLINGSSTOENAD -> "Vi har mottatt søknaden din om omstillingsstønad"
val tekst = when (type) {
Soeknad.Type.GJENLEVENDEPENSJON -> "Vi har mottatt søknaden din om gjenlevendepensjon"
Soeknad.Type.BARNEPENSJON -> "Vi har mottatt søknaden din om barnepensjon"
Soeknad.Type.OMSTILLINGSSTOENAD -> "Vi har mottatt søknaden din om omstillingsstønad"
}

return BeskjedInputBuilder()
Expand All @@ -65,7 +64,7 @@ class SendNotifikasjon(
producer.send(ProducerRecord(brukernotifikasjontopic, nokkel, beskjed)).get(10, TimeUnit.SECONDS)
} catch (e: Exception) {
logger.error(
"Beskjed til $brukernotifikasjontopic (Ditt NAV) for søknad med id ${nokkel.getGrupperingsId()} feilet.",
"Beskjed til $brukernotifikasjontopic (Ditt NAV) for søknad med id ${nokkel.grupperingsId} feilet.",
e
)
}
Expand Down
25 changes: 25 additions & 0 deletions apps/etterlatte-notifikasjoner/src/main/kotlin/Soeknad.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.etterlatte

import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty

@JsonIgnoreProperties(ignoreUnknown = true)
data class Soeknad(
val innsender: Innsender,
val type: Type
) {
enum class Type {
GJENLEVENDEPENSJON,
BARNEPENSJON,
OMSTILLINGSSTOENAD
}
}

data class Innsender(
val foedselsnummer: Foedselsnummer
)

data class Foedselsnummer(
@JsonProperty("svar")
val value: String
)
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.module.kotlin.readValue
import io.mockk.mockk
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.Notifikasjon
import no.nav.etterlatte.SendNotifikasjon
import no.nav.etterlatte.libs.common.test.InnsendtSoeknadFixtures
import no.nav.etterlatte.Soeknad
import no.nav.etterlatte.mapper
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.testsupport.TestRapid
Expand Down Expand Up @@ -34,7 +36,9 @@ internal class NotifikasjonTest {

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av gjenlevendepensjon`() {
val soeknad: String = mapper.writeValueAsString(InnsendtSoeknadFixtures.gjenlevendepensjon())
val json = this::class.java.getResource("gjenlevendepensjon.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -49,7 +53,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "3"))
)
Expand All @@ -65,18 +69,20 @@ internal class NotifikasjonTest {
assertEquals("SendNotifikasjon 3", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(
mockKafkaProducer.history()[0].value().getTekst(),
mockKafkaProducer.history()[0].value().tekst,
"Vi har mottatt søknaden din om gjenlevendepensjon"
)
assertEquals(
InnsendtSoeknadFixtures.gjenlevendepensjon().innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av barnepensjon`() {
val soeknad: String = mapper.writeValueAsString(InnsendtSoeknadFixtures.barnepensjon())
val json = this::class.java.getResource("barnepensjon.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -91,7 +97,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "5"))
)
Expand All @@ -106,17 +112,18 @@ internal class NotifikasjonTest {
assertEquals("4", inspector.message(0).get("@lagret_soeknad_id").asText())
assertEquals("SendNotifikasjon 5", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(mockKafkaProducer.history()[0].value().getTekst(), "Vi har mottatt søknaden din om barnepensjon")
assertEquals(mockKafkaProducer.history()[0].value().tekst, "Vi har mottatt søknaden din om barnepensjon")
assertEquals(
InnsendtSoeknadFixtures.barnepensjon().innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}

@Test
fun `Skal opprette notifikasjon til innsender ved innsending av omstillingsstoenad`() {
val omstillingsstoenadSoeknad = InnsendtSoeknadFixtures.omstillingsSoeknad()
val soeknad: String = mapper.writeValueAsString(omstillingsstoenadSoeknad)
val json = this::class.java.getResource("omstillingsstoenad.json")!!.readText()
val soeknad: Soeknad = mapper.readValue(json)

val inspector = TestRapid()
.apply {
Notifikasjon(
Expand All @@ -131,7 +138,7 @@ internal class NotifikasjonTest {
"@event_name" to "soeknad_innsendt",
"@dokarkivRetur" to "123456",
"@fnr_soeker" to "07106123912",
"@skjema_info" to mapper.readTree(soeknad),
"@skjema_info" to mapper.readTree(json),
"@lagret_soeknad_id" to "4",
"@dokarkivRetur" to (mapOf("journalpostId" to "5"))
)
Expand All @@ -147,12 +154,12 @@ internal class NotifikasjonTest {
assertEquals("SendNotifikasjon 5", inspector.key(0))
assertEquals(mockKafkaProducer.history().size, 1)
assertEquals(
mockKafkaProducer.history()[0].value().getTekst(),
mockKafkaProducer.history()[0].value().tekst,
"Vi har mottatt søknaden din om omstillingsstønad"
)
assertEquals(
omstillingsstoenadSoeknad.innsender.foedselsnummer.svar.value,
mockKafkaProducer.history()[0].key().getFodselsnummer()
soeknad.innsender.foedselsnummer.value,
mockKafkaProducer.history()[0].key().fodselsnummer
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import io.mockk.mockk
import no.nav.brukernotifikasjon.schemas.input.BeskjedInput
import no.nav.brukernotifikasjon.schemas.input.NokkelInput
import no.nav.etterlatte.SendNotifikasjon
import no.nav.etterlatte.libs.common.test.InnsendtSoeknadFixtures
import no.nav.etterlatte.Soeknad
import org.apache.kafka.clients.producer.Producer
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneOffset

class SendNotifikasjonTest {
internal class SendNotifikasjonTest {
private val mockKafkaProducer = mockk<Producer<NokkelInput, BeskjedInput>>()
private val sendNotifikasjon = SendNotifikasjon(
mapOf(
Expand All @@ -20,7 +20,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for gjenlevendepensjon`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.gjenlevendepensjon())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.GJENLEVENDEPENSJON)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om gjenlevendepensjon", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand All @@ -37,7 +37,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for barnepensjon`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.barnepensjon())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.BARNEPENSJON)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om barnepensjon", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand All @@ -54,7 +54,7 @@ class SendNotifikasjonTest {

@Test
fun `skal opprette melding for omstillingsstoenad`() {
val beskjed = sendNotifikasjon.opprettBeskjed(InnsendtSoeknadFixtures.omstillingsSoeknad())
val beskjed = sendNotifikasjon.opprettBeskjed(Soeknad.Type.OMSTILLINGSSTOENAD)
assertEquals(false, beskjed.getEksternVarsling())
assertEquals("Vi har mottatt søknaden din om omstillingsstønad", beskjed.getTekst())
assertEquals(true, isWithin10Seconds(beskjed.getTidspunkt().toLocalDateTime()))
Expand Down
Loading