From db60f5da65c2632c599eb54a2834503886feb253 Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Thu, 29 Feb 2024 09:12:50 +0100 Subject: [PATCH 1/5] =?UTF-8?q?Skal=20logge=20meldingen=20p=C3=A5=20jms=20?= =?UTF-8?q?ettersom=20denne=20feiler=20i=20preprod?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt index 9b432829..b932c8bf 100644 --- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt +++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt @@ -29,7 +29,7 @@ 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) throw e } } From 2f00f91db17862bfdaa37493adb700e1fe8fa307 Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Thu, 29 Feb 2024 09:25:31 +0100 Subject: [PATCH 2/5] logge jms text --- .../no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt index b932c8bf..a8539f06 100644 --- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt +++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt @@ -30,6 +30,7 @@ class OppdragMottaker( behandleMelding(melding) } catch (e: Exception) { secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID} meldingInnhold=${melding}", e) + secureLogger.info(melding.text) throw e } } From 74f6dde61cdac1c804fcdb282ead74818fc29307 Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Thu, 29 Feb 2024 15:17:37 +0100 Subject: [PATCH 3/5] =?UTF-8?q?Forel=C3=B8pig=20forslag=20til=20=C3=A5=20h?= =?UTF-8?q?=C3=A5ndtere=20xml=20som=20ikke=20inneholder=20namespace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oppdrag/iverksetting/OppdragMottaker.kt | 4 +- .../iverksetting/OppdragMQMottakTest.kt | 28 +++++++++++ src/test/resources/kvittering-krasjer.xml | 47 +++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/kvittering-krasjer.xml diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt index a8539f06..4699edfe 100644 --- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt +++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt @@ -28,9 +28,9 @@ class OppdragMottaker( fun mottaKvitteringFraOppdrag(melding: TextMessage) { try { behandleMelding(melding) + secureLogger.info(melding.text) } catch (e: Exception) { secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID} meldingInnhold=${melding}", e) - secureLogger.info(melding.text) throw e } } @@ -42,6 +42,8 @@ class OppdragMottaker( svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns2:oppdrag xmlns:ns2") } else if (svarFraOppdrag.contains("ns6:oppdrag")) { svarFraOppdrag = svarFraOppdrag.replace("oppdrag xmlns", "ns6:oppdrag xmlns:ns6") + } else if(svarFraOppdrag.contains("")) { + svarFraOppdrag = svarFraOppdrag.replace("", "") } } diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt index e4b111bd..f5f09d97 100644 --- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt +++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt @@ -43,6 +43,13 @@ class OppdragMQMottakTest { assertEquals(Status.OK, statusFraKvittering) } + @Test + fun kvittering_feiler_i_preprod() { + val kvittering: String = lesKvittering("kvittering-krasjer.xml") + val statusFraKvittering = oppdragMottaker.lesKvittering(kvittering).status + assertEquals(Status.OK, statusFraKvittering) + } + @Test fun skal_tolke_kvittering_riktig_ved_feil() { val kvittering: String = lesKvittering("kvittering-avvist.xml") @@ -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() + + 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() diff --git a/src/test/resources/kvittering-krasjer.xml b/src/test/resources/kvittering-krasjer.xml new file mode 100644 index 00000000..2096faca --- /dev/null +++ b/src/test/resources/kvittering-krasjer.xml @@ -0,0 +1,47 @@ + + + + 231-OPPD + 00 + + + 1 + ENDR + EFSP + 200054148 + MND + 08909298858 + 2000-01-01+01:00 + Z994119 + + EF + 2024-02-29-09.30.44.136442 + 2024-02-29-09.30.44.136442 + + + BOS + 8020 + 1900-01-01+01:00 + + + NY + 2024-02-29 + 2000541481 + EFSP + 2024-02-01+01:00 + 2024-02-29+01:00 + 13579 + T + ENG + N + Z994119 + 08909298858 + 18172 + 200054148 + 2000541480 + + Z994119 + + + + \ No newline at end of file From aaa05b5a8b8a051e2b4ecb6eefe04a655fbdfdd2 Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Thu, 29 Feb 2024 19:52:43 +0100 Subject: [PATCH 4/5] =?UTF-8?q?Skal=20h=C3=A5ndtere=20xml-kvitteringen=20f?= =?UTF-8?q?ra=20oppdrag=20som=20har=20xmlns=20som=20gj=C3=B8r=20at=20vi=20?= =?UTF-8?q?ikke=20klarer=20=C3=A5=20unmarshalle.=20Usikker=20p=C3=A5=20hva?= =?UTF-8?q?=20som=20er=20en=20mer=20presis=20fiks=20her?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oppdrag/iverksetting/OppdragMottaker.kt | 29 ++++++++++++------- .../iverksetting/OppdragMQMottakTest.kt | 4 +-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt index 4699edfe..5b94dc19 100644 --- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt +++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt @@ -28,24 +28,15 @@ class OppdragMottaker( fun mottaKvitteringFraOppdrag(melding: TextMessage) { try { behandleMelding(melding) - secureLogger.info(melding.text) } catch (e: Exception) { 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") - } else if(svarFraOppdrag.contains("")) { - svarFraOppdrag = svarFraOppdrag.replace("", "") - } - } + val svarFraOppdrag = håndterSvarFraOppdragSomGyldigXml(melding) val kvittering = lesKvittering(svarFraOppdrag) val oppdragId = kvittering.id @@ -78,6 +69,22 @@ class OppdragMottaker( ) } + private fun håndterSvarFraOppdragSomGyldigXml(melding: TextMessage): String { + 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") + } + } + if (svarFraOppdrag.contains("")) { + svarFraOppdrag = + svarFraOppdrag.replace("", "") + } + return svarFraOppdrag + } + /** * I dev og e2e settes status alltid til KVITTER_OK */ diff --git a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt index f5f09d97..4a221aca 100644 --- a/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt +++ b/src/test/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMQMottakTest.kt @@ -44,10 +44,10 @@ class OppdragMQMottakTest { } @Test - fun kvittering_feiler_i_preprod() { + fun kvittering_feiler_uten_namespace_med_xmlns_tag() { val kvittering: String = lesKvittering("kvittering-krasjer.xml") val statusFraKvittering = oppdragMottaker.lesKvittering(kvittering).status - assertEquals(Status.OK, statusFraKvittering) + assertEquals(Status.UKJENT, statusFraKvittering) } @Test From d7f19ce20393777c4942aeae97ae46c4f02b9b1c Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Fri, 1 Mar 2024 09:04:40 +0100 Subject: [PATCH 5/5] =?UTF-8?q?Legg=20inn=20logging=20n=C3=A5r=20man=20f?= =?UTF-8?q?=C3=A5r=20treff=20p=C3=A5=20=C3=A5=20bytte=20ut=20xml-tags=20ba?= =?UTF-8?q?sert=20p=C3=A5=20namespace=20-=20samt=20todo=20om=20at=20dette?= =?UTF-8?q?=20b=C3=B8r=20fjernes=20n=C3=A5r=20oppdrag=20g=C3=A5r=20i=20pro?= =?UTF-8?q?d=20med=20den=20nye=20versjonen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt index 5b94dc19..c483bf6c 100644 --- a/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt +++ b/src/main/kotlin/no/nav/familie/oppdrag/iverksetting/OppdragMottaker.kt @@ -29,7 +29,7 @@ class OppdragMottaker( try { behandleMelding(melding) } catch (e: Exception) { - secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID} meldingInnhold=${melding}", e) + secureLogger.warn("Feilet lesing av melding=${melding.jmsMessageID} meldingInnhold=$melding", e) secureLogger.info("Meldingsinnhold: =${melding.text}") throw e } @@ -72,13 +72,18 @@ 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 ")) { + log.info("Bytter ", "") }