Skip to content

Commit

Permalink
Returner tom liste dersom man får en 404 fra aareg (#346)
Browse files Browse the repository at this point in the history
* Returner tom liste dersom man får en 404 fra aareg

* Returner tom liste når man får 404 fra aareg
  • Loading branch information
selbekk authored Jan 27, 2025
1 parent 456be1b commit 662c599
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,25 @@
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;
import no.nav.vedtak.felles.integrasjon.rest.RestConfig;
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
Expand Down Expand Up @@ -45,14 +50,32 @@ public List<ArbeidsforholdDto> 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();
}

if (response.statusCode() >= 400) {
throw new IntegrasjonException("FP-12345", "Feil ved henting av arbeidsforhold for person: " + response.body());
}

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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -18,8 +20,10 @@
import org.mockito.junit.jupiter.MockitoExtension;

import no.nav.familie.inntektsmelding.integrasjoner.aareg.dto.ArbeidsforholdDto;
import no.nav.vedtak.exception.IntegrasjonException;
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 {
Expand Down Expand Up @@ -47,8 +51,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());

Expand All @@ -58,15 +67,15 @@ 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
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
Expand All @@ -82,8 +91,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());
Expand All @@ -92,6 +105,32 @@ void skal_returnere_tom_liste_ved_ingen_arbeidsforhold() {
assertThat(result).isEmpty();
}

@Test
void skal_returnere_tom_liste_når_aareg_returnerer_404() {
// Arrange
var ident = "12345678901";

when(restClient.sendReturnUnhandled(any(RestRequest.class)))
.thenThrow(new IntegrasjonException("FP-12345", "404 feil"));

// Act
var result = aaregRestKlient.finnArbeidsforholdForArbeidstaker(ident, LocalDate.now());

// Assert
assertThat(result).isEmpty();
}

@Test
void skal_kaste_exception_når_aareg_kaster_annen_integrasjonsexception() {
// Arrange
var ident = "12345678901";

when(restClient.sendReturnUnhandled(any(RestRequest.class)))
.thenThrow(new IntegrasjonException("FP-w00t", "Ukjent feil"));

assertThrows(IntegrasjonException.class, () -> aaregRestKlient.finnArbeidsforholdForArbeidstaker(ident, LocalDate.now()));
}

@Test
void skal_bygge_korrekt_uri_for_arbeidsforhold() {
// Arrange
Expand Down

0 comments on commit 662c599

Please sign in to comment.