From 5bd42d85410be8ac5556df418a2ed7202e3a5d15 Mon Sep 17 00:00:00 2001 From: stigus Date: Mon, 26 Aug 2024 21:14:19 +0200 Subject: [PATCH] Fikset navigering og tester rundt denne funksjonaliteten #deploy-dolly-backend --- .../mapper/strategy/TestgruppeMappingStrategy.java | 6 +----- .../dolly/provider/api/TestgruppeController.java | 14 +++++++------- .../dolly/provider/api/TestpersonController.java | 2 +- .../no/nav/dolly/service/NavigasjonService.java | 13 ++++++++----- .../strategy/TestgruppeMappingStrategyTest.java | 8 ++------ .../mapper/strategy/TestidentMappingTest.java | 3 +-- .../api/TestgruppeControllerDeleteTest.java | 2 -- .../nav/dolly/service/NavigasjonServiceTest.java | 8 ++++---- .../libs/servletsecurity/action/GetUserInfo.java | 12 +----------- 9 files changed, 25 insertions(+), 43 deletions(-) diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategy.java b/apps/dolly-backend/src/main/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategy.java index 646ecb15982..7361700298f 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategy.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategy.java @@ -9,11 +9,9 @@ import no.nav.dolly.domain.resultset.Tags; import no.nav.dolly.domain.resultset.entity.testgruppe.RsTestgruppe; import no.nav.dolly.mapper.MappingStrategy; -import no.nav.testnav.libs.servletsecurity.action.GetUserInfo; import org.springframework.stereotype.Component; import static java.util.Objects.nonNull; -import static no.nav.dolly.util.CurrentAuthentication.getUserId; import static org.apache.commons.lang3.BooleanUtils.isTrue; import static org.apache.commons.lang3.StringUtils.isNotBlank; @@ -21,8 +19,6 @@ @RequiredArgsConstructor public class TestgruppeMappingStrategy implements MappingStrategy { - private final GetUserInfo getUserInfo; - @Override public void register(MapperFactory factory) { factory.classMap(Testgruppe.class, RsTestgruppe.class) @@ -35,7 +31,7 @@ public void mapAtoB(Testgruppe testgruppe, RsTestgruppe rsTestgruppe, MappingCon .filter(ident -> isTrue(ident.getIBruk())) .count()); rsTestgruppe.setFavorittIGruppen(!testgruppe.getFavorisertAv().isEmpty()); - rsTestgruppe.setErEierAvGruppe(getUserId(getUserInfo).equals(getBrukerId(testgruppe.getOpprettetAv()))); + rsTestgruppe.setErEierAvGruppe(nonNull(context.getProperty("brukerId")) && (context.getProperty("brukerId")).equals(getBrukerId(testgruppe.getOpprettetAv()))); rsTestgruppe.setErLaast(isTrue(rsTestgruppe.getErLaast())); rsTestgruppe.setTags(testgruppe.getTags().stream() .filter(tag -> Tags.DOLLY != tag) diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestgruppeController.java b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestgruppeController.java index da740694bae..59eae5e60ff 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestgruppeController.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestgruppeController.java @@ -93,7 +93,7 @@ public RsTestgruppe oppdaterTestgruppeLaas(@PathVariable("gruppeId") Long gruppe return mapperFacade.map(gruppe, RsTestgruppe.class); } - @CacheEvict(value = {CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_GRUPPE }, allEntries = true) @PostMapping @Transactional @ResponseStatus(HttpStatus.CREATED) @@ -155,7 +155,7 @@ public void slettgruppe(@PathVariable("gruppeId") Long gruppeId) { testgruppeService.deleteGruppeById(gruppeId); } - @CacheEvict(value = {CACHE_BESTILLING, CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_BESTILLING, CACHE_GRUPPE }, allEntries = true) @ResponseStatus(HttpStatus.CREATED) @PostMapping("/{gruppeId}/bestilling") @Operation(description = "Opprett berikede testpersoner basert på fødselsdato, kjønn og identtype") @@ -167,7 +167,7 @@ public RsBestillingStatus opprettIdentBestilling(@PathVariable("gruppeId") Long } @Operation(description = "Opprett berikede testpersoner basert på eskisterende identer") - @CacheEvict(value = {CACHE_BESTILLING, CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_BESTILLING, CACHE_GRUPPE }, allEntries = true) @ResponseStatus(HttpStatus.CREATED) @PostMapping("/{gruppeId}/bestilling/fraidenter") public RsBestillingStatus opprettIdentBestillingFraIdenter(@PathVariable("gruppeId") Long gruppeId, @RequestBody RsDollyBestillingFraIdenterRequest request) { @@ -179,7 +179,7 @@ public RsBestillingStatus opprettIdentBestillingFraIdenter(@PathVariable("gruppe } @Operation(description = "Importere testpersoner fra PDL og legg til berikning non-PDL artifacter") - @CacheEvict(value = {CACHE_BESTILLING, CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_BESTILLING, CACHE_GRUPPE }, allEntries = true) @ResponseStatus(HttpStatus.CREATED) @PostMapping("/{gruppeId}/bestilling/importfrapdl") public RsBestillingStatus importAvIdenterFraPdlBestilling(@PathVariable("gruppeId") Long gruppeId, @RequestBody RsDollyImportFraPdlRequest request) { @@ -191,7 +191,7 @@ public RsBestillingStatus importAvIdenterFraPdlBestilling(@PathVariable("gruppeI } @Operation(description = "Legg til berikning på alle i gruppe") - @CacheEvict(value = {CACHE_BESTILLING, CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_BESTILLING, CACHE_GRUPPE }, allEntries = true) @ResponseStatus(HttpStatus.OK) @PutMapping("/{gruppeId}/leggtilpaagruppe") public RsBestillingStatus endreGruppeLeggTil(@PathVariable("gruppeId") Long gruppeId, @RequestBody RsDollyBestillingLeggTilPaaGruppe request) { @@ -201,7 +201,7 @@ public RsBestillingStatus endreGruppeLeggTil(@PathVariable("gruppeId") Long grup return mapperFacade.map(bestilling, RsBestillingStatus.class); } - @CacheEvict(value = {CACHE_BESTILLING, CACHE_GRUPPE}, allEntries = true) + @CacheEvict(value = { CACHE_BESTILLING, CACHE_GRUPPE }, allEntries = true) @PutMapping("/{gruppeId}/gjenopprett") @Operation(description = "Gjenopprett testidenter tilhørende en gruppe med liste for tilhørende miljoer") public RsBestillingStatus gjenopprettBestilling(@PathVariable("gruppeId") Long gruppeId, @@ -212,7 +212,7 @@ public RsBestillingStatus gjenopprettBestilling(@PathVariable("gruppeId") Long g return mapperFacade.map(bestilling, RsBestillingStatus.class); } - @CacheEvict(value = {CACHE_GRUPPE, CACHE_BESTILLING}, allEntries = true) + @CacheEvict(value = { CACHE_GRUPPE, CACHE_BESTILLING }, allEntries = true) @Transactional @PutMapping(value = "/{gruppeId}/identer/{identer}") @Operation(description = "Flytt angitte identer til denne gruppe") diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestpersonController.java b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestpersonController.java index df3b30a6d73..485607ef926 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestpersonController.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/provider/api/TestpersonController.java @@ -140,7 +140,7 @@ public void deleteTestident(@PathVariable String ident) { public Mono navigerTilTestident(@PathVariable String ident) { Bruker bruker = brukerService.fetchBruker(getUserId(getUserInfo)); - return navigasjonService.navigerTilIdent(ident, bruker.getBrukertype()); + return navigasjonService.navigerTilIdent(ident, bruker); } @Operation(description = "Sjekk om ønsket testperson finnes i Dolly") diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/service/NavigasjonService.java b/apps/dolly-backend/src/main/java/no/nav/dolly/service/NavigasjonService.java index a648e4467fe..f14625fe317 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/service/NavigasjonService.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/service/NavigasjonService.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import ma.glasnost.orika.MapperFacade; +import ma.glasnost.orika.MappingContext; import no.nav.dolly.bestilling.pdldata.PdlDataConsumer; import no.nav.dolly.bestilling.personservice.PersonServiceConsumer; import no.nav.dolly.domain.PdlPerson; @@ -45,16 +46,16 @@ public class NavigasjonService { private final PdlDataConsumer pdlDataConsumer; @Transactional(readOnly = true) - public Mono navigerTilIdent(String ident, Bruker.Brukertype brukertype) { + public Mono navigerTilIdent(String ident, Bruker bruker) { return Flux.merge(getPdlForvalterIdenter(ident), getPdlPersonIdenter(ident)) .filter(Objects::nonNull) - .filter(ident1 -> filterOnBrukertype(ident, brukertype)) + .filter(ident1 -> filterOnBrukertype(ident, bruker.getBrukertype())) .distinct() .flatMap(ident1 -> Mono.justOrEmpty(identRepository.findByIdent(ident1)) .map(testident -> RsWhereAmI.builder() - .gruppe(mapGruppe(testident.getTestgruppe())) + .gruppe(mapGruppe(testident.getTestgruppe(), bruker.getBrukerId())) .identHovedperson(testident.getIdent()) .identNavigerTil(ident) .sidetall(Math.floorDiv( @@ -85,9 +86,11 @@ private boolean filterOnBrukertype(String ident, Bruker.Brukertype brukertype) { return true; } - private RsTestgruppe mapGruppe(Testgruppe testgruppe) { + private RsTestgruppe mapGruppe(Testgruppe testgruppe, String brukerId) { - return mapperFacade.map(testgruppe, RsTestgruppe.class); + var context = new MappingContext.Factory().getContext(); + context.setProperty("brukerId", brukerId); + return mapperFacade.map(testgruppe, RsTestgruppe.class, context); } private Flux getPdlPersonIdenter(String ident) { diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategyTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategyTest.java index 742699674c8..b24b18e177e 100644 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategyTest.java +++ b/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestgruppeMappingStrategyTest.java @@ -10,7 +10,6 @@ import no.nav.dolly.domain.resultset.entity.testident.RsTestident; import no.nav.dolly.elastic.BestillingElasticRepository; import no.nav.dolly.mapper.utils.MapperTestUtils; -import no.nav.testnav.libs.servletsecurity.action.GetUserInfo; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -29,19 +28,16 @@ @SpringBootTest class TestgruppeMappingStrategyTest { + private final static String BRUKERID = "123"; @MockBean private BestillingElasticRepository bestillingElasticRepository; - @MockBean private ElasticsearchOperations elasticsearchOperations; - - private final static String BRUKERID = "123"; - private MapperFacade mapper; @BeforeEach public void setUpHappyPath() { - mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy(new GetUserInfo("dummy"))); + mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy()); MockedJwtAuthenticationTokenUtils.setJwtAuthenticationToken(); } diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestidentMappingTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestidentMappingTest.java index 50927b6d33a..30e50f657d5 100644 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestidentMappingTest.java +++ b/apps/dolly-backend/src/test/java/no/nav/dolly/mapper/strategy/TestidentMappingTest.java @@ -7,7 +7,6 @@ import no.nav.dolly.domain.jpa.Testident; import no.nav.dolly.domain.resultset.entity.testident.RsTestident; import no.nav.dolly.mapper.utils.MapperTestUtils; -import no.nav.testnav.libs.servletsecurity.action.GetUserInfo; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -22,7 +21,7 @@ class TestidentMappingTest { @BeforeEach public void setUpHappyPath() { - mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy(new GetUserInfo("dummy"))); + mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy()); } @Test diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/TestgruppeControllerDeleteTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/TestgruppeControllerDeleteTest.java index 427cc6a1e1c..3a80bdca67a 100644 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/TestgruppeControllerDeleteTest.java +++ b/apps/dolly-backend/src/test/java/no/nav/dolly/provider/api/TestgruppeControllerDeleteTest.java @@ -32,7 +32,5 @@ void deleteTestgruppe() .perform(get("/api/v1/gruppe/{id}", testgruppe.getId())) .andExpect(status().isNotFound()); assertThat(super.findTestgruppeById(testgruppe.getId())).isEmpty(); - } - } diff --git a/apps/dolly-backend/src/test/java/no/nav/dolly/service/NavigasjonServiceTest.java b/apps/dolly-backend/src/test/java/no/nav/dolly/service/NavigasjonServiceTest.java index 91c5851c803..3b5a71e268e 100644 --- a/apps/dolly-backend/src/test/java/no/nav/dolly/service/NavigasjonServiceTest.java +++ b/apps/dolly-backend/src/test/java/no/nav/dolly/service/NavigasjonServiceTest.java @@ -83,7 +83,7 @@ void testNavigerTilIdentFound() { when(pdlDataConsumer.getPersoner(any())).thenReturn(Flux.just(fullPersonDTO)); when(personServiceConsumer.getPdlPersoner(any())).thenReturn(Flux.just(PdlPersonBolk.builder().build())); - Mono result = navigasjonService.navigerTilIdent(ident, Bruker.Brukertype.AZURE); + Mono result = navigasjonService.navigerTilIdent(ident, Bruker.builder().brukertype(Bruker.Brukertype.AZURE).build()); StepVerifier.create(result) .expectNext(expected) @@ -118,7 +118,7 @@ void testBankidUserNavigerTilIdentAllowed() { when(pdlDataConsumer.getPersoner(any())).thenReturn(Flux.just(fpAllowed)); when(personServiceConsumer.getPdlPersoner(any())).thenReturn(Flux.just(PdlPersonBolk.builder().build())); - Mono result = navigasjonService.navigerTilIdent(identAllowed, Bruker.Brukertype.BANKID); + Mono result = navigasjonService.navigerTilIdent(identAllowed, Bruker.builder().brukertype(Bruker.Brukertype.BANKID).build()); StepVerifier.create(result) .expectNext(expected) @@ -148,7 +148,7 @@ void testBankidUserNavigerTilIdentRefused() { when(pdlDataConsumer.getPersoner(any())).thenReturn(Flux.just(fpRefused)); when(personServiceConsumer.getPdlPersoner(any())).thenReturn(Flux.just(PdlPersonBolk.builder().build())); - Mono result = navigasjonService.navigerTilIdent(identRefused, Bruker.Brukertype.BANKID); + Mono result = navigasjonService.navigerTilIdent(identRefused, Bruker.builder().brukertype(Bruker.Brukertype.BANKID).build()); StepVerifier.create(result) .expectError(NotFoundException.class) @@ -163,7 +163,7 @@ void testNavigerTilIdentNotFound() { when(pdlDataConsumer.getPersoner(any())).thenReturn(Flux.empty()); when(personServiceConsumer.getPdlPersoner(any())).thenReturn(Flux.empty()); - Mono result = navigasjonService.navigerTilIdent(ident, Bruker.Brukertype.AZURE); + Mono result = navigasjonService.navigerTilIdent(ident, Bruker.builder().brukertype(Bruker.Brukertype.AZURE).build()); StepVerifier.create(result) .expectError(NotFoundException.class) diff --git a/libs/servlet-security/src/main/java/no/nav/testnav/libs/servletsecurity/action/GetUserInfo.java b/libs/servlet-security/src/main/java/no/nav/testnav/libs/servletsecurity/action/GetUserInfo.java index 63b43da1cc2..52a7b4cdcff 100644 --- a/libs/servlet-security/src/main/java/no/nav/testnav/libs/servletsecurity/action/GetUserInfo.java +++ b/libs/servlet-security/src/main/java/no/nav/testnav/libs/servletsecurity/action/GetUserInfo.java @@ -13,9 +13,6 @@ import java.util.Optional; import java.util.concurrent.Callable; -import static java.util.Objects.isNull; -import static java.util.Objects.nonNull; - @Slf4j @Component public class GetUserInfo implements Callable> { @@ -28,16 +25,9 @@ public GetUserInfo(@Value("${JWT_SECRET:#{null}}") String secret) { @Override public Optional call() { - var req = RequestContextHolder.getRequestAttributes(); - if (nonNull(req)) { - log.info("RequestAttributes er av type: {}", req.getClass().getName()); - } var requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (isNull(requestAttributes)) { - log.warn("Fant ikke request attributes i context."); - return Optional.empty(); - } + var request = requestAttributes.getRequest(); log.trace("Prøver å hente JWT fra request..."); return Optional.ofNullable(request.getHeader(UserConstant.USER_HEADER_JWT)).map(token -> {