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

Skal fjerne xmlns fra oppdrag-taggen dersom oppdrag-taggen ikke har nsX-prefiks. #683

Merged
merged 6 commits into from
Mar 1, 2024
Merged
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>