Skip to content

Commit

Permalink
Merge branch 'main' into ikke-error-logge-closedchannelexception
Browse files Browse the repository at this point in the history
  • Loading branch information
charliemidtlyng authored Mar 1, 2024
2 parents 20b03c0 + f7ce81e commit 96e9918
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,14 @@ class OppdragMottaker(
try {
behandleMelding(melding)
} catch (e: Exception) {
secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID}", e)
secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID} meldingInnhold=$melding", e)
secureLogger.info("Meldingsinnhold: =${melding.text}")
throw e
}
}

private fun behandleMelding(melding: TextMessage) {
var svarFraOppdrag = melding.text as String
if (!env.activeProfiles.any { it in lokaleProfiler }) {
if (svarFraOppdrag.contains("ns2:oppdrag")) {
svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns2:oppdrag xmlns:ns2")
} else if (svarFraOppdrag.contains("ns6:oppdrag")) {
svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns6:oppdrag xmlns:ns6")
}
}
val svarFraOppdrag = håndterSvarFraOppdragSomGyldigXml(melding)

val kvittering = lesKvittering(svarFraOppdrag)
val oppdragId = kvittering.id
Expand Down Expand Up @@ -75,6 +69,27 @@ class OppdragMottaker(
)
}

private fun håndterSvarFraOppdragSomGyldigXml(melding: TextMessage): String {
var svarFraOppdrag = melding.text as String
if (!env.activeProfiles.any { it in lokaleProfiler }) {
// TODO: Denne skal fjernes etter at oppdrag har prodsatt sin fiks som håndteres nedenfor.
// TODO: Sjekk logger at denne if-branchen aldri treffes før den fjernes
if (svarFraOppdrag.contains("ns2:oppdrag")) {
log.info("Bytter <oppdrag xmlns med <ns2:oppdrag xmlns:ns2")
svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns2:oppdrag xmlns:ns2")
} else if (svarFraOppdrag.contains("ns6:oppdrag")) {
log.info("Bytter <oppdrag xmlns med <ns6:oppdrag xmlns:ns6")
svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns6:oppdrag xmlns:ns6")
}
}
if (svarFraOppdrag.contains("<oppdrag xmlns=\"http://www.trygdeetaten.no/skjema/oppdrag\">")) {
log.info("Bytter <oppdrag xmlns med <oppdrag uten xmlns")
svarFraOppdrag =
svarFraOppdrag.replace("<oppdrag xmlns=\"http://www.trygdeetaten.no/skjema/oppdrag\">", "<oppdrag>")
}
return svarFraOppdrag
}

/**
* I dev og e2e settes status alltid til KVITTER_OK
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ class OppdragMQMottakTest {
assertEquals(Status.OK, statusFraKvittering)
}

@Test
fun kvittering_feiler_uten_namespace_med_xmlns_tag() {
val kvittering: String = lesKvittering("kvittering-krasjer.xml")
val statusFraKvittering = oppdragMottaker.lesKvittering(kvittering).status
assertEquals(Status.UKJENT, statusFraKvittering)
}

@Test
fun skal_tolke_kvittering_riktig_ved_feil() {
val kvittering: String = lesKvittering("kvittering-avvist.xml")
Expand Down Expand Up @@ -91,6 +98,27 @@ class OppdragMQMottakTest {
verify(exactly = 1) { oppdragLagerRepository.oppdaterKvitteringsmelding(any(), any(), any(), 1) }
}

@Test
fun skal_lagre_kvittering_på_versjon_som_feiler_i_preprod_pga_xmlns() {
val oppdragLager = utbetalingsoppdragMedTilfeldigAktoer().somKvitteringsinformasjon.copy(status = OppdragStatus.KVITTERT_OK)
val oppdragLagerV1 = utbetalingsoppdragMedTilfeldigAktoer().somKvitteringsinformasjon.copy(versjon = 1)

val oppdragLagerRepository = mockk<OppdragLagerRepository>()

every { oppdragLagerRepository.hentKvitteringsinformasjon(any()) } returns
listOf(oppdragLager, oppdragLagerV1)

every { oppdragLagerRepository.oppdaterStatus(any(), any(), any()) } just Runs
every { oppdragLagerRepository.oppdaterKvitteringsmelding(any(), any(), any(), any()) } just Runs

val oppdragMottaker = OppdragMottaker(oppdragLagerRepository, devEnv)

oppdragMottaker.mottaKvitteringFraOppdrag("kvittering-krasjer.xml".fraRessursSomTextMessage)

verify(exactly = 0) { oppdragLagerRepository.oppdaterKvitteringsmelding(any(), any(), any(), 0) }
verify(exactly = 1) { oppdragLagerRepository.oppdaterKvitteringsmelding(any(), any(), any(), 1) }
}

@Test
fun skal_logge_error_hvis_det_finnes_to_identiske_oppdrag_i_databasen() {
val oppdragLagerRepository = mockk<OppdragLagerRepository>()
Expand Down
47 changes: 47 additions & 0 deletions src/test/resources/kvittering-krasjer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<oppdrag xmlns="http://www.trygdeetaten.no/skjema/oppdrag">
<mmel>
<systemId>231-OPPD</systemId>
<alvorlighetsgrad>00</alvorlighetsgrad>
</mmel>
<oppdrag-110>
<kodeAksjon>1</kodeAksjon>
<kodeEndring>ENDR</kodeEndring>
<kodeFagomraade>EFSP</kodeFagomraade>
<fagsystemId>200054148</fagsystemId>
<utbetFrekvens>MND</utbetFrekvens>
<oppdragGjelderId>08909298858</oppdragGjelderId>
<datoOppdragGjelderFom>2000-01-01+01:00</datoOppdragGjelderFom>
<saksbehId>Z994119</saksbehId>
<avstemming-115>
<kodeKomponent>EF</kodeKomponent>
<nokkelAvstemming>2024-02-29-09.30.44.136442</nokkelAvstemming>
<tidspktMelding>2024-02-29-09.30.44.136442</tidspktMelding>
</avstemming-115>
<oppdrags-enhet-120>
<typeEnhet>BOS</typeEnhet>
<enhet>8020</enhet>
<datoEnhetFom>1900-01-01+01:00</datoEnhetFom>
</oppdrags-enhet-120>
<oppdrags-linje-150>
<kodeEndringLinje>NY</kodeEndringLinje>
<vedtakId>2024-02-29</vedtakId>
<delytelseId>2000541481</delytelseId>
<kodeKlassifik>EFSP</kodeKlassifik>
<datoVedtakFom>2024-02-01+01:00</datoVedtakFom>
<datoVedtakTom>2024-02-29+01:00</datoVedtakTom>
<sats>13579</sats>
<fradragTillegg>T</fradragTillegg>
<typeSats>ENG</typeSats>
<brukKjoreplan>N</brukKjoreplan>
<saksbehId>Z994119</saksbehId>
<utbetalesTilId>08909298858</utbetalesTilId>
<henvisning>18172</henvisning>
<refFagsystemId>200054148</refFagsystemId>
<refDelytelseId>2000541480</refDelytelseId>
<attestant-180>
<attestantId>Z994119</attestantId>
</attestant-180>
</oppdrags-linje-150>
</oppdrag-110>
</oppdrag>

0 comments on commit 96e9918

Please sign in to comment.