Skip to content

Commit da4d8d8

Browse files
authored
IS-2646: Bedre feilhåndtering mot EREG (#545)
1 parent f5b8d10 commit da4d8d8

File tree

7 files changed

+47
-6
lines changed

7 files changed

+47
-6
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
out/
77
build/
88
.gradle/
9+
.kotlin/
910

1011
# Generated sources
1112
src/generated

src/main/kotlin/no/nav/syfo/client/dokarkiv/DokarkivClient.kt

+3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ class DokarkivClient(
3737
}
3838
val journalpostResponse = response.body<JournalpostResponse>()
3939
COUNT_CALL_DOKARKIV_JOURNALPOST_SUCCESS.increment()
40+
if (journalpostResponse.journalpostferdigstilt == null || !journalpostResponse.journalpostferdigstilt) {
41+
log.error("Journalpost med id ${journalpostResponse.journalpostId} ble ikke ferdigstilt (status er ${journalpostResponse.journalstatus})")
42+
}
4043
journalpostResponse
4144
} catch (e: ClientRequestException) {
4245
if (e.response.status == HttpStatusCode.Conflict) {

src/main/kotlin/no/nav/syfo/client/ereg/EregClient.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@ class EregClient(
1919
suspend fun organisasjonVirksomhetsnavn(
2020
virksomhetsnummer: Virksomhetsnummer,
2121
): EregVirksomhetsnavn? {
22-
try {
22+
return try {
2323
val url = "$eregOrganisasjonUrl/${virksomhetsnummer.value}"
2424
val response = httpClient.get(url) {
2525
accept(ContentType.Application.Json)
2626
}.body<EregOrganisasjonResponse>()
2727
COUNT_CALL_EREG_ORGANISASJON_SUCCESS.increment()
28-
return response.toEregVirksomhetsnavn()
28+
response.toEregVirksomhetsnavn()
2929
} catch (e: ResponseException) {
3030
if (e.isOrganisasjonNotFound(virksomhetsnummer)) {
3131
log.warn("No Organisasjon was found in Ereg: returning empty Virksomhetsnavn, message=${e.message}")
3232
COUNT_CALL_EREG_ORGANISASJON_NOT_FOUND.increment()
33-
return EregVirksomhetsnavn(
34-
virksomhetsnavn = "",
33+
EregVirksomhetsnavn(
34+
virksomhetsnavn = "Ukjent",
3535
)
3636
} else {
3737
log.error(
@@ -40,9 +40,9 @@ class EregClient(
4040
StructuredArguments.keyValue("message", e.message),
4141
)
4242
COUNT_CALL_EREG_ORGANISASJON_FAIL.increment()
43+
throw RuntimeException(e)
4344
}
4445
}
45-
return null
4646
}
4747

4848
private fun ResponseException.isOrganisasjonNotFound(

src/main/kotlin/no/nav/syfo/cronjob/journalforing/DialogmoteVarselJournalforingCronjob.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class DialogmoteVarselJournalforingCronjob(
6969
journalforingResult.updated++
7070
} ?: throw RuntimeException("Failed to Journalfor ArbeidstakerVarsel: response missing JournalpostId")
7171
} catch (e: Exception) {
72-
log.error("Exception caught while attempting Journalforing of ArbeidstakerVarsel", e)
72+
log.error("Exception caught while attempting Journalforing of ArbeidstakerVarsel, will try again later", e)
7373
journalforingResult.failed++
7474
}
7575
}

src/test/kotlin/no/nav/syfo/cronjob/journalforing/DialogmoteVarselJournalforingCronjobSpek.kt

+31
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,37 @@ class DialogmoteVarselJournalforingCronjobSpek : Spek({
510510
result.updated shouldBeEqualTo 0
511511
}
512512
}
513+
it("should fail to update journalpost if call to ereg fails") {
514+
val newDialogmoteDTO = generateNewDialogmoteDTO(
515+
personIdent = UserConstants.ARBEIDSTAKER_FNR,
516+
virksomhetsnummer = UserConstants.VIRKSOMHETSNUMMER_EREG_FAILS.value,
517+
)
518+
519+
with(
520+
handleRequest(HttpMethod.Post, urlMote) {
521+
addHeader(HttpHeaders.Authorization, bearerHeader(validToken))
522+
addHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString())
523+
setBody(objectMapper.writeValueAsString(newDialogmoteDTO))
524+
}
525+
) {
526+
response.status() shouldBeEqualTo HttpStatusCode.OK
527+
}
528+
529+
runBlocking {
530+
val result = DialogmoteCronjobResult()
531+
dialogmoteVarselJournalforingCronjob.dialogmoteArbeidstakerVarselJournalforingJob(result)
532+
533+
result.failed shouldBeEqualTo 0
534+
result.updated shouldBeEqualTo 1
535+
}
536+
runBlocking {
537+
val result = DialogmoteCronjobResult()
538+
dialogmoteVarselJournalforingCronjob.dialogmoteArbeidsgiverVarselJournalforingJob(result)
539+
540+
result.failed shouldBeEqualTo 1
541+
result.updated shouldBeEqualTo 0
542+
}
543+
}
513544
it("Check that correct title is generated") {
514545
val moteTidspunkt = LocalDateTime.of(2022, Month.JUNE, 20, 0, 0, 0)
515546
val referatUtenEndring = createReferat(

src/test/kotlin/no/nav/syfo/testhelper/UserConstants.kt

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ object UserConstants {
4141
val NARMESTELEDER_FNR_2 = PersonIdent("98765432102")
4242
val VIRKSOMHETSNUMMER_NO_NARMESTELEDER = Virksomhetsnummer("981111117")
4343
val VIRKSOMHETSNUMMER_HAS_NARMESTELEDER = Virksomhetsnummer("934567897")
44+
val VIRKSOMHETSNUMMER_EREG_FAILS = Virksomhetsnummer("934567889")
4445
val OTHER_VIRKSOMHETSNUMMER_HAS_NARMESTELEDER = Virksomhetsnummer("922222223")
4546

4647
val JOURNALPOST_ID_MOTTAKER_GONE = 129

src/test/kotlin/no/nav/syfo/testhelper/mock/EregMock.kt

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package no.nav.syfo.testhelper.mock
22

3+
import io.ktor.http.*
34
import io.ktor.server.application.*
45
import io.ktor.server.engine.*
56
import io.ktor.server.netty.*
@@ -9,6 +10,7 @@ import no.nav.syfo.application.api.authentication.installContentNegotiation
910
import no.nav.syfo.client.ereg.EregClient.Companion.EREG_PATH
1011
import no.nav.syfo.client.ereg.EregOrganisasjonNavn
1112
import no.nav.syfo.client.ereg.EregOrganisasjonResponse
13+
import no.nav.syfo.testhelper.UserConstants.VIRKSOMHETSNUMMER_EREG_FAILS
1214
import no.nav.syfo.testhelper.UserConstants.VIRKSOMHETSNUMMER_HAS_NARMESTELEDER
1315
import no.nav.syfo.testhelper.getRandomPort
1416

@@ -26,6 +28,9 @@ class EregMock {
2628
get("$EREG_PATH/${VIRKSOMHETSNUMMER_HAS_NARMESTELEDER.value}") {
2729
call.respond(EregOrganisasjonResponse(EregOrganisasjonNavn("Butikken", "")))
2830
}
31+
get("$EREG_PATH/${VIRKSOMHETSNUMMER_EREG_FAILS.value}") {
32+
call.respond(HttpStatusCode.InternalServerError)
33+
}
2934
}
3035
}
3136
}

0 commit comments

Comments
 (0)