diff --git a/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt b/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt index 130f1b7d..f4c7f28f 100644 --- a/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt +++ b/cpa-repo/src/main/kotlin/no/nav/emottak/cpa/Routes.kt @@ -177,7 +177,8 @@ fun Route.validateCpa(cpaRepository: CPARepository) = post("/cpa/validate/{$CONT val validateRequest = call.receive(ValidationRequest::class) try { log.info(validateRequest.marker(), "Validerer ebms mot CPA") - val cpa = cpaRepository.findCpa(validateRequest.cpaId) ?: throw NotFoundException("Fant ikke CPA (${validateRequest.cpaId})") + val cpa = cpaRepository.findCpa(validateRequest.cpaId) + ?: throw NotFoundException("Fant ikke CPA (${validateRequest.cpaId})") cpa.validate(validateRequest) // Delivery Failure val partyInfo = cpa.getPartyInfoByTypeAndID(validateRequest.addressing.from.partyId) // Delivery Failure val encryptionCertificate = partyInfo.getCertificateForEncryption() // Security Failure diff --git a/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml b/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml new file mode 100644 index 00000000..3b448935 --- /dev/null +++ b/cpa-repo/src/main/resources/cpa/nav_qass_30823_modified.xml @@ -0,0 +1,2900 @@ + + + + 2024-08-09T14:32:47+02:00 + 2025-09-07T23:59:00+02:00 + + 8138375 + 922307814 + 922307814 + + + + + + + Legemelding + + + + Partner_channelSMTP0_partner + + NAV_SM_Sending2 + + + + + Partner_channelSMTP0_partner + + NAV_LE_Sending2 + + + + + Partner_channelSMTP0_partner + + NAV_OM_Sending2 + + + + + Partner_channelSMTP0_partner + + NAV_SO_Sending2 + + + + + Partner_channelSMTP0_partner + + NAV_Legemelding_Svarmelding2 + + + + + + + + + Sykmelding + + + + Partner_channelSMTP0_partner + + NAV_Sykmelding3 + + + + + Partner_channelSMTP0_partner + + NAV_Sykmelde_Svar3 + + + + + + + + + HenvendelseFraLege + + + + Partner_channelSMTP0_partner + + NAV_Henvendelse + + + + + Partner_channelSMTP0_partner + + NAV_HenvendelseFraLege_Bekreftelse + + + + + Partner_channelSMTP0_partner + + NAV_HenvendelseFraLege_Svar + + + + + + + + + BehandlerKrav + + + + Partner_channelSMTP0_partner + + NAV_BehandlerKravOppgjorsMelding2 + + + + + Partner_channelSMTP0_partner + + NAV_BehandlerKrav_Svarmelding2 + + + + + + + + + HarBorgerFrikort + + + + Partner_channelHTTP1_partner + + NAV_EgenandelForesporsel + + + + + Partner_channelHTTP1_partner + + NAV_EgenandelSvar + + + + + Partner_channelHTTP1_partner + + NAV_EgenandelAvvisning + + + + + + + + + HarBorgerFrikortMengde + + + + Partner_channelSMTP0_partner + + NAV_EgenandelForesporselM + + + + + Partner_channelSMTP0_partner + + NAV_EgenandelSvarM + + + + + Partner_channelSMTP0_partner + + NAV_EgenandelAvvisningM + + + + + + + + + PasientlisteForesporsel + + + + Partner_channelSMTP0_partner + + NAV_FastlegensPasientliste + + + + + Partner_channelSMTP0_partner + + NAV_PL_AbonnementInnmelding + + + + + Partner_channelSMTP0_partner + + NAV_PL_AbonnementUtmelding + + + + + Partner_channelSMTP0_partner + + NAV_PL_StatusAbonnement + + + + + Partner_channelSMTP0_partner + + NAV_PL_Svarmelding + + + + + + + + Partner_channelSMTP0_partner + + NAV_PLAS_Svarmelding + + + + + + + + Partner_channelSMTP0_partner + + NAV_PLKV_Svarmelding + + + + + + + + Partner_channelSMTP0_partner + + NAV_PL_NegativSvarmelding + + + + + + + + Partner_channelSMTP0_partner + + NAV_PasientListe + + + + + + + + + Inntektsforesporsel + + + + Partner_channelHTTP1_partner + + NAV_Inntektsforesporsel + + + + + Partner_channelHTTP1_partner + + NAV_InntektOpplysning + + + + + Partner_channelHTTP1_partner + + NAV_AvvisningInntektsforesporsel + + + + + + + + + Trekkopplysning + + + + Partner_channelSMTP0_partner + + NAV_Trekkgrunnlag + + + + + Partner_channelSMTP0_partner + + NAV_KvitteringTrekkvedtak + + + + + Partner_channelSMTP0_partner + + NAV_AvvisningTrekkvedtak + + + + + + + + + ForesporselFraSaksbehandler + + + + Partner_channelSMTP0_partner + + NAV_Svar2 + + + + + Partner_channelSMTP0_partner + + NAV_A10A + + + + + Partner_channelSMTP0_partner + + NAV_A10 + + + + + Partner_channelSMTP0_partner + + NAV_Foresporsel2 + + + + + Partner_channelSMTP0_partner + + NAV_ForesporselFraSaksbehandler_Bekreftelse + + + + + + Partner_channelSMTP0_partner + + NAV_ForesporselFraSaksbehandler_Svar + + + + + + + + + HenvendelseFraSaksbehandler + + + + Partner_channelSMTP0_partner + + NAV_HenvendelseFraSaksbehandler_Kvittering + + + + + + Partner_channelSMTP0_partner + + NAV_HenvendelseFraSaksbehandler_Svar + + + + + Partner_channelSMTP0_partner + + NAV_Henvendelse2 + + + + + + + + + Oppfolgingsplan + + + + Partner_channelSMTP0_partner + + NAV_Oppfolgingsplan_Kvittering + + + + + Partner_channelSMTP0_partner + + NAV_Oppfolgingsplan_Svar + + + + + Partner_channelSMTP0_partner + + NAV_Plan + + + + + + + + + DialogmoteInnkalling + + + + Partner_channelSMTP0_partner + + NAV_MoteRespons + + + + + Partner_channelSMTP0_partner + + NAV_DialogmoteInnkalling_Bekreftelse + + + + + Partner_channelSMTP0_partner + + NAV_MoteInnkalling + + + + + Partner_channelSMTP0_partner + + NAV_DialogmoteInnkalling_Kvittering + + + + + + + + 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 + + + + + + + + + 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 + + + + + + + + + + + + + + SMTP + + + SMTP + + + + + + HTTP + + SSL + + + + HTTP + + + + + + + 4 + PT720M + NotGuaranteed + + P4D + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + 4 + PT720M + NotGuaranteed + + P4D + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + + http://www.w3.org/2000/09/xmldsig# + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + 79768 + 111949 + 889640782 + 889640782 + + + + + + + Legemelding + + + + NAV_asyncSMTPChannelA1 + + Partner_Legemelding_Svarmelding24 + + + + + NAV_asyncSMTPChannelA1 + + Partner_SM_Sending20 + + + + + NAV_asyncSMTPChannelA1 + + Partner_LE_Sending21 + + + + + NAV_asyncSMTPChannelA1 + + Partner_OM_Sending22 + + + + + NAV_asyncSMTPChannelA1 + + Partner_SO_Sending23 + + + + + + + + + Sykmelding + + + + NAV_asyncSMTPChannelA1 + + Partner_Sykmelde_Svar31 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Sykmelding30 + + + + + + + + + HenvendelseFraLege + + + + NAV_asyncSMTPChannelA1 + + Partner_HenvendelseFraLege_Bekreftelse1 + + + + + NAV_asyncSMTPChannelA1 + + Partner_HenvendelseFraLege_Svar2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Henvendelse0 + + + + + + + + + BehandlerKrav + + + + NAV_asyncSMTPChannelA1 + + Partner_BehandlerKrav_Svarmelding21 + + + + + NAV_asyncSMTPChannelA1 + + Partner_BehandlerKravOppgjorsMelding20 + + + + + + + + + HarBorgerFrikort + + + + NAV_SyncHttpChannelB1 + + Partner_EgenandelSvar1 + + + + + NAV_SyncHttpChannelB1 + + Partner_EgenandelAvvisning2 + + + + + NAV_SyncHttpChannelB1 + + Partner_EgenandelForesporsel0 + + + + + + + + + HarBorgerFrikortMengde + + + + NAV_asyncSMTPChannelA1 + + Partner_EgenandelSvarM1 + + + + + NAV_asyncSMTPChannelA1 + + Partner_EgenandelAvvisningM2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_EgenandelForesporselM0 + + + + + + + + + PasientlisteForesporsel + + + + + + + NAV_asyncSMTPChannelA1 + + Partner_PLAS_Svarmelding5 + + + + + + + + NAV_asyncSMTPChannelA1 + + Partner_PLKV_Svarmelding6 + + + + + + + + NAV_asyncSMTPChannelA1 + + Partner_PL_NegativSvarmelding7 + + + + + + + + NAV_asyncSMTPChannelA1 + + Partner_PasientListe8 + + + + + NAV_asyncSMTPChannelA1 + + Partner_FastlegensPasientliste0 + + + + + NAV_asyncSMTPChannelA1 + + Partner_PL_AbonnementInnmelding1 + + + + + NAV_asyncSMTPChannelA1 + + Partner_PL_AbonnementUtmelding2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_PL_StatusAbonnement3 + + + + + NAV_asyncSMTPChannelA1 + + Partner_PL_Svarmelding4 + + + + + + + + + Inntektsforesporsel + + + + NAV_SyncHttpChannelB1 + + Partner_InntektOpplysning1 + + + + + NAV_SyncHttpChannelB1 + + Partner_AvvisningInntektsforesporsel2 + + + + + NAV_SyncHttpChannelB1 + + Partner_Inntektsforesporsel0 + + + + + + + + + Trekkopplysning + + + + NAV_asyncSMTPChannelA1 + + Partner_KvitteringTrekkvedtak1 + + + + + NAV_asyncSMTPChannelA1 + + Partner_AvvisningTrekkvedtak2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Trekkgrunnlag0 + + + + + + + + + ForesporselFraSaksbehandler + + + + NAV_asyncSMTPChannelA1 + + Partner_Foresporsel23 + + + + + NAV_asyncSMTPChannelA1 + + Partner_ForesporselFraSaksbehandler_Bekreftelse4 + + + + + + NAV_asyncSMTPChannelA1 + + Partner_ForesporselFraSaksbehandler_Svar5 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Svar20 + + + + + NAV_asyncSMTPChannelA1 + + Partner_A10A1 + + + + + NAV_asyncSMTPChannelA1 + + Partner_A102 + + + + + + + + + HenvendelseFraSaksbehandler + + + + NAV_asyncSMTPChannelA1 + + Partner_Henvendelse22 + + + + + NAV_asyncSMTPChannelA1 + + Partner_HenvendelseFraSaksbehandler_Kvittering0 + + + + + + NAV_asyncSMTPChannelA1 + + Partner_HenvendelseFraSaksbehandler_Svar1 + + + + + + + + + Oppfolgingsplan + + + + NAV_asyncSMTPChannelA1 + + Partner_Plan2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Oppfolgingsplan_Kvittering0 + + + + + NAV_asyncSMTPChannelA1 + + Partner_Oppfolgingsplan_Svar1 + + + + + + + + + DialogmoteInnkalling + + + + NAV_asyncSMTPChannelA1 + + Partner_MoteInnkalling2 + + + + + NAV_asyncSMTPChannelA1 + + Partner_DialogmoteInnkalling_Kvittering3 + + + + + NAV_asyncSMTPChannelA1 + + Partner_MoteRespons0 + + + + + NAV_asyncSMTPChannelA1 + + Partner_DialogmoteInnkalling_Bekreftelse1 + + + + + + + + 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 + + + + + + + + + MIIGTTCCBDWgAwIBAgILAZUu998EpC5cTMkwDQYJKoZIhvcNAQELBQAwbjELMAkGA1UEBhMCTk8xGDAWBgNVBGEMD05UUk5PLTk4MzE2MzMyNzETMBEGA1UECgwKQnV5cGFzcyBBUzEwMC4GA1UEAwwnQnV5cGFzcyBDbGFzcyAzIFRlc3Q0IENBIEcyIFNUIEJ1c2luZXNzMB4XDTIyMDkwNzEzMTQwNloXDTI1MDkwNzIxNTkwMFowcTELMAkGA1UEBhMCTk8xIzAhBgNVBAoMGkFSQkVJRFMtIE9HIFZFTEZFUkRTRVRBVEVOMSMwIQYDVQQDDBpBUkJFSURTLSBPRyBWRUxGRVJEU0VUQVRFTjEYMBYGA1UEYQwPTlRSTk8tODg5NjQwNzgyMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwzkN8TyAJknEN8f3HHU4oiVTdaNyaiXOqzPprkfK0SI6DIW6h4j87PZkcp8qGnDEVBF37BP4l8/1HOh9ONeXSFjQCqKOyxkvpQgLiQDZjZ9Rn/Ss5/+tJ/yp8FOQzQer3d1zaKrTR5iqt1Q/qWNa0JVzcDlUpUE7r9jTsjIEuV0MN3gMS98n25ROp7E2hcJtNAdHN+gFcUMgYcSvWqDuqXDtCbXNPs2X6xLlvcI8UqrAP4HUkE+bMN8krVKV9gak0Gv7L6NpmsHdyetI7GPBBR1f//ik4RaFCC+e6AvTdaHGAwuRzsT5/xvB7bOzSIuX6jDxodImQ/nnZN7a5F7CRkQ9OzNs/hCXq5+yy3HvrXrhrz6WHiepO1sPZceD2+nfRBJbQSVn/DDfEWjX3xK7mvruijbIr2C4II9EgK1xQdpKvMfA2rJ1uvE6XxmvrTpXiTm9xEybu2gzBCllYHkDosQZh5fU0LeqIZ+H0n9zu8+J8xUJ+OTlPEkDpr2aSbOpAgMBAAGjggFnMIIBYzAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFKf+u2xZiK10LkZeemj50bu/z7aLMB0GA1UdDgQWBBQ0AyC2TGEEX1XNUf12iQVKMdEh6DAOBgNVHQ8BAf8EBAMCBaAwHwYDVR0gBBgwFjAKBghghEIBGgEDAjAIBgYEAI96AQEwQQYDVR0fBDowODA2oDSgMoYwaHR0cDovL2NybC50ZXN0NC5idXlwYXNzY2EuY29tL0JQQ2wzQ2FHMlNUQlMuY3JsMHsGCCsGAQUFBwEBBG8wbTAtBggrBgEFBQcwAYYhaHR0cDovL29jc3Bicy50ZXN0NC5idXlwYXNzY2EuY29tMDwGCCsGAQUFBzAChjBodHRwOi8vY3J0LnRlc3Q0LmJ1eXBhc3NjYS5jb20vQlBDbDNDYUcyU1RCUy5jZXIwJQYIKwYBBQUHAQMEGTAXMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwDQYJKoZIhvcNAQELBQADggIBAJhhEltDJ5j3ZfLWJ19TPAN8ib1/FnHqoJALwj+y7LvhahDb63HlCdByg6T8evs071uSPsVI+zA7Lotj3+F6Y3yvCuB7vDOINCfm3NyyMicKboKpxmEDYkU+otjSCrlabaZLfHXuyQkI1KAr24La8kntd02O2R2hUef9K36nH/wvS+im3S+ZntYbFpO4X5e8LnOn1w0UgDOrE3Oesf9B3g3eChs3KHiBXfhzMI3o4StYm8Pg1pBE8Hmo9/7XWZ2dreI1ztLuDiGYr9OFnc7VUX+26zokxnJEY33On9wLyBOqBHpOxGWzL19UsZocDjAUoN8gJD3PCSA2jxe/cNLfjql1Z4iSxGD7w0KG8VxVc6M3q/rzV9/lEUu7JdwNaek62dfWA6h9068h35ROS0wtrSw6ZPxTaWgH+w3TNg7VJYMolSaUSNWMeokzGsP3D3xgZDnp9jV+M4UKp6z+LsnNe6adBRdU6AVciXhOQ1vls/P5igymQfmL2CeIIhh9V7nFUFgYbCFwuRrSeePc5lU2yx2mk3wtaWVVQVrzfIX5u7Mk26hptX8KUYJb/LEDR6bbFCxaapaZl4Zr5E80aUIAxZD3aVWMW4kaBdOqAzOFDEMx8zJPosfjfUK2V4hUrdcWnCwT6RHszPZ2r0tzp0lp76sTE88ft8+vyefGddiyWTEn + + + + + + + + + + + + + + SMTP + + + SMTP + + + + + + HTTP + + SSL + + + + HTTP + + + SSL + + + + + + + + 4 + PT720M + NotGuaranteed + + P4D + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + 4 + PT720M + NotGuaranteed + + P4D + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + + + http://www.w3.org/2000/09/xmldsig# + + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + http://www.w3.org/2000/09/xmldsig# + http://www.w3.org/2001/04/xmlenc#sha256 + + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + + + + + + + + http://www.oasis-open.org/committees/ebxml-msg/schema + + + + + http://www.kith.no/xmlstds/apprec/2004-11-21 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/dialog/2006-10-11 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/eresept/m2/2010-06-18 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/sykmelding/2011-03-04 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/HelseOpplysningerArbeidsuforhet/2013-10-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/legeerklaring/2008-06-06 + + + + + http://www.kith.no/xmlstds/lom/2003-12-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/bkm/2006-12-20 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandel/2010-02-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandel/2010-02-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/pasientliste/2010-02-01 + + + + + http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1 + + + + + http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1 + + + + + http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04 + + + + + http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04 + + + + + http://www.oasis-open.org/committees/ebxml-msg/schema + + + + + http://www.kith.no/xmlstds/apprec/2004-11-21 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/dialog/2006-10-11 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/eresept/m2/2010-06-18 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/sykmelding/2011-03-04 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/HelseOpplysningerArbeidsuforhet/2013-10-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/legeerklaring/2008-06-06 + + + + + http://www.kith.no/xmlstds/lom/2003-12-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/bkm/2006-12-20 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandel/2010-02-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandel/2010-02-01 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/egenandelmengde/2010-10-06 + + + + + http://www.kith.no/xmlstds/msghead/2006-05-24 + + + http://www.kith.no/xmlstds/nav/pasientliste/2010-02-01 + + + + + http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1 + + + + + http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1 + + + + + http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04 + + + + + http://www.kith.no/xmlstds/InnrapporteringTrekk/InnrapporteringTrekk/2010-02-04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql b/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql index d3074976..26228e00 100644 --- a/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql +++ b/cpa-repo/src/main/resources/db/migration/R__init_process_config.sql @@ -12,7 +12,9 @@ values ('Behandler', 'HarBorgerFrikort', 'EgenandelForesporsel', ('Fastlege', 'PasientlisteForesporsel', 'HentAbonnementStatus', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'), ('Fastlege', 'PasientlisteForesporsel', 'HentPasientliste', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'), ('Fastlege', 'PasientlisteForesporsel', 'StartAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'), - ('Fastlege', 'PasientlisteForesporsel', 'StoppAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning') + ('Fastlege', 'PasientlisteForesporsel', 'StoppAbonnement', false, false, TRUE, TRUE, TRUE, TRUE, null, 'Avvisning'), + ('Fordringshaver', 'Inntektsforesporsel', 'Foresporsel', true, false, TRUE, false, TRUE, TRUE, null, 'Avvisning') + on conflict (ROLE, SERVICE, ACTION) do update set KRYPTERING = EXCLUDED.KRYPTERING, KOMPRIMERING = EXCLUDED.KOMPRIMERING, SIGNERING = EXCLUDED.SIGNERING, diff --git a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt index fd1638a8..60a7060e 100644 --- a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt +++ b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/App.kt @@ -47,6 +47,7 @@ import no.nav.emottak.ebms.validation.MimeHeaders import no.nav.emottak.ebms.validation.MimeValidationException import no.nav.emottak.ebms.validation.validateMimeAttachment import no.nav.emottak.ebms.validation.validateMimeSoapEnvelope +import no.nav.emottak.ebms.xml.asByteArray import no.nav.emottak.ebms.xml.asString import no.nav.emottak.ebms.xml.getDocumentBuilder import no.nav.emottak.melding.model.EbmsAttachment @@ -54,6 +55,7 @@ import no.nav.emottak.util.createUniqueMimeMessageId import no.nav.emottak.util.getEnvVar import org.slf4j.LoggerFactory import java.io.ByteArrayInputStream +import java.nio.charset.StandardCharsets import java.time.Duration import java.time.Instant import java.util.Base64 @@ -268,7 +270,7 @@ suspend fun ApplicationCall.respondEbmsDokument(ebmsDokument: EbMSDocument) { this.append(MimeHeaders.SOAP_ACTION, "ebXML") } if (ebmsDokument.dokumentType() == DokumentType.PAYLOAD) { - val ebxml = Base64.getMimeEncoder().encodeToString(ebmsDokument.dokument.asString().toByteArray()) + val ebxml = Base64.getMimeEncoder().encodeToString(ebmsDokument.dokument.asByteArray()) val contentId = createUniqueMimeMessageId() val ebxmlFormItem = PartData.FormItem( ebxml, @@ -282,7 +284,8 @@ suspend fun ApplicationCall.respondEbmsDokument(ebmsDokument: EbMSDocument) { val parts = mutableListOf(ebxmlFormItem) ebmsDokument.attachments.first().let { PartData.FormItem( - Base64.getMimeEncoder().encodeToString(it.bytes), + // Base64.getMimeEncoder().encodeToString(it.bytes), // Implicit ISO_8859_1 + String(Base64.getMimeEncoder().encode(it.bytes), StandardCharsets.UTF_8), // TODO verifiser {}, HeadersBuilder().apply { append(MimeHeaders.CONTENT_TRANSFER_ENCODING, "base64") diff --git a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt index 5928857e..c6949b8e 100644 --- a/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt +++ b/ebms-provider/src/main/kotlin/no/nav/emottak/ebms/xml/DomUtils.kt @@ -1,6 +1,7 @@ package no.nav.emottak.ebms.xml import org.w3c.dom.Document +import java.io.ByteArrayOutputStream import java.io.StringWriter import javax.xml.parsers.DocumentBuilder import javax.xml.parsers.DocumentBuilderFactory @@ -31,3 +32,11 @@ fun Document.asString(): String { transformer.transform(domSource, sr) return sw.toString() } + +fun Document.asByteArray(): ByteArray { + return ByteArrayOutputStream().use { + TransformerFactory.newInstance().newTransformer() + .transform(DOMSource(this), StreamResult(it)) + it.toByteArray() + } +} diff --git a/ebms-send-in/build.gradle.kts b/ebms-send-in/build.gradle.kts index c65ba3b3..ca190819 100644 --- a/ebms-send-in/build.gradle.kts +++ b/ebms-send-in/build.gradle.kts @@ -67,8 +67,10 @@ dependencies { implementation(libs.ktor.server.auth.jvm) implementation(libs.ktor.client.auth) implementation("io.ktor:ktor-client-cio-jvm:2.3.4") + implementation("com.sun.xml.messaging.saaj:saaj-impl:1.5.1") implementation(libs.bundles.cxf) runtimeOnly("net.java.dev.jna:jna:5.12.1") + testImplementation("javax.activation:activation:1.1.1") testImplementation(testLibs.ktor.server.test.host) testImplementation(testLibs.junit.jupiter.api) testImplementation(testLibs.mockk.jvm) diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt index f33a0b1f..c6582b6c 100644 --- a/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/ebms/App.kt @@ -14,7 +14,6 @@ import io.ktor.server.netty.Netty import io.ktor.server.plugins.contentnegotiation.ContentNegotiation import io.ktor.server.request.receive import io.ktor.server.response.respond -import io.ktor.server.routing.get import io.ktor.server.routing.post import io.ktor.server.routing.routing import io.micrometer.core.instrument.Timer.ResourceSample @@ -25,15 +24,16 @@ import kotlinx.coroutines.withContext import no.nav.emottak.auth.AZURE_AD_AUTH import no.nav.emottak.auth.AuthConfig import no.nav.emottak.fellesformat.wrapMessageInEIFellesFormat +import no.nav.emottak.frikort.frikortXmlMarshaller import no.nav.emottak.frikort.frikortsporring -import no.nav.emottak.frikort.marshal import no.nav.emottak.melding.model.SendInRequest import no.nav.emottak.melding.model.SendInResponse +import no.nav.emottak.utbetaling.UtbetalingClient +import no.nav.emottak.utbetaling.utbetalingXmlMarshaller import no.nav.emottak.util.getEnvVar import no.nav.emottak.util.marker import no.nav.security.token.support.v2.tokenValidationSupport import org.slf4j.LoggerFactory -import java.util.Timer internal val log = LoggerFactory.getLogger("no.nav.emottak.ebms.App") @@ -77,8 +77,32 @@ fun Application.ebmsSendInModule() { runCatching { log.info(request.marker(), "Payload ${request.payloadId} videresendes til fagsystem") withContext(Dispatchers.IO) { - timed(appMicrometerRegistry, "frikort-sporing") { - frikortsporring(wrapMessageInEIFellesFormat(request)) + when (request.addressing.service) { + "Inntektsforesporsel" -> + timed(appMicrometerRegistry, "Inntektsforesporsel") { + UtbetalingClient.behandleInntektsforesporsel(request).let { + SendInResponse( + request.messageId, + request.conversationId, + request.addressing.replyTo(request.addressing.service, it.msgInfo.type.v), + utbetalingXmlMarshaller.marshalToByteArray(it) + ) + } + } + else -> + timed(appMicrometerRegistry, "frikort-sporing") { + frikortsporring(wrapMessageInEIFellesFormat(request)).let { + SendInResponse( + request.messageId, + request.conversationId, + request.addressing.replyTo( + it.eiFellesformat.mottakenhetBlokk.ebService, + it.eiFellesformat.mottakenhetBlokk.ebAction + ), + frikortXmlMarshaller.marshalToByteArray(it.eiFellesformat.msgHead) + ) + } + } } } }.onSuccess { @@ -86,17 +110,7 @@ fun Application.ebmsSendInModule() { request.marker(), "Payload ${request.payloadId} videresending til fagsystem ferdig, svar mottatt og returnerert" ) - call.respond( - SendInResponse( - request.messageId, - request.conversationId, - request.addressing.replayTo( - it.eiFellesformat.mottakenhetBlokk.ebService, - it.eiFellesformat.mottakenhetBlokk.ebAction - ), - marshal(it.eiFellesformat.msgHead).toByteArray() - ) - ) + call.respond(it) }.onFailure { log.error(request.marker(), "Payload ${request.payloadId} videresending feilet", it) call.respond(HttpStatusCode.BadRequest, it.localizedMessage) diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt index 638ac056..7f61edf9 100644 --- a/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/fellesformat/FellesFormatWrapper.kt @@ -2,8 +2,8 @@ package no.nav.emottak.fellesformat import no.kith.xmlstds.msghead._2006_05_24.MsgHead import no.nav.emottak.ebms.log +import no.nav.emottak.frikort.frikortXmlMarshaller import no.nav.emottak.frikort.unmarshal -import no.nav.emottak.frikort.xmlMarshaller import no.nav.emottak.melding.model.Addressing import no.nav.emottak.melding.model.Party import no.nav.emottak.melding.model.PartyId @@ -32,7 +32,7 @@ fun wrapMessageInEIFellesFormat(sendInRequest: SendInRequest): EIFellesformat = it.msgHead = unmarshal(sendInRequest.payload.toString(Charsets.UTF_8), MsgHead::class.java) }.also { if (getEnvVar("NAIS_CLUSTER_NAME", "local") != "prod-fss") { - log.info("Sending in request to frikort with body " + xmlMarshaller.marshal(it)) + log.info("Sending in request to frikort with body " + frikortXmlMarshaller.marshal(it)) } } diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt index c21a33fc..3a9cbb75 100644 --- a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/FrikortClient.kt @@ -26,6 +26,6 @@ fun frikortsporring(fellesformat: EIFellesformat): FrikortsporringResponse = fri frikortObjectFactory.createFrikortsporringRequest().also { it.eiFellesformat = fellesformat } ).also { if (getEnvVar("NAIS_CLUSTER_NAME", "local") != "prod-fss") { - log.info("Send in Frikort response " + xmlMarshaller.marshal(it)) + log.info("Send in Frikort response " + frikortXmlMarshaller.marshal(it)) } } diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt index 9649c6c7..42c9c260 100644 --- a/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/frikort/XmlMarshaller.kt @@ -1,13 +1,14 @@ package no.nav.emottak.frikort +import java.io.ByteArrayOutputStream import java.io.StringWriter import javax.xml.bind.JAXBContext import javax.xml.stream.XMLInputFactory -val xmlMarshaller = XmlMarshaller() +val frikortXmlMarshaller = XmlMarshaller() -fun marshal(objekt: Any) = xmlMarshaller.marshal(objekt) -fun unmarshal(xml: String, clazz: Class): T = xmlMarshaller.unmarshal(xml, clazz) +fun marshal(objekt: Any) = frikortXmlMarshaller.marshal(objekt) +fun unmarshal(xml: String, clazz: Class): T = frikortXmlMarshaller.unmarshal(xml, clazz) class XmlMarshaller { @@ -36,6 +37,15 @@ class XmlMarshaller { return writer.toString() } + fun marshalToByteArray(objekt: Any): ByteArray { + return ByteArrayOutputStream().use { + synchronized(marshlingMonitor) { + marshaller.marshal(objekt, it) + } + it.toByteArray() + } + } + fun unmarshal(xml: String, clazz: Class): T { val reader = XMLInputFactory.newInstance().createXMLStreamReader(xml.reader()) return synchronized(unmarshlingMonitor) { diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt new file mode 100644 index 00000000..3d9cbd80 --- /dev/null +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/UtbetalingClient.kt @@ -0,0 +1,143 @@ +package no.nav.emottak.utbetaling + +import no.kith.xmlstds.msghead._2006_05_24.CS +import no.kith.xmlstds.msghead._2006_05_24.ConversationRef +import no.kith.xmlstds.msghead._2006_05_24.Document +import no.kith.xmlstds.msghead._2006_05_24.MsgHead +import no.kith.xmlstds.msghead._2006_05_24.RefDoc +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnBrukersUtbetalteYtelser +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBaksystemIkkeTilgjengelig +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBrukerIkkeFunnet +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeFeil +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeIngenTilgangTilEnEllerFlereYtelser +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeUgyldigDato +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeUgyldigKombinasjonBrukerIdOgBrukertype +import no.nav.emottak.cxf.ServiceBuilder +import no.nav.emottak.melding.model.SendInRequest +import no.nav.emottak.util.getEnvVar +import no.nav.emottak.util.toXMLGregorianCalendar +import org.slf4j.LoggerFactory +import java.io.FileInputStream +import java.time.Instant +import java.util.UUID +import javax.xml.namespace.QName + +object UtbetalingClient { + + val log = LoggerFactory.getLogger(UtbetalingClient::class.java) + + val utbetalingObjectFactory: no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory = + no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory() + + val YRP_URL_TEST = "https://ytelser-rest-proxy.intern.dev.nav.no" + val YRP_URL_PROD = "https://ytelser-rest-proxy.intern.nav.no" + val RESOLVED_UTBETAL_URL = + when (getEnvVar("NAIS_CLUSTER_NAME", "local")) { + "local" -> YRP_URL_TEST + "dev-fss" -> YRP_URL_TEST + "prod-fss" -> YRP_URL_PROD + else -> YRP_URL_TEST + } + val UTBETAL_SOAP_ENDPOINT = RESOLVED_UTBETAL_URL + "/Utbetaling" + + fun behandleInntektsforesporsel(sendInRequest: SendInRequest): MsgHead { + val msgHeadRequest = utbetalingXmlMarshaller.unmarshal(sendInRequest.payload.toString(Charsets.UTF_8), MsgHead::class.java) + val melding = msgHeadRequest.document.map { it.refDoc.content.any } + .also { if (it.size > 1) log.warn("Inntektsforesporsel refdoc har size >1") } + .first().also { if (it.size > 1) log.warn("Inntektsforesporsel content har size >1") }.first() + try { + val response: Any = when (melding) { + is FinnUtbetalingListe -> inntektsforesporselSoapEndpoint.finnUtbetalingListe(melding.request) + is FinnBrukersUtbetalteYtelser -> inntektsforesporselSoapEndpoint.finnBrukersUtbetalteYtelser(melding.request) + else -> throw IllegalStateException("Ukjent meldingstype. Classname: " + melding.javaClass.name) + } + return msgHeadResponse(msgHeadRequest, sendInRequest, marshal(response)) + } catch (utbetalError: Throwable) { + log.info("Handling inntektsforesporsel error: " + utbetalError.message) + val feil = FinnUtbetalingListeFeil() + when (utbetalError) { + is FinnUtbetalingListeBrukerIkkeFunnet + -> feil.finnUtbetalingListebrukerIkkeFunnet = utbetalError.faultInfo + is FinnUtbetalingListeBaksystemIkkeTilgjengelig + -> feil.finnUtbetalingListebaksystemIkkeTilgjengelig = utbetalError.faultInfo + is FinnUtbetalingListeIngenTilgangTilEnEllerFlereYtelser + -> feil.finnUtbetalingListeingenTilgangTilEnEllerFlereYtelser = utbetalError.faultInfo + is FinnUtbetalingListeUgyldigDato + -> feil.finnUtbetalingListeugyldigDato = utbetalError.faultInfo + is FinnUtbetalingListeUgyldigKombinasjonBrukerIdOgBrukertype + -> feil.finnUtbetalingListeugyldigKombinasjonBrukerIdOgBrukertype = utbetalError.faultInfo + else -> + throw utbetalError.also { log.error("Ukjent feiltype: " + it.message, it) } + } + return msgHeadResponse(msgHeadRequest, sendInRequest, feil) + } + } +} + +val inntektsforesporselSoapEndpoint: no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.Utbetaling = + ServiceBuilder( + no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.Utbetaling::class.java + ) + .withAddress(getEnvVar("UTBETALING_URL", "https://ytelser-rest-proxy.dev.intern.nav.no/Utbetaling")) + .withWsdl( + "classpath:no.nav.ekstern.virkemiddelokonomi/tjenester/utbetaling/utbetaling.wsdl" + // "classpath:no.nav.ekstern.virkemiddelokonomi/tjenester.utbetaling/utbetaling.wsdl" + ) + .withServiceName(QName("http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1", "Utbetaling")) + .withEndpointName(QName("http://nav.no/ekstern/virkemiddelokonomi/tjenester/utbetaling/v1", "UtbetalingPort")) + .build() + .withUserNameToken( + when (getEnvVar("NAIS_CLUSTER_NAME", "local")) { + "local" -> "testUserName" + else -> String(FileInputStream("/secret/serviceuser/username").readAllBytes()) + }, + when (getEnvVar("NAIS_CLUSTER_NAME", "local")) { + "local" -> "testPassword" + else -> String(FileInputStream("/secret/serviceuser/password").readAllBytes()) + } + ) + .get() + +fun msgHeadResponse(incomingMsgHead: MsgHead, sendInRequest: SendInRequest, fagmeldingResponse: Any): MsgHead { + return incomingMsgHead.apply { + msgInfo.apply { + type = CS().apply { + dn = "Svar på forespørsel om inntekt" + v = "InntektInformasjon" + } + genDate = Instant.now().toXMLGregorianCalendar() + msgId = UUID.randomUUID().toString() + ack = CS().apply { + v = "N" + dn = "Nei" + } + val newReceiver = sender + val newSender = receiver + sender.apply { organisation = newSender.organisation } + receiver.apply { organisation = newReceiver.organisation } + conversationRef = ConversationRef().apply { + refToParent = sendInRequest.messageId + refToConversation = sendInRequest.conversationId + } + } + document.clear() + document.add( + Document().apply { + refDoc = RefDoc().apply { + msgType = CS().apply { + v = "XML" + dn = "XML-instans" + } + mimeType = "text/xml" + content = RefDoc.Content().apply { + any.add( + fagmeldingResponse + ) + } + } + } + ) + signature = null // TODO? (Dette er ikke "send-in" sin jobb, blir gjort senere) + } +} diff --git a/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt new file mode 100644 index 00000000..3b39fee8 --- /dev/null +++ b/ebms-send-in/src/main/kotlin/no/nav/emottak/utbetaling/XmlMarshaller.kt @@ -0,0 +1,61 @@ +package no.nav.emottak.utbetaling + +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.FinnBrukersUtbetalteYtelserRequest +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.FinnUtbetalingListeRequest +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe +import java.io.ByteArrayOutputStream +import java.io.StringWriter +import javax.xml.bind.JAXBContext +import javax.xml.stream.XMLInputFactory + +val utbetalingXmlMarshaller = XmlMarshaller() + +fun marshal(objekt: Any) = utbetalingXmlMarshaller.marshal(objekt) +fun unmarshal(xml: String, clazz: Class): T = utbetalingXmlMarshaller.unmarshal(xml, clazz) + +class XmlMarshaller { + + companion object { + private val jaxbContext = JAXBContext.newInstance( + FinnUtbetalingListeRequest::class.java, + FinnBrukersUtbetalteYtelserRequest::class.java, + FinnUtbetalingListe::class.java, + org.oasis_open.committees.ebxml_cppa.schema.cpp_cpa_2_0.ObjectFactory::class.java, + no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.meldinger.v1.ObjectFactory::class.java, + no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.feil.v1.ObjectFactory::class.java, + no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.ObjectFactory::class.java, + org.xmlsoap.schemas.soap.envelope.ObjectFactory::class.java, + no.kith.xmlstds.msghead._2006_05_24.ObjectFactory::class.java, + org.w3._1999.xlink.ObjectFactory::class.java, + org.w3._2009.xmldsig11_.ObjectFactory::class.java + ) + private val marshaller = jaxbContext.createMarshaller() + private val unmarshaller = jaxbContext.createUnmarshaller() + private val marshlingMonitor = Any() + private val unmarshlingMonitor = Any() + } + + fun marshal(objekt: Any): String { + val writer = StringWriter() + synchronized(marshlingMonitor) { + marshaller.marshal(objekt, writer) + } + return writer.toString() + } + + fun marshalToByteArray(objekt: Any): ByteArray { + return ByteArrayOutputStream().use { + synchronized(marshlingMonitor) { + marshaller.marshal(objekt, it) + } + it.toByteArray() + } + } + + fun unmarshal(xml: String, clazz: Class): T { + val reader = XMLInputFactory.newInstance().createXMLStreamReader(xml.reader()) + return synchronized(unmarshlingMonitor) { + unmarshaller.unmarshal(reader, clazz).value + } + } +} diff --git a/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt b/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt new file mode 100644 index 00000000..3a27c3d6 --- /dev/null +++ b/ebms-send-in/src/test/kotlin/InntektsforesporselTest.kt @@ -0,0 +1,165 @@ +import no.kith.xmlstds.msghead._2006_05_24.MsgHead +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.feil.v1.ObjectFactory +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListe +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeBrukerIkkeFunnet +import no.nav.ekstern.virkemiddelokonomi.tjenester.utbetaling.v1.FinnUtbetalingListeFeil +import no.nav.emottak.melding.model.Addressing +import no.nav.emottak.melding.model.EbmsProcessing +import no.nav.emottak.melding.model.Party +import no.nav.emottak.melding.model.PartyId +import no.nav.emottak.melding.model.SendInRequest +import no.nav.emottak.utbetaling.msgHeadResponse +import no.nav.emottak.utbetaling.unmarshal +import no.nav.emottak.utbetaling.utbetalingXmlMarshaller +import org.junit.jupiter.api.Test + +class InntektsforesporselTest { + + @Test + fun unmarshalMsgHead() { + val response = unmarshal( + String( + this::class.java.classLoader.getResourceAsStream("inntektsforesporsel/inntektsforesporsel.xml")!! + .readAllBytes() + ), + MsgHead::class.java + ) + val request = response.document.map { doc -> doc.refDoc.content.any }.first().first() + assert(request is FinnUtbetalingListe) + } + + @Test + fun canMarshalFaultInfo() { + val stelvioFault = ObjectFactory().createBrukerIkkeFunnet() + stelvioFault.errorMessage = "Ayylmaoo" + val brukerIkkeFunnetException = FinnUtbetalingListeBrukerIkkeFunnet("Ayylmaoo", stelvioFault) + + val finnUtbetalingListeFeil = FinnUtbetalingListeFeil() + finnUtbetalingListeFeil.finnUtbetalingListebrukerIkkeFunnet = brukerIkkeFunnetException.faultInfo + + val msgHeadRequest = utbetalingXmlMarshaller.unmarshal(msgHeadEksempel, MsgHead::class.java) + val msgHeadResponse = msgHeadResponse( + msgHeadRequest, + SendInRequest( + "my-message-id", + "my-conversation-id", + "my-payload-id", + msgHeadEksempel.toByteArray(), + Addressing( + Party(listOf(PartyId("org", "12345")), "mottaker"), + Party(listOf(PartyId("org", "67890")), "innsender"), + "Inntektsforesporsel", + "Inntektsforesporsel" + ), + EbmsProcessing() + ), + finnUtbetalingListeFeil + ) + + val feilElementString = String( + utbetalingXmlMarshaller.marshalToByteArray(msgHeadResponse) + ) + println(feilElementString) + } + + val msgHeadEksempel = "\n" + + "\n" + + " \n" + + " \n" + + " v1.2 2006-05-24\n" + + " 2024-06-17T08:31:10\n" + + " 309c5972-b5be-4b60-b172-094c5d236713\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " Tromsø kommune\n" + + " \n" + + " \n" + + " 940101808\n" + + " \n" + + " \n" + + " \n" + + " 1234\n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " Økonomi og oppgjør\n" + + " \n" + + " 12345\n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " NAV Pensjon\n" + + " \n" + + " 889640782\n" + + " \n" + + " \n" + + " \n" + + " 12345\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " Nordmann\n" + + " Ola\n" + + " \n" + + " 12345678965\n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " Veigaten 1\n" + + " 1234\n" + + " OSLO\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " 12345678965\n" + + " PERSON\n" + + " \n" + + " KOMMUNE\n" + + " \n" + + " 2024-06-01\n" + + " 2024-06-12\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
" +} diff --git a/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml b/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml new file mode 100644 index 00000000..4ad0ffea --- /dev/null +++ b/ebms-send-in/src/test/resources/inntektsforesporsel/inntektsforesporsel.xml @@ -0,0 +1,89 @@ + + + + v1.2 2006-05-24 + 2024-06-25T13:37:45 + + + + HELSEPLATTFORMEN AS + + 8137980 + + + + Meldingsmottak + + 8138375 + + + + + + + + NAV + + 111949 + + + + 23 + + + + + + + + + + + + + *********** + PERSON + + KOMMUNE + + + + + 2024-04-01 + 2024-04-30 + + + + + + + + + + + + + + + + v5V8tYBd24Ajyrr+Tc1h+e9eTOc= + + + + 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 + + + + + \ No newline at end of file diff --git a/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt b/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt index d04ead31..4c90a5b9 100644 --- a/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt +++ b/felles/src/main/kotlin/no/nav/emottak/melding/model/Payload.kt @@ -119,7 +119,7 @@ data class Addressing( val service: String, val action: String ) { - fun replayTo(service:String,action:String): Addressing = Addressing( to = from.copy(), from = to.copy(), service , action) + fun replyTo(service:String, action:String): Addressing = Addressing( to = from.copy(), from = to.copy(), service , action) } @Serializable diff --git a/settings.gradle.kts b/settings.gradle.kts index e2b90848..3bc9f85b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -56,7 +56,7 @@ dependencyResolutionManagement { library("ktor-server-auth-jvm", "io.ktor:ktor-server-auth-jvm:2.3.8") library("token-validation-ktor-v2", "no.nav.security:token-validation-ktor-v2:4.1.4") library("flyway-core", "org.flywaydb:flyway-core:9.16.3") - library("emottak-payload-xsd", "no.nav.emottak:emottak-payload-xsd:0.0.2") + library("emottak-payload-xsd", "no.nav.emottak:emottak-payload-xsd:0.0.5") library("jaxb-runtime", "org.glassfish.jaxb:jaxb-runtime:2.4.0-b180830.0438") library("cxf-rt-frontend-jaxws", "org.apache.cxf", "cxf-rt-frontend-jaxws").versionRef("cxf") library("cxf-rt-transports-http", "org.apache.cxf", "cxf-rt-transports-http").versionRef("cxf")