Skip to content

Commit

Permalink
Bugfix/dolly idporten issues (#3593)
Browse files Browse the repository at this point in the history
* Fikset error ved avhuking av mal i idporten
* Fjernet fysiskDokument fra maler og lagt til test for dette
* Endret litt på playwrigt oppsett
* Endret kodeverk-service til å støtte token fra idporten og route denne korrekt videre til kodeverk-api
* Tillater kun navigering til tenoridenter for bankid brukere og skrevet tester for NavigasjonService
* Fikset navigering i idporten og gamle identer fra før prodlast og tester rundt denne funksjonaliteten
  • Loading branch information
stigus authored Aug 27, 2024
1 parent 4ec20f4 commit dd4a87b
Show file tree
Hide file tree
Showing 24 changed files with 456 additions and 160 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ public static void main(String[] args) {

SpringApplication.run(DollyBackendApplicationStarter.class, args);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,49 +9,29 @@
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.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
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;

private static String getBrukerId(Bruker bruker) {

if (isNotBlank(bruker.getBrukerId())) {
return bruker.getBrukerId();
} else {
return nonNull(bruker.getEidAv()) ? bruker.getEidAv().getBrukerId() : bruker.getNavIdent();
}
}

@Override
public void register(MapperFactory factory) {
factory.classMap(Testgruppe.class, RsTestgruppe.class)
.customize(new CustomMapper<>() {
@Override
public void mapAtoB(Testgruppe testgruppe, RsTestgruppe rsTestgruppe, MappingContext context) {

var securityContext = (SecurityContext) context.getProperty("securityContext");
if (nonNull(securityContext)) {
SecurityContextHolder.setContext(securityContext);
}

rsTestgruppe.setAntallIdenter(testgruppe.getTestidenter().size());
rsTestgruppe.setAntallIBruk((int) testgruppe.getTestidenter().stream()
.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 All @@ -62,4 +42,13 @@ public void mapAtoB(Testgruppe testgruppe, RsTestgruppe rsTestgruppe, MappingCon
.byDefault()
.register();
}

private static String getBrukerId(Bruker bruker) {

if (isNotBlank(bruker.getBrukerId())) {
return bruker.getBrukerId();
} else {
return nonNull(bruker.getEidAv()) ? bruker.getEidAv().getBrukerId() : bruker.getNavIdent();
}
}
}
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 @@ -5,9 +5,9 @@
import ma.glasnost.orika.MapperFacade;
import no.nav.dolly.bestilling.service.GjenopprettIdentService;
import no.nav.dolly.bestilling.service.OppdaterPersonService;
import no.nav.testnav.libs.dto.dolly.v1.FinnesDTO;
import no.nav.dolly.domain.dto.TestidentDTO;
import no.nav.dolly.domain.jpa.Bestilling;
import no.nav.dolly.domain.jpa.Bruker;
import no.nav.dolly.domain.resultset.RsDollyUpdateRequest;
import no.nav.dolly.domain.resultset.RsIdentBeskrivelse;
import no.nav.dolly.domain.resultset.entity.bestilling.RsBestillingStatus;
Expand All @@ -16,11 +16,14 @@
import no.nav.dolly.domain.testperson.IdentAttributesResponse;
import no.nav.dolly.exceptions.NotFoundException;
import no.nav.dolly.service.BestillingService;
import no.nav.dolly.service.BrukerService;
import no.nav.dolly.service.IdentService;
import no.nav.dolly.service.NavigasjonService;
import no.nav.dolly.service.OrdreService;
import no.nav.dolly.service.PersonService;
import no.nav.dolly.service.TransaksjonMappingService;
import no.nav.testnav.libs.dto.dolly.v1.FinnesDTO;
import no.nav.testnav.libs.servletsecurity.action.GetUserInfo;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.http.HttpStatus;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -42,6 +45,7 @@
import static java.util.Objects.nonNull;
import static no.nav.dolly.config.CachingConfig.CACHE_BESTILLING;
import static no.nav.dolly.config.CachingConfig.CACHE_GRUPPE;
import static no.nav.dolly.util.CurrentAuthentication.getUserId;

@RestController
@RequiredArgsConstructor
Expand All @@ -54,9 +58,11 @@ public class TestpersonController {
private final OppdaterPersonService oppdaterPersonService;
private final MapperFacade mapperFacade;
private final IdentService identService;
private final BrukerService brukerService;
private final PersonService personService;
private final NavigasjonService navigasjonService;
private final OrdreService ordreService;
private final GetUserInfo getUserInfo;

@Operation(description = "Legge til egenskaper på person/endre person i TPS og øvrige systemer")
@PutMapping("/{ident}/leggtilpaaperson")
Expand Down Expand Up @@ -133,7 +139,8 @@ public void deleteTestident(@PathVariable String ident) {
@GetMapping("/naviger/{ident}")
public Mono<RsWhereAmI> navigerTilTestident(@PathVariable String ident) {

return navigasjonService.navigerTilIdent(ident);
Bruker bruker = brukerService.fetchBruker(getUserId(getUserInfo));
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 @@ -30,7 +30,6 @@
import no.nav.dolly.repository.TestgruppeRepository;
import no.nav.testnav.libs.servletsecurity.action.GetUserInfo;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.StaleStateException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
Expand All @@ -52,6 +51,7 @@
import static java.lang.String.join;
import static java.time.LocalDateTime.now;
import static java.util.Collections.emptySet;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
import static java.util.stream.Collectors.toSet;
import static no.nav.dolly.util.CurrentAuthentication.getUserId;
Expand Down Expand Up @@ -140,7 +140,7 @@ public Page<Bestilling> getBestillingerFromGruppeIdPaginert(Long gruppeId, Integ
}

@Transactional
@Retryable(StaleStateException.class)
@Retryable
public Bestilling cancelBestilling(Long bestillingId) {

var bestillingKontroll = bestillingKontrollRepository.findByBestillingId(bestillingId);
Expand Down Expand Up @@ -214,19 +214,6 @@ public Bestilling saveBestilling(RsDollyUpdateRequest request, String ident) {
return saveBestillingToDB(bestilling);
}

private String filterAvailable(Collection<String> environments) {

var miljoer = miljoerConsumer.getMiljoer().block();
return nonNull(environments) ? environments.stream()
.filter(miljoer::contains)
.collect(Collectors.joining(",")) : null;
}

private String filterAvailable(String miljoer) {

return isNotBlank(miljoer) ? filterAvailable(Arrays.asList(miljoer.split(","))) : null;
}

@Transactional
public Bestilling saveBestilling(Long gruppeId, RsDollyBestilling request, Integer antall,
List<String> opprettFraIdenter, Boolean navSyntetiskIdent, String beskrivelse) {
Expand Down Expand Up @@ -273,7 +260,6 @@ public Bestilling createBestillingForGjenopprettFraBestilling(Long bestillingId,
.build());
}


@Transactional
// Egen transaksjon på denne da bestillingId hentes opp igjen fra database i samme kallet
public Bestilling createBestillingForGjenopprettFraIdent(String ident, Testgruppe testgruppe, List<String> miljoer) {
Expand Down Expand Up @@ -426,6 +412,28 @@ public String getBestKriterier(RsDollyBestilling request) {
.build());
}

public List<BestillingProgress> getProgressByBestillingId(Long bestillingId) {

return bestillingProgressRepository.findByBestilling_Id(bestillingId);
}

private String filterAvailable(Collection<String> environments) {

var miljoer = miljoerConsumer.getMiljoer().block();

if (isNull(miljoer)) {
return null;
}
return environments.stream()
.filter(miljoer::contains)
.collect(Collectors.joining(","));
}

private String filterAvailable(String miljoer) {

return isNotBlank(miljoer) ? filterAvailable(Arrays.asList(miljoer.split(","))) : null;
}

private String wrapSearchString(String searchString) {
return isNotBlank(searchString) ? "%%%s%%".formatted(searchString) : "";
}
Expand Down Expand Up @@ -454,9 +462,4 @@ private static void fixAaregAbstractClassProblem(List<RsAareg> aaregdata) {
}
});
}

public List<BestillingProgress> getProgressByBestillingId(Long bestillingId) {

return bestillingProgressRepository.findByBestilling_Id(bestillingId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import ma.glasnost.orika.MapperFacade;
import no.nav.dolly.domain.jpa.Bestilling;
import no.nav.dolly.domain.jpa.BestillingMal;
Expand Down Expand Up @@ -38,6 +39,7 @@
import static no.nav.dolly.util.CurrentAuthentication.getUserId;

@Service
@Slf4j
@RequiredArgsConstructor
public class MalBestillingService {

Expand Down Expand Up @@ -89,6 +91,7 @@ public RsMalBestillingWrapper getMalBestillinger() {
.toList());

return malBestillingWrapper;

}

@Transactional(readOnly = true)
Expand Down Expand Up @@ -132,7 +135,7 @@ public void saveBestillingMal(Bestilling bestilling, String malNavn, Bruker bruk
if (eksisterende.isEmpty()) {
bestillingMalRepository.save(BestillingMal.builder()

.bestKriterier(bestilling.getBestKriterier())
.bestKriterier(formatBestillingKriterier(bestilling.getBestKriterier()))
.bruker(bruker)
.malNavn(malNavn)
.miljoer(bestilling.getMiljoer())
Expand All @@ -159,7 +162,7 @@ public RsMalBestilling saveBestillingMalFromBestillingId(Long bestillingId, Stri
var maler = bestillingMalRepository.findByBrukerAndMalNavn(bruker, malNavn);
if (maler.isEmpty()) {
malbestilling = bestillingMalRepository.save(BestillingMal.builder()
.bestKriterier(bestilling.getBestKriterier())
.bestKriterier(formatBestillingKriterier(bestilling.getBestKriterier()))
.bruker(bruker)
.malNavn(malNavn)
.miljoer(bestilling.getMiljoer())
Expand Down Expand Up @@ -270,6 +273,10 @@ private RsDollyUtvidetBestilling fromJson(String json) {
}
}

private String formatBestillingKriterier(String bestillingKriterier) {
return bestillingKriterier.replaceAll("fysiskDokument[^,]*+,", "");
}

private static Set<String> toSet(String miljoer) {

return StringUtils.isNotBlank(miljoer) ?
Expand Down
Loading

0 comments on commit dd4a87b

Please sign in to comment.