Skip to content

Commit

Permalink
Laget en konfigurasjon for oppgave tekster
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsmsa committed Sep 26, 2024
1 parent 8149909 commit 3fcc06e
Show file tree
Hide file tree
Showing 11 changed files with 156 additions and 11 deletions.
1 change: 1 addition & 0 deletions apps/bekreftelse-min-side-oppgaver/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies {
implementation(jackson.datatypeJsr310)
implementation(jackson.kotlin)
implementation(arrow.core)
implementation(hoplite.hopliteYaml)

implementation(navCommon.log)

Expand Down
2 changes: 2 additions & 0 deletions apps/bekreftelse-min-side-oppgaver/nais/nais-dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ spec:
env:
- name: KAFKA_KEYS_SCOPE
value: api://dev-gcp.paw.paw-kafka-key-generator/.default
- name: VARSEL_LINK
value: https://www.intern.dev.nav.no/minside/arbeidssoker/bekreftelse
liveness:
path: /internal/isAlive
initialDelay: 10
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import io.micrometer.prometheusmetrics.PrometheusMeterRegistry
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.applicationTopology
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.varselbygger.VarselMeldingBygger
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.kafkaTopics
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.minSideVarselKonfigurasjon
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.vo.InternTilstand
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.vo.StateStoreName
import no.nav.paw.config.env.currentRuntimeEnvironment
Expand Down Expand Up @@ -57,7 +58,10 @@ fun main() {
.withDefaultValueSerde(SpecificAvroSerde::class)
.withExactlyOnce()
val stream = KafkaStreams(streamsBuilder.applicationTopology(
varselMeldingBygger = VarselMeldingBygger(currentRuntimeEnvironment),
varselMeldingBygger = VarselMeldingBygger(
runtimeEnvironment = currentRuntimeEnvironment,
minSideVarselKonfigurasjon = minSideVarselKonfigurasjon()
),
kafkaTopics = kafkaTopics,
stateStoreName = STATE_STORE_NAME), streamsFactory.properties
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.varselbygger

import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.MinSideVarselKonfigurasjon
import no.nav.paw.bekreftelse.internehendelser.BekreftelseTilgjengelig
import no.nav.paw.config.env.RuntimeEnvironment
import no.nav.paw.config.env.appNameOrDefaultForLocal
Expand All @@ -10,21 +11,26 @@ import no.nav.tms.varsel.builder.VarselActionBuilder
import java.time.ZoneId
import java.util.*

class VarselMeldingBygger(private val runtimeEnvironment: RuntimeEnvironment) {
class VarselMeldingBygger(
private val minSideVarselKonfigurasjon: MinSideVarselKonfigurasjon,
private val runtimeEnvironment: RuntimeEnvironment
) {

fun opprettOppgave(identitetsnummer: String, hendelse: BekreftelseTilgjengelig): OpprettOppgave =
VarselActionBuilder.opprett {
varselId = hendelse.bekreftelseId.toString()
ident = identitetsnummer
sensitivitet = Sensitivitet.High
type = Varseltype.Oppgave
link = "https://bakreftelse-arbreg.nav.no/?bekreftelse=${hendelse.bekreftelseId}"
link = minSideVarselKonfigurasjon.link.toString()
produsent = runtimeEnvironment.produsent()
tekst = Tekst(
spraakkode = "nb",
tekst = "Du har en ny arbeidssøkerbekreftelse som venter",
default = true
)
minSideVarselKonfigurasjon.tekster.map { (spraak, tekst) ->
Tekst(
spraakkode = spraak.kode,
tekst = tekst,
default = spraak == minSideVarselKonfigurasjon.standardSpraak
)
}.forEach(tekster::add)
eksternVarsling = EksternVarslingBestilling(
utsettSendingTil = hendelse.gjelderTil.atZone(ZoneId.systemDefault()),
prefererteKanaler = listOf(EksternKanal.SMS)
Expand All @@ -44,4 +50,4 @@ fun RuntimeEnvironment.produsent() = Produsent(
cluster = clusterNameOrDefaultForLocal(),
namespace = namespaceOrDefaultForLocal(),
appnavn = appNameOrDefaultForLocal()
)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config

import no.nav.paw.config.hoplite.loadNaisOrLocalConfiguration
import java.net.URI

fun minSideVarselKonfigurasjon(): MinSideVarselKonfigurasjon = loadNaisOrLocalConfiguration("min_side_varsel.yaml")

data class MinSideVarselKonfigurasjon(
val link: URI,
val standardSpraak: Spraakkode,
val tekster: List<MinSideTekst>
) {
init {
requireNotNull(tekster.find { it.spraak == standardSpraak }) {
"Ingen av tekstene har språk $standardSpraak som er satt som standard språk"
}
}
}


data class Spraakkode(
/**
* Språkkode i henhold til ISO-639-1
*/
val kode: String
) {
init {
require(kode.length == 2) { "Språkkode må være to bokstaver (ISO-639-1)" }
}
}

data class MinSideTekst(
val spraak: Spraakkode,
val tekst: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
standardSpraak:
kode: en
link: http://localhost:8080/varsel
tekster:
- spraak:
kode: nb
tekst: Det er påtide å bekrefte arbeidssøkerperioden din i NAV.
- spraak:
kode: en
tekst: It is time to confirm your jobseeker period in NAV.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
standardSpraak:
kode: en
link: ${VARSEL_LINK}
tekster:
- spraak:
kode: nb
tekst: Det er påtide å bekrefte arbeidssøkerperioden din i NAV.
- spraak:
kode: en
tekst: It is time to confirm your jobseeker period in NAV.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.should
import io.kotest.matchers.shouldBe
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.varselbygger.VarselMeldingBygger
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.minSideVarselKonfigurasjon
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.vo.InternTilstand
import no.nav.paw.arbeidssoekerregisteret.testdata.bekreftelse.bekreftelseTilgjengelig
import no.nav.paw.config.env.Local
Expand All @@ -12,7 +13,10 @@ import java.util.*

private val oppgaveGeneratorLogger = LoggerFactory.getLogger("oppgaveGeneratorLogger")
class GenererOppgaveMeldingKtTest : FreeSpec({
val varselMeldingBygger = VarselMeldingBygger(runtimeEnvironment = Local)
val varselMeldingBygger = VarselMeldingBygger(
runtimeEnvironment = Local,
minSideVarselKonfigurasjon = minSideVarselKonfigurasjon()
)

"Når en ny bekreftelse blir tilgjengelig skal det genereres en oppgave " {
val gjeldeneTilstand = InternTilstand(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import io.confluent.kafka.streams.serdes.avro.SpecificAvroSerde
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.STATE_STORE_NAME
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.varselbygger.VarselMeldingBygger
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.KafkaTopics
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.minSideVarselKonfigurasjon
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.jacksonSerde
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.vo.InternTilstand
import no.nav.paw.arbeidssoekerregisteret.testdata.KafkaKeyContext
Expand Down Expand Up @@ -44,7 +45,10 @@ data class TestContext(

fun testContext(
runtimeEnvironment: RuntimeEnvironment = Local,
varselMeldingBygger: VarselMeldingBygger = VarselMeldingBygger(runtimeEnvironment),
varselMeldingBygger: VarselMeldingBygger = VarselMeldingBygger(
runtimeEnvironment = runtimeEnvironment,
minSideVarselKonfigurasjon = minSideVarselKonfigurasjon()
),
kafkaKeyContext: KafkaKeyContext = KafkaKeyContext(inMemoryKafkaKeysMock()),
kafkaTopics: KafkaTopics = KafkaTopics(
periodeTopic = "periodeTopic",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.applogic.varselbygger

import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.should
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.MinSideTekst
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.MinSideVarselKonfigurasjon
import no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config.Spraakkode
import no.nav.paw.arbeidssoekerregisteret.testdata.bekreftelse.bekreftelseTilgjengelig
import no.nav.paw.config.env.Local
import java.net.URI
import java.net.URL
import java.net.URLStreamHandler

class VarselMeldingByggerTest : FreeSpec({
val config = MinSideVarselKonfigurasjon(
link = URI.create("http://localhost:8080"),
standardSpraak = Spraakkode("en"),
tekster = listOf(
MinSideTekst(Spraakkode("nb"), "Hei!"),
MinSideTekst(Spraakkode("en"), "Hello!"),
)
)
val bygger = VarselMeldingBygger(
minSideVarselKonfigurasjon = config,
runtimeEnvironment = Local
)

"opprettOppgave" {
val hendelse = bekreftelseTilgjengelig()
val identitetsnummer = "12345678909"
val resultat = bygger.opprettOppgave(
identitetsnummer = identitetsnummer,
hendelse = hendelse
)
resultat.varselId shouldBe hendelse.bekreftelseId
resultat.value should { json ->
json shouldContain "\"varselId\":\"${hendelse.bekreftelseId}\""
json shouldContain "\"ident\":\"$identitetsnummer\""
json shouldContain "\"sensitivitet\":\"high\""
json shouldContain "\"type\":\"oppgave\""
json shouldContain "\"link\":\"${config.link}\""
json shouldContain config.tekster[0].tekst
json shouldContain config.tekster[1].tekst
}
}

"avsluttOppgave" {
val bekreftelse = java.util.UUID.randomUUID()
val resultat = bygger.avsluttOppgave(bekreftelse)
resultat.varselId shouldBe bekreftelse
resultat.value should { json ->
json shouldContain "\"varselId\":\"$bekreftelse\""
}
}
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package no.nav.paw.arbeidssoekerregisteret.bekreftelse.minsideoppgaver.config

import io.kotest.core.spec.style.FreeSpec

class VerifiserLastingAvTekster: FreeSpec({
//Verifisere av vi kan laste konfig uten exceptions
"Verifiser lasting av tekster" {
val minSideVarselTekster = minSideVarselKonfigurasjon()
println(minSideVarselTekster)
}
})

0 comments on commit 3fcc06e

Please sign in to comment.