diff --git a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlient.java b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlient.java index d98ea187..f83d8e13 100644 --- a/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlient.java +++ b/src/main/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlient.java @@ -3,13 +3,16 @@ import java.net.URI; import java.time.LocalDate; import java.util.Arrays; +import java.util.Collections; import java.util.List; import jakarta.enterprise.context.Dependent; +import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.UriBuilder; import jakarta.ws.rs.core.UriBuilderException; import no.nav.familie.inntektsmelding.integrasjoner.aareg.dto.ArbeidsforholdDto; +import no.nav.vedtak.exception.IntegrasjonException; import no.nav.vedtak.felles.integrasjon.rest.NavHeaders; import no.nav.vedtak.felles.integrasjon.rest.RestClient; import no.nav.vedtak.felles.integrasjon.rest.RestClientConfig; @@ -17,6 +20,8 @@ import no.nav.vedtak.felles.integrasjon.rest.RestRequest; import no.nav.vedtak.felles.integrasjon.rest.TokenFlow; +import no.nav.vedtak.mapper.json.DefaultJsonMapper;; + /* * Dokumentasjon https://confluence.adeo.no/display/FEL/AAREG+-+Tjeneste+REST+aareg.api * Swagger https://aareg-services-q2.dev.intern.nav.no/swagger-ui/index.html?urls.primaryName=aareg.api.v1#/arbeidstaker/finnArbeidsforholdPrArbeidstaker @@ -45,14 +50,28 @@ public List finnArbeidsforholdForArbeidstaker(String personId try { var uri = lagUriForForFinnArbeidsforholdForArbeidstaker(førsteFraværsdag, førsteFraværsdag); var request = RestRequest.newGET(uri, restConfig).header(NavHeaders.HEADER_NAV_PERSONIDENT, personIdent); - var response = restClient.send(request, ArbeidsforholdDto[].class); - return Arrays.asList(response); + var response = restClient.sendReturnUnhandled(request); + + if (response.statusCode() == Response.Status.NOT_FOUND.getStatusCode()) { + // 404 betyr at det ikke finnes arbeidsforhold for personen, eller at personen ikke finnes + return Collections.emptyList(); + } + + var arbeidsforhold = DefaultJsonMapper.fromJson(response.body(), ArbeidsforholdDto[].class); + return Arrays.asList(arbeidsforhold); + } catch (IntegrasjonException e) { + if (e.getMessage().contains("404")) { + return Collections.emptyList(); + } + throw e; } catch (UriBuilderException | IllegalArgumentException e) { throw new IllegalArgumentException("Utviklerfeil syntax-exception for finnArbeidsforholdForArbeidstaker"); } } - /** Kun eksponert for å kunne teste URI-bygging – skal ikke brukes ellers */ + /** + * Kun eksponert for å kunne teste URI-bygging – skal ikke brukes ellers + */ URI lagUriForForFinnArbeidsforholdForArbeidstaker(LocalDate qfom, LocalDate qtom) { return UriBuilder.fromUri(restConfig.endpoint()) .path("arbeidstaker/arbeidsforhold") diff --git a/src/main/java/no/nav/familie/inntektsmelding/refusjonomsorgsdagerarbeidsgiver/rest/RefusjonOmsorgsdagerArbeidsgiverRest.java b/src/main/java/no/nav/familie/inntektsmelding/refusjonomsorgsdagerarbeidsgiver/rest/RefusjonOmsorgsdagerArbeidsgiverRest.java index 58ddbc7d..48161243 100644 --- a/src/main/java/no/nav/familie/inntektsmelding/refusjonomsorgsdagerarbeidsgiver/rest/RefusjonOmsorgsdagerArbeidsgiverRest.java +++ b/src/main/java/no/nav/familie/inntektsmelding/refusjonomsorgsdagerarbeidsgiver/rest/RefusjonOmsorgsdagerArbeidsgiverRest.java @@ -2,6 +2,8 @@ import static no.nav.familie.inntektsmelding.refusjonomsorgsdagerarbeidsgiver.rest.RefusjonOmsorgsdagerArbeidsgiverRest.BASE_PATH; +import java.time.LocalDate; + import jakarta.enterprise.context.RequestScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; @@ -14,20 +16,17 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import no.nav.familie.inntektsmelding.integrasjoner.person.PersonTjeneste; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import no.nav.familie.inntektsmelding.integrasjoner.person.PersonTjeneste; import no.nav.familie.inntektsmelding.refusjonomsorgsdagerarbeidsgiver.tjenester.ArbeidstakerTjeneste; import no.nav.familie.inntektsmelding.refusjonomsorgsdagerarbeidsgiver.tjenester.InnloggetBrukerTjeneste; import no.nav.familie.inntektsmelding.server.auth.api.AutentisertMedTokenX; import no.nav.familie.inntektsmelding.server.auth.api.Tilgangskontrollert; -import java.time.LocalDate; - @AutentisertMedTokenX @RequestScoped @Transactional diff --git a/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlientTest.java b/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlientTest.java index 6ebb7c9a..96e78cb3 100644 --- a/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlientTest.java +++ b/src/test/java/no/nav/familie/inntektsmelding/integrasjoner/aareg/AaregRestKlientTest.java @@ -4,11 +4,13 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.net.http.HttpResponse; import java.time.LocalDate; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -20,6 +22,7 @@ import no.nav.familie.inntektsmelding.integrasjoner.aareg.dto.ArbeidsforholdDto; import no.nav.vedtak.felles.integrasjon.rest.RestClient; import no.nav.vedtak.felles.integrasjon.rest.RestRequest; +import no.nav.vedtak.mapper.json.DefaultJsonMapper; @ExtendWith(MockitoExtension.class) class AaregRestKlientTest { @@ -47,8 +50,13 @@ void setUp() { null, "ordinært"); - when(restClient.send(any(RestRequest.class), eq(ArbeidsforholdDto[].class))) - .thenReturn(new ArbeidsforholdDto[]{arbeidsforhold}); + var httpResponse = mock(HttpResponse.class); + when(httpResponse.body()).thenReturn(DefaultJsonMapper.toJson(List.of(arbeidsforhold))); + when(httpResponse.statusCode()).thenReturn(200); + + + when(restClient.sendReturnUnhandled(any(RestRequest.class))) + .thenReturn(httpResponse); var result = aaregRestKlient.finnArbeidsforholdForArbeidstaker(ident, LocalDate.now()); @@ -58,7 +66,7 @@ void setUp() { assertTrue(result.getFirst().permisjonPermitteringer().isEmpty()); var requestCaptor = ArgumentCaptor.forClass(RestRequest.class); - verify(restClient).send(requestCaptor.capture(), eq(ArbeidsforholdDto[].class)); + verify(restClient).sendReturnUnhandled(requestCaptor.capture()); } @Test @@ -66,7 +74,7 @@ void skal_kaste_exception_ved_ugyldig_uri() { // Arrange var ident = "12345678901"; - when(restClient.send(any(RestRequest.class), eq(ArbeidsforholdDto[].class))) + when(restClient.sendReturnUnhandled(any(RestRequest.class))) .thenThrow(new IllegalArgumentException("Invalid URI")); // Act & Assert @@ -82,8 +90,12 @@ void skal_returnere_tom_liste_ved_ingen_arbeidsforhold() { // Arrange var ident = "12345678901"; - when(restClient.send(any(RestRequest.class), eq(ArbeidsforholdDto[].class))) - .thenReturn(new ArbeidsforholdDto[]{}); + var httpResponse = mock(HttpResponse.class); + when(httpResponse.statusCode()).thenReturn(404); + + + when(restClient.sendReturnUnhandled(any(RestRequest.class))) + .thenReturn(httpResponse); // Act var result = aaregRestKlient.finnArbeidsforholdForArbeidstaker(ident, LocalDate.now());