Skip to content

Commit

Permalink
Fikset navigering og tester rundt denne funksjonaliteten
Browse files Browse the repository at this point in the history
#deploy-dolly-backend
  • Loading branch information
stigus committed Aug 26, 2024
1 parent 8f20c25 commit 5bd42d8
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,16 @@
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;

@Component
@RequiredArgsConstructor
public class TestgruppeMappingStrategy implements MappingStrategy {

private final GetUserInfo getUserInfo;

@Override
public void register(MapperFactory factory) {
factory.classMap(Testgruppe.class, RsTestgruppe.class)
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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")
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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,
Expand All @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public void deleteTestident(@PathVariable String ident) {
public Mono<RsWhereAmI> 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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -45,16 +46,16 @@ public class NavigasjonService {
private final PdlDataConsumer pdlDataConsumer;

@Transactional(readOnly = true)
public Mono<RsWhereAmI> navigerTilIdent(String ident, Bruker.Brukertype brukertype) {
public Mono<RsWhereAmI> 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(
Expand Down Expand Up @@ -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<String> getPdlPersonIdenter(String ident) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -22,7 +21,7 @@ class TestidentMappingTest {

@BeforeEach
public void setUpHappyPath() {
mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy(new GetUserInfo("dummy")));
mapper = MapperTestUtils.createMapperFacadeForMappingStrategy(new TestgruppeMappingStrategy());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,5 @@ void deleteTestgruppe()
.perform(get("/api/v1/gruppe/{id}", testgruppe.getId()))
.andExpect(status().isNotFound());
assertThat(super.findTestgruppeById(testgruppe.getId())).isEmpty();

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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<RsWhereAmI> result = navigasjonService.navigerTilIdent(ident, Bruker.Brukertype.AZURE);
Mono<RsWhereAmI> result = navigasjonService.navigerTilIdent(ident, Bruker.builder().brukertype(Bruker.Brukertype.AZURE).build());

StepVerifier.create(result)
.expectNext(expected)
Expand Down Expand Up @@ -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<RsWhereAmI> result = navigasjonService.navigerTilIdent(identAllowed, Bruker.Brukertype.BANKID);
Mono<RsWhereAmI> result = navigasjonService.navigerTilIdent(identAllowed, Bruker.builder().brukertype(Bruker.Brukertype.BANKID).build());

StepVerifier.create(result)
.expectNext(expected)
Expand Down Expand Up @@ -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<RsWhereAmI> result = navigasjonService.navigerTilIdent(identRefused, Bruker.Brukertype.BANKID);
Mono<RsWhereAmI> result = navigasjonService.navigerTilIdent(identRefused, Bruker.builder().brukertype(Bruker.Brukertype.BANKID).build());

StepVerifier.create(result)
.expectError(NotFoundException.class)
Expand All @@ -163,7 +163,7 @@ void testNavigerTilIdentNotFound() {
when(pdlDataConsumer.getPersoner(any())).thenReturn(Flux.empty());
when(personServiceConsumer.getPdlPersoner(any())).thenReturn(Flux.empty());

Mono<RsWhereAmI> result = navigasjonService.navigerTilIdent(ident, Bruker.Brukertype.AZURE);
Mono<RsWhereAmI> result = navigasjonService.navigerTilIdent(ident, Bruker.builder().brukertype(Bruker.Brukertype.AZURE).build());

StepVerifier.create(result)
.expectError(NotFoundException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Optional<UserInfo>> {
Expand All @@ -28,16 +25,9 @@ public GetUserInfo(@Value("${JWT_SECRET:#{null}}") String secret) {

@Override
public Optional<UserInfo> 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 -> {
Expand Down

0 comments on commit 5bd42d8

Please sign in to comment.