From 6bae1cdf0aee3e6daed83538522a5e66bc4de848 Mon Sep 17 00:00:00 2001 From: espenwaaga Date: Thu, 30 Jan 2025 10:51:09 +0100 Subject: [PATCH] =?UTF-8?q?TFP-5967:=20Utvider=20kontrakt=20for=20=C3=A5?= =?UTF-8?q?=20legge=20til=20addressebeskyttelse=20og=20skjermet=20person?= =?UTF-8?q?=20(+=20utvidelse=20av=20skjermet=20person=20mock)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vtp/kontrakter/v2/Adressebeskyttelse.java | 8 +++++ .../vtp/kontrakter/v2/PersonDto.java | 25 +++++++++++++- .../java/no/nav/nom/SkjermetPersonMock.java | 33 ++++++++++++++----- .../personopplysning/PersonModell.java | 27 ++++++++++----- .../mapper/PersonopplysningModellMapper.java | 30 ++++++++++++----- .../TestscenarioV2RestTjenesteTest.java | 16 ++++----- 6 files changed, 104 insertions(+), 35 deletions(-) create mode 100644 kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/Adressebeskyttelse.java diff --git a/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/Adressebeskyttelse.java b/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/Adressebeskyttelse.java new file mode 100644 index 000000000..08654751b --- /dev/null +++ b/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/Adressebeskyttelse.java @@ -0,0 +1,8 @@ +package no.nav.foreldrepenger.vtp.kontrakter.v2; + +public enum Adressebeskyttelse { + FORTROLIG, + STRENGT_FORTROLIG, + // STRENGT_FORTROLIG_UTLAND, Støttes ikke per nå. + UGRADERT +} diff --git a/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/PersonDto.java b/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/PersonDto.java index c5e20181c..716344eec 100644 --- a/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/PersonDto.java +++ b/kontrakter/src/main/java/no/nav/foreldrepenger/vtp/kontrakter/v2/PersonDto.java @@ -18,12 +18,15 @@ public record PersonDto(UUID id, List personstatus, List medlemskap, List adresser, + Adressebeskyttelse adressebeskyttelse, + boolean erSkjermet, InntektYtelseModellDto inntektytelse) { private PersonDto(Builder b) { this(b.id, b.rolle, b.fødselsdato, b.dødsdato, b.språk, b.kjønn, b.geografiskTilknytning, b.familierelasjoner, - b.statsborgerskap, b.sivilstand, b.personstatus, b.medlemskap, b.adresser, b.inntektytelse); + b.statsborgerskap, b.sivilstand, b.personstatus, b.medlemskap, b.adresser, b.adressebeskyttelse, + b.erSkjermet, b.inntektytelse); } public static Builder builder() { @@ -44,6 +47,8 @@ public static class Builder { private List personstatus = new ArrayList<>(); private List medlemskap = new ArrayList<>(); private List adresser = new ArrayList<>(); + private Adressebeskyttelse adressebeskyttelse; + private boolean erSkjermet; private InntektYtelseModellDto inntektytelse; @@ -103,6 +108,14 @@ public List adresser() { return adresser; } + public Adressebeskyttelse adressebeskyttelse() { + return adressebeskyttelse; + } + + public boolean erSkjermet() { + return erSkjermet; + } + public InntektYtelseModellDto inntektytelse() { return inntektytelse; } @@ -172,6 +185,16 @@ public Builder adresser(List adresser) { return this; } + public Builder addressebeskyttelse(Adressebeskyttelse adressebeskyttelse) { + this.adressebeskyttelse = adressebeskyttelse; + return this; + } + + public Builder erSkjermet(boolean erSkjermet) { + this.erSkjermet = erSkjermet; + return this; + } + public Builder inntektytelse(InntektYtelseModellDto inntektytelse) { this.inntektytelse = inntektytelse; return this; diff --git a/mocks/skjermet-person-mock/src/main/java/no/nav/nom/SkjermetPersonMock.java b/mocks/skjermet-person-mock/src/main/java/no/nav/nom/SkjermetPersonMock.java index 0cf847756..9958850a5 100644 --- a/mocks/skjermet-person-mock/src/main/java/no/nav/nom/SkjermetPersonMock.java +++ b/mocks/skjermet-person-mock/src/main/java/no/nav/nom/SkjermetPersonMock.java @@ -1,17 +1,19 @@ package no.nav.nom; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.ws.rs.Consumes; import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; +import no.nav.foreldrepenger.vtp.testmodell.personopplysning.PersonModell; +import no.nav.foreldrepenger.vtp.testmodell.repo.TestscenarioBuilderRepository; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; /* * Tjeneste for å sjekke om person er skjermet. @@ -22,26 +24,39 @@ @Path("/api/nom") public class SkjermetPersonMock { + private final TestscenarioBuilderRepository scenarioRepository; + + public SkjermetPersonMock(@Context TestscenarioBuilderRepository scenarioRepository) { + this.scenarioRepository = scenarioRepository; + } + @POST @Path("/skjermet") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Operation(description = "Person skjermet") public Boolean personErSkjermet(SkjermetRequestDto request) { - return false; + return erPersonSkjermet(request.personident()); } - @POST @Path("/skjermetBulk") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Map isSkjermetBulk(SkjermetBulkRequestDto request) { Map response = new LinkedHashMap<>(); - request.personidenter().forEach(pi -> response.put(pi, false)); + request.personidenter().forEach(pi -> response.put(pi, erPersonSkjermet(pi))); return response; } + private boolean erPersonSkjermet(String personident) { + var brukerModell = scenarioRepository.getPersonIndeks().finnByIdent(personident); + if (brukerModell instanceof PersonModell personModell) { + return personModell.getErSkjermet(); + } + return false; + } + record SkjermetRequestDto(String personident) { } record SkjermetBulkRequestDto(List personidenter) { } diff --git a/model/src/main/java/no/nav/foreldrepenger/vtp/testmodell/personopplysning/PersonModell.java b/model/src/main/java/no/nav/foreldrepenger/vtp/testmodell/personopplysning/PersonModell.java index 2f1692cda..053ef46aa 100644 --- a/model/src/main/java/no/nav/foreldrepenger/vtp/testmodell/personopplysning/PersonModell.java +++ b/model/src/main/java/no/nav/foreldrepenger/vtp/testmodell/personopplysning/PersonModell.java @@ -1,21 +1,20 @@ package no.nav.foreldrepenger.vtp.testmodell.personopplysning; -import java.time.LocalDate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Optional; - import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; - import no.nav.foreldrepenger.vtp.testmodell.medlemskap.MedlemskapModell; import no.nav.foreldrepenger.vtp.testmodell.medlemskap.MedlemskapperiodeModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.PersonstatusModell.Personstatuser; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.Optional; + public abstract class PersonModell extends BrukerModell { @JsonProperty("fornavn") @@ -33,6 +32,9 @@ public abstract class PersonModell extends BrukerModell { @JsonProperty("diskresjonskode") private Diskresjonskoder diskresjonskode; + @JsonProperty("erSkjermet") + private boolean erSkjermet; + @JsonProperty("språk") private String språk; @@ -124,6 +126,10 @@ public Diskresjonskoder getDiskresjonskodeType() { return diskresjonskode; } + public boolean getErSkjermet() { + return erSkjermet; + } + public LocalDate getDødsdato() { return dødsdato; } @@ -221,6 +227,11 @@ public void setDiskresjonskode(Diskresjonskoder diskresjonskode) { this.diskresjonskode = diskresjonskode; } + public PersonModell setErSkjermet(boolean erSkjermet) { + this.erSkjermet = erSkjermet; + return this; + } + public void setDødsdato(LocalDate dødsdato) { this.dødsdato = dødsdato; } diff --git a/server/src/main/java/no/nav/foreldrepenger/vtp/server/api/scenario/mapper/PersonopplysningModellMapper.java b/server/src/main/java/no/nav/foreldrepenger/vtp/server/api/scenario/mapper/PersonopplysningModellMapper.java index 1b1207141..7055526b8 100644 --- a/server/src/main/java/no/nav/foreldrepenger/vtp/server/api/scenario/mapper/PersonopplysningModellMapper.java +++ b/server/src/main/java/no/nav/foreldrepenger/vtp/server/api/scenario/mapper/PersonopplysningModellMapper.java @@ -1,15 +1,8 @@ package no.nav.foreldrepenger.vtp.server.api.scenario.mapper; -import static no.nav.foreldrepenger.fpwsproxy.UtilKlasse.safeStream; - -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.stream.Collectors; - import com.neovisionaries.i18n.CountryCode; - import no.nav.foreldrepenger.vtp.kontrakter.v2.AdresseDto; +import no.nav.foreldrepenger.vtp.kontrakter.v2.Adressebeskyttelse; import no.nav.foreldrepenger.vtp.kontrakter.v2.FamilierelasjonModellDto; import no.nav.foreldrepenger.vtp.kontrakter.v2.GeografiskTilknytningDto; import no.nav.foreldrepenger.vtp.kontrakter.v2.Kjønn; @@ -30,6 +23,7 @@ import no.nav.foreldrepenger.vtp.testmodell.personopplysning.AnnenPartModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.BarnModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.BrukerModell; +import no.nav.foreldrepenger.vtp.testmodell.personopplysning.Diskresjonskoder; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.FamilierelasjonModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.GateadresseModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.GeografiskTilknytningModell; @@ -43,6 +37,13 @@ import no.nav.foreldrepenger.vtp.testmodell.personopplysning.SøkerModell; import no.nav.foreldrepenger.vtp.testmodell.personopplysning.UstrukturertAdresseModell; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; + +import static no.nav.foreldrepenger.fpwsproxy.UtilKlasse.safeStream; + public class PersonopplysningModellMapper { private PersonopplysningModellMapper() { @@ -108,9 +109,22 @@ private static void setPerson(PersonModell personModell, PersonDto person) { personModell.setSivilstand(tilSivilstand(person.sivilstand())); personModell.setPersonstatus(tilPersonstatus(person.personstatus())); personModell.setAdresser(tilAdresse(person.adresser())); + personModell.setDiskresjonskode(tilDiskresjonskode(person.adressebeskyttelse())); + personModell.setErSkjermet(person.erSkjermet()); personModell.setMedlemskap(tilMedlemskap(person.medlemskap())); } + private static Diskresjonskoder tilDiskresjonskode(Adressebeskyttelse adressebeskyttelse) { + if (adressebeskyttelse == null) { + return null; + } + return switch (adressebeskyttelse) { + case FORTROLIG -> Diskresjonskoder.SPFO; + case STRENGT_FORTROLIG -> Diskresjonskoder.SPSF; + case UGRADERT -> null; + }; + } + private static List tilRelasjoner(List familierelasjoner, Map allePersoner) { return safeStream(familierelasjoner) .map(f -> tilFamilierelasjonModell(allePersoner, f)) diff --git a/server/src/test/java/no/nav/foreldrepenger/vtp/server/api/scenario/TestscenarioV2RestTjenesteTest.java b/server/src/test/java/no/nav/foreldrepenger/vtp/server/api/scenario/TestscenarioV2RestTjenesteTest.java index 58128526b..a31063fc1 100644 --- a/server/src/test/java/no/nav/foreldrepenger/vtp/server/api/scenario/TestscenarioV2RestTjenesteTest.java +++ b/server/src/test/java/no/nav/foreldrepenger/vtp/server/api/scenario/TestscenarioV2RestTjenesteTest.java @@ -1,15 +1,6 @@ package no.nav.foreldrepenger.vtp.server.api.scenario; -import static org.assertj.core.api.Assertions.assertThat; - -import java.time.LocalDate; -import java.util.List; -import java.util.UUID; - -import org.junit.jupiter.api.Test; - import com.neovisionaries.i18n.CountryCode; - import no.nav.foreldrepenger.vtp.kontrakter.v2.AdresseDto; import no.nav.foreldrepenger.vtp.kontrakter.v2.FamilierelasjonModellDto; import no.nav.foreldrepenger.vtp.kontrakter.v2.GeografiskTilknytningDto; @@ -30,6 +21,13 @@ import no.nav.foreldrepenger.vtp.testmodell.repo.impl.BasisdataProviderFileImpl; import no.nav.foreldrepenger.vtp.testmodell.repo.impl.DelegatingTestscenarioRepository; import no.nav.foreldrepenger.vtp.testmodell.repo.impl.TestscenarioRepositoryImpl; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.util.List; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; class TestscenarioV2RestTjenesteTest {