Skip to content

Commit 8ee4e82

Browse files
authored
Validerer at mottattdato ikke kan være i fremtiden. Flytter validering av versjon av mottattdato inn i en felles valideringsmetode for søknad. (#282)
1 parent 7d6f856 commit 8ee4e82

File tree

5 files changed

+44
-23
lines changed

5 files changed

+44
-23
lines changed

soknad/src/main/java/no/nav/k9/søknad/SøknadValidator.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package no.nav.k9.søknad;
22

3+
import java.time.ZonedDateTime;
34
import java.util.List;
45

56
import no.nav.k9.søknad.felles.Feil;
7+
import no.nav.k9.søknad.felles.Versjon;
68

79
public abstract class SøknadValidator<S> {
810
protected static final String PÅKREVD = "påkrevd";
@@ -16,4 +18,30 @@ public void forsikreValidert(S søknad) {
1618
throw new ValideringsFeil(feil);
1719
}
1820
}
21+
22+
23+
/**
24+
* Felles validering av felter på søknad. Må kalles eksplisitt på av
25+
* subklassene til denne klassen hvis den skal brukes,
26+
*
27+
* @param søknad Søknaden som valideres.
28+
* @param feil En liste der eventuelt feil skal legges til.
29+
*/
30+
public final void validerFelterPåSøknad(Søknad søknad, List<Feil> feil) {
31+
validerMottattDato(søknad, feil);
32+
validerVersjon(søknad.getVersjon(), feil);
33+
}
34+
35+
private void validerMottattDato(Søknad søknad, List<Feil> feil) {
36+
final int maximumClockSkewSeconds = 10;
37+
if (søknad.getMottattDato().minusSeconds(maximumClockSkewSeconds).isAfter(ZonedDateTime.now())) {
38+
feil.add(new Feil("mottattDato", "fremtidigDatoIkkeTillat", "Mottattdato kan ikke være satt til fremtiden."));
39+
}
40+
}
41+
42+
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
43+
if (versjon != null && !versjon.erGyldig()) {
44+
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
45+
}
46+
}
1947
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/omsorgspenger/v1/OmsorgspengerUtbetalingSøknadValidator.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@ public class OmsorgspengerUtbetalingSøknadValidator extends SøknadValidator<S
1919
public OmsorgspengerUtbetalingSøknadValidator() {
2020
}
2121

22-
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
23-
if (versjon != null && !versjon.erGyldig()) {
24-
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
25-
}
26-
}
27-
28-
2922
@Override
3023
public List<Feil> valider(Søknad søknad) {
3124
var validate = VALIDATOR_FACTORY.getValidator().validate(søknad);
@@ -34,7 +27,7 @@ public List<Feil> valider(Søknad søknad) {
3427
.map(Feil::toFeil)
3528
.collect(Collectors.toList());
3629

37-
validerVersjon(søknad.getVersjon(), feil);
30+
validerFelterPåSøknad(søknad, feil);
3831
feil.addAll(new OmsorgspengerUtbetalingValidator().valider(søknad.getYtelse()));
3932

4033
return feil;

soknad/src/main/java/no/nav/k9/søknad/ytelse/pls/v1/PleiepengerLivetsSluttfaseSøknadValidator.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public List<Feil> valider(Søknad søknad, List<Periode> gyldigeEndringsperioder
3939
.collect(Collectors.toList());
4040

4141
validerInneholderBegrunnelseDersomTrekkAvPerioder(søknad, feil);
42-
validerVersjon(søknad.getVersjon(), feil);
42+
validerFelterPåSøknad(søknad, feil);
4343
validerPleietrengendeIkkeErSøker(søknad.getSøker(), søknad.getBerørtePersoner(), feil);
4444
validerPleietrengendeIkkeErSøker(søknad.getSøker(), List.of(((PleipengerLivetsSluttfase) søknad.getYtelse()).getPleietrengende()), feil);
4545
feil.addAll(new PleiepengerLivetsSluttfaseYtelseValidator().valider(søknad.getYtelse(), gyldigeEndringsperioder));
@@ -56,12 +56,6 @@ private static void validerInneholderBegrunnelseDersomTrekkAvPerioder(Søknad s
5656
}
5757
}
5858

59-
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
60-
if (versjon != null && !versjon.erGyldig()) {
61-
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
62-
}
63-
}
64-
6559
private static void validerPleietrengendeIkkeErSøker(Søker søker, List<Person> pleietrengende, List<Feil> feil) {
6660
if (søker == null || pleietrengende == null || pleietrengende.isEmpty()) {
6761
return;

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/PleiepengerSyktBarnSøknadValidator.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package no.nav.k9.søknad.ytelse.psb.v1;
22

3+
import java.time.ZonedDateTime;
4+
import java.time.chrono.ChronoZonedDateTime;
35
import java.util.List;
46
import java.util.stream.Collectors;
57

@@ -23,12 +25,6 @@ public class PleiepengerSyktBarnSøknadValidator extends SøknadValidator<Søkna
2325
public PleiepengerSyktBarnSøknadValidator() {
2426
}
2527

26-
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
27-
if (versjon != null && !versjon.erGyldig()) {
28-
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
29-
}
30-
}
31-
3228
private static void validerBarnIkkeErSøker(Søker søker, List<Person> barnList, List<Feil> feil) {
3329
if (søker == null || barnList == null || barnList.isEmpty()) {
3430
return;
@@ -49,11 +45,11 @@ public List<Feil> valider(Søknad søknad, List<Periode> gyldigeEndringsperioder
4945
List<Feil> feil = validate.stream()
5046
.map(Feil::toFeil)
5147
.collect(Collectors.toList());
48+
49+
validerFelterPåSøknad(søknad, feil);
5250

5351
PleiepengerSyktBarn ytelse = (PleiepengerSyktBarn) søknad.getYtelse();
5452
validerInneholderBegrunnelseForInnsending(søknad, ytelse, feil);
55-
56-
validerVersjon(søknad.getVersjon(), feil);
5753
validerBarnIkkeErSøker(søknad.getSøker(), søknad.getBerørtePersoner(), feil);
5854
feil.addAll(new PleiepengerSyktBarnYtelseValidator().validerMedGyldigEndringsperodeHvisDenFinnes(søknad.getYtelse(), gyldigeEndringsperioder));
5955

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/v1/SøknadTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import java.time.Duration;
1414
import java.time.LocalDate;
15+
import java.time.ZonedDateTime;
1516
import java.util.List;
1617

1718
import org.junit.jupiter.api.Test;
@@ -45,6 +46,15 @@ class SøknadTest {
4546
public void minimumSøknadHarIngenValideringsFeil() {
4647
verifyIngenFeil(MINIMUM_SØKNAD);
4748
}
49+
50+
@Test
51+
public void mottattDatoKanIkkeVæreIFremtiden() {
52+
final Periode søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
53+
final Søknad søknad = SøknadEksempel.minimumSøknad(søknadsperiode);
54+
verifyIngenFeil(søknad);
55+
søknad.setMottattDato(ZonedDateTime.now().plusSeconds(60));
56+
verifyHarFeil(søknad);
57+
}
4858

4959
@Test
5060
public void barnKanIkkeVæreSøker() {

0 commit comments

Comments
 (0)