Skip to content

Commit 66d40ab

Browse files
committedAug 6, 2024··
La til info for bostedsadresse i eu/eøs
1 parent 9423699 commit 66d40ab

File tree

14 files changed

+228
-51
lines changed

14 files changed

+228
-51
lines changed
 

‎apps/api-start-stopp-perioder/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/routes/StartStoppResultatMapping.kt

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ fun opplysningTilApiOpplysning(opplysning: Opplysning): ApiOpplysning =
7070
DomeneOpplysning.UkjentForenkletFregStatus -> ApiOpplysning.UKJENT_FORENKLET_FREG_STATUS
7171
DomeneOpplysning.UkjentStatusForOppholdstillatelse -> ApiOpplysning.UKJENT_STATUS_FOR_OPPHOLDSTILLATELSE
7272
DomeneOpplysning.ErNorskStatsborger -> ApiOpplysning.ER_NORSK_STATSBORGER
73+
DomeneOpplysning.HarRegistrertAdresseIEuEoes -> ApiOpplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES
7374
}
7475
is AuthOpplysning -> when (opplysning) {
7576
AuthOpplysning.IkkeSammeSomInnloggerBruker -> ApiOpplysning.IKKE_SAMME_SOM_INNLOGGER_BRUKER

‎apps/api-start-stopp-perioder/src/main/resources/openapi/startstopp.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ components:
224224
- "ER_GBR_STATSBORGER"
225225
- "ER_EU_EOES_STATSBORGER"
226226
- "ER_NORSK_STATSBORGER"
227+
- "HAR_REGISTRERT_ADRESSE_I_EU_EOES"
227228
- "UKJENT_OPPLYSNING"
228229
ApiRegelId:
229230
type: "string"

‎apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/AnsattRegistrererIkkeEuEoesBrukerIkkeBosattMedForhaandgodkjenning.kt

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ data object AnsattRegistrererIkkeEuEoesBrukerIkkeBosattMedForhaandgodkjenning: T
6666
opplysninger = setOf(
6767
Opplysning.ER_OVER_18_AAR,
6868
Opplysning.HAR_NORSK_ADRESSE,
69+
Opplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
6970
Opplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
7071
Opplysning.ANSATT_TILGANG,
7172
Opplysning.HAR_GYLDIG_OPPHOLDSTILLATELSE,

‎apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/AnsattRegistrererIkkeEuEoesBrukerIkkeBosattUtenForhaandgodkjenning.kt

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ data object AnsattRegistrererIkkeEuEoesBrukerIkkeBosattUtenForhaandgodkjenning:
4949
detaljer = listOf(
5050
ApiOpplysning.ER_OVER_18_AAR,
5151
ApiOpplysning.HAR_NORSK_ADRESSE,
52+
ApiOpplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
5253
ApiOpplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
5354
ApiOpplysning.ANSATT_TILGANG,
5455
ApiOpplysning.HAR_GYLDIG_OPPHOLDSTILLATELSE,
@@ -80,6 +81,7 @@ data object AnsattRegistrererIkkeEuEoesBrukerIkkeBosattUtenForhaandgodkjenning:
8081
opplysninger = setOf(
8182
Opplysning.ER_OVER_18_AAR,
8283
Opplysning.HAR_NORSK_ADRESSE,
84+
Opplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
8385
Opplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
8486
Opplysning.ANSATT_TILGANG,
8587
Opplysning.HAR_GYLDIG_OPPHOLDSTILLATELSE,

‎apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/IkkeEuEoesBrukerIkkeBosatt.kt

+12-11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Opplysning
1313
import no.nav.paw.kafkakeygenerator.client.KafkaKeysClient
1414
import no.nav.paw.pdl.graphql.generated.hentperson.Foedsel
1515
import no.nav.paw.pdl.graphql.generated.hentperson.Person
16+
import no.nav.paw.pdl.graphql.generated.hentperson.UtenlandskAdresse
1617
import no.nav.paw.pdl.graphql.generated.hentperson.Vegadresse
1718
import org.apache.kafka.clients.producer.ProducerRecord
1819
import java.time.Instant
@@ -23,14 +24,14 @@ data object IkkeEuEoesBrukerIkkeBosatt: TestCase {
2324
override val id = "12345678919"
2425
override val person = Person(
2526
foedsel = Foedsel("2000-03-04", 2000).list(),
26-
statsborgerskap = "AFG".statsborgerskap(),
27-
opphold = ("2018-01-01" to null).opphold(),
27+
statsborgerskap = "USA".statsborgerskap(),
28+
opphold = ("2018-01-01" to "2018-02-01").opphold(),
2829
folkeregisterpersonstatus = dNummer.folkeregisterpersonstatus(),
2930
bostedsadresse = bostedsadresse(
30-
vegadresse = Vegadresse("1201")
31+
utenlandskAdresse = UtenlandskAdresse(landkode = "USA")
3132
),
32-
innflyttingTilNorge = "2018-01-02T13:23:12".innflytting(),
33-
utflyttingFraNorge = "2017-01-02".utflytting()
33+
innflyttingTilNorge = emptyList(),
34+
utflyttingFraNorge = emptyList()
3435
)
3536

3637
override val configure: TestCaseBuilder.() -> Unit = {
@@ -46,11 +47,11 @@ data object IkkeEuEoesBrukerIkkeBosatt: TestCase {
4647
regel = ApiRegelId.IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN,
4748
detaljer = listOf(
4849
ApiOpplysning.ER_OVER_18_AAR,
49-
ApiOpplysning.HAR_NORSK_ADRESSE,
50-
ApiOpplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
50+
ApiOpplysning.HAR_UTENLANDSK_ADRESSE,
51+
ApiOpplysning.INGEN_FLYTTE_INFORMASJON,
5152
ApiOpplysning.IKKE_ANSATT,
5253
ApiOpplysning.SAMME_SOM_INNLOGGET_BRUKER,
53-
ApiOpplysning.HAR_GYLDIG_OPPHOLDSTILLATELSE,
54+
ApiOpplysning.OPPHOLDSTILATELSE_UTGAATT,
5455
ApiOpplysning.DNUMMER
5556
)
5657
)
@@ -77,11 +78,11 @@ data object IkkeEuEoesBrukerIkkeBosatt: TestCase {
7778
),
7879
opplysninger = setOf(
7980
Opplysning.ER_OVER_18_AAR,
80-
Opplysning.HAR_NORSK_ADRESSE,
81-
Opplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
81+
Opplysning.HAR_UTENLANDSK_ADRESSE,
82+
Opplysning.INGEN_FLYTTE_INFORMASJON,
8283
Opplysning.IKKE_ANSATT,
8384
Opplysning.SAMME_SOM_INNLOGGET_BRUKER,
84-
Opplysning.HAR_GYLDIG_OPPHOLDSTILLATELSE,
85+
Opplysning.OPPHOLDSTILATELSE_UTGAATT,
8586
Opplysning.DNUMMER
8687
)
8788
)

‎apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskBrukerBosattINorge.kt

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ data object NorskBrukerBosattINorge: TestCase {
6161
Opplysning.BOSATT_ETTER_FREG_LOVEN,
6262
Opplysning.ER_EU_EOES_STATSBORGER,
6363
Opplysning.HAR_NORSK_ADRESSE,
64+
Opplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
6465
Opplysning.SISTE_FLYTTING_VAR_INN_TIL_NORGE,
6566
Opplysning.IKKE_ANSATT,
6667
Opplysning.SAMME_SOM_INNLOGGET_BRUKER,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package no.nav.paw.arbeidssokerregisteret.testdata
2+
3+
import io.kotest.common.runBlocking
4+
import io.ktor.http.*
5+
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.AarsakTilAvvisning
6+
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.ApiRegelId
7+
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Feil
8+
import no.nav.paw.arbeidssokerregisteret.*
9+
import no.nav.paw.arbeidssokerregisteret.intern.v1.Avvist
10+
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Bruker
11+
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.BrukerType
12+
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Opplysning
13+
import no.nav.paw.kafkakeygenerator.client.KafkaKeysClient
14+
import no.nav.paw.pdl.graphql.generated.hentperson.Foedsel
15+
import no.nav.paw.pdl.graphql.generated.hentperson.Person
16+
import no.nav.paw.pdl.graphql.generated.hentperson.UtenlandskAdresse
17+
import org.apache.kafka.clients.producer.ProducerRecord
18+
import java.time.Instant
19+
import java.util.*
20+
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Opplysning as ApiOpplysning
21+
22+
data object NorskBrukerBosattISverige: TestCase {
23+
override val id = "12345678909"
24+
override val person = Person(
25+
foedsel = Foedsel("2000-03-04", 2000).list(),
26+
statsborgerskap = "NOR".statsborgerskap(),
27+
opphold = emptyList(),
28+
folkeregisterpersonstatus = ikkeBosatt.folkeregisterpersonstatus(),
29+
bostedsadresse = bostedsadresse(
30+
utenlandskAdresse = UtenlandskAdresse(landkode = "SWE")
31+
),
32+
innflyttingTilNorge = emptyList(),
33+
utflyttingFraNorge = "2017-01-02".utflytting()
34+
)
35+
36+
override val configure: TestCaseBuilder.() -> Unit = {
37+
authToken = mockOAuth2Server.personToken(id)
38+
}
39+
40+
override val producesHttpResponse: HttpStatusCode = HttpStatusCode.Forbidden
41+
override val producesError: Feil = Feil(
42+
melding = "any",
43+
feilKode = Feil.FeilKode.AVVIST,
44+
aarsakTilAvvisning = AarsakTilAvvisning(
45+
beskrivelse = "any",
46+
regel = ApiRegelId.IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN,
47+
detaljer = listOf(
48+
ApiOpplysning.ER_OVER_18_AAR,
49+
ApiOpplysning.HAR_UTENLANDSK_ADRESSE,
50+
ApiOpplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
51+
ApiOpplysning.SISTE_FLYTTING_VAR_UT_AV_NORGE,
52+
ApiOpplysning.ER_NORSK_STATSBORGER,
53+
ApiOpplysning.ER_EU_EOES_STATSBORGER,
54+
ApiOpplysning.IKKE_ANSATT,
55+
ApiOpplysning.SAMME_SOM_INNLOGGET_BRUKER,
56+
ApiOpplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
57+
ApiOpplysning.IKKE_BOSATT
58+
)
59+
)
60+
)
61+
62+
override fun producesRecord(
63+
kafkaKeysClient: KafkaKeysClient
64+
) = ProducerRecord(
65+
"any",
66+
runBlocking { kafkaKeysClient.getIdAndKey(id).key },
67+
Avvist(
68+
hendelseId = UUID.randomUUID(),
69+
id = runBlocking { kafkaKeysClient.getIdAndKey(id).id },
70+
identitetsnummer = id,
71+
metadata = no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Metadata(
72+
tidspunkt = Instant.now(),
73+
kilde = "paw-arbeidssokerregisteret-api-start-stopp-perioder",
74+
utfoertAv = Bruker(
75+
id = id,
76+
type = BrukerType.SLUTTBRUKER
77+
),
78+
aarsak = "any",
79+
tidspunktFraKilde = null
80+
),
81+
opplysninger = setOf(
82+
Opplysning.ER_OVER_18_AAR,
83+
Opplysning.IKKE_BOSATT,
84+
Opplysning.ER_EU_EOES_STATSBORGER,
85+
Opplysning.HAR_UTENLANDSK_ADRESSE,
86+
Opplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
87+
Opplysning.SISTE_FLYTTING_VAR_UT_AV_NORGE,
88+
Opplysning.IKKE_ANSATT,
89+
Opplysning.SAMME_SOM_INNLOGGET_BRUKER,
90+
Opplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
91+
Opplysning.ER_NORSK_STATSBORGER
92+
)
93+
)
94+
)
95+
}

‎domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelExtensions.kt

+1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,5 @@ fun domeneOpplysningTilHendelseOpplysning(opplysning: DomeneOpplysning): Hendels
5555
DomeneOpplysning.UkjentForenkletFregStatus -> HendelseOpplysning.UKJENT_FORENKLET_FREG_STATUS
5656
DomeneOpplysning.UkjentStatusForOppholdstillatelse -> HendelseOpplysning.UKJENT_STATUS_FOR_OPPHOLDSTILLATELSE
5757
DomeneOpplysning.ErNorskStatsborger -> HendelseOpplysning.ER_NORSK_STATSBORGER
58+
DomeneOpplysning.HarRegistrertAdresseIEuEoes -> HendelseOpplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES
5859
}

‎domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/opplysninger/AddresseOpplysning.kt

+11-7
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ package no.nav.paw.arbeidssokerregisteret.application.opplysninger
33
import no.nav.paw.arbeidssokerregisteret.application.opplysninger.DomeneOpplysning.*
44
import no.nav.paw.pdl.graphql.generated.hentperson.Bostedsadresse
55

6-
fun adreseOpplysning(adresse: Bostedsadresse?): Opplysning {
6+
fun adreseOpplysning(adresse: Bostedsadresse?): Set<Opplysning> {
77
return when {
8-
adresse == null -> IngenAdresseFunnet
9-
adresse.vegadresse?.kommunenummer != null -> HarNorskAdresse
10-
adresse.matrikkeladresse?.kommunenummer != null -> HarNorskAdresse
11-
adresse.ukjentBosted?.bostedskommune != null -> HarNorskAdresse
12-
adresse.utenlandskAdresse != null -> HarUtenlandskAdresse
13-
else -> IngenAdresseFunnet
8+
adresse == null -> setOf(IngenAdresseFunnet)
9+
adresse.vegadresse?.kommunenummer != null -> setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
10+
adresse.matrikkeladresse?.kommunenummer != null -> setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
11+
adresse.ukjentBosted?.bostedskommune != null -> setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
12+
adresse.utenlandskAdresse != null -> if (adresse.utenlandskAdresse!!.landkode in eea) {
13+
setOf(HarUtenlandskAdresse, HarRegistrertAdresseIEuEoes)
14+
} else {
15+
setOf(HarUtenlandskAdresse)
16+
}
17+
else -> setOf(IngenAdresseFunnet)
1418
}
1519
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package no.nav.paw.arbeidssokerregisteret.application.opplysninger
2+
3+
val eea = setOf(
4+
"BEL",
5+
"BGR",
6+
"DNK",
7+
"EST",
8+
"FIN",
9+
"FRA",
10+
"GRC",
11+
"IRL",
12+
"ISL",
13+
"ITA",
14+
"HRV",
15+
"CYP",
16+
"LVA",
17+
"LIE",
18+
"LTU",
19+
"LUX",
20+
"MLT",
21+
"NLD",
22+
"NOR",
23+
"POL",
24+
"PRT",
25+
"ROU",
26+
"SVK",
27+
"SVN",
28+
"ESP",
29+
"SWE",
30+
"CZE",
31+
"DEU",
32+
"HUN",
33+
"AUT",
34+
"CHE"
35+
).map { it.uppercase() }

‎domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/opplysninger/Opplysninger.kt

+5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ sealed interface DomeneOpplysning: Opplysning {
8787
override val beskrivelse = "Personen start/stopp av periode utføres på har utenlandsk adresse"
8888
}
8989

90+
data object HarRegistrertAdresseIEuEoes: DomeneOpplysning, Effect.Positive {
91+
override val id = "HAR_REGISTRERT_ADRESSE_I_EU_EOES"
92+
override val beskrivelse = "Personen start/stopp av periode utføres på har en registrert adresse i EØS/EU"
93+
}
94+
9095
data object IngenAdresseFunnet : DomeneOpplysning, Effect.Negative {
9196
override val id = "INGEN_ADRESSE_FUNNET"
9297
override val beskrivelse = "Personen start/stopp av periode utføres på har ingen adresse i våre systemer"

‎domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/opplysninger/StatsborgerOpplysninger.kt

-33
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,3 @@ fun euEoesStatsborgerOpplysning(statsborgerskap: List<Statsborgerskap>): Set<Opp
1818
.any { it in eea }
1919
.let { return if (it) setOf(ErEuEoesStatsborger) else emptySet() }
2020

21-
val eea = setOf(
22-
"BEL",
23-
"BGR",
24-
"DNK",
25-
"EST",
26-
"FIN",
27-
"FRA",
28-
"GRC",
29-
"IRL",
30-
"ISL",
31-
"ITA",
32-
"HRV",
33-
"CYP",
34-
"LVA",
35-
"LIE",
36-
"LTU",
37-
"LUX",
38-
"MLT",
39-
"NLD",
40-
"NOR",
41-
"POL",
42-
"PRT",
43-
"ROU",
44-
"SVK",
45-
"SVN",
46-
"ESP",
47-
"SWE",
48-
"CZE",
49-
"DEU",
50-
"HUN",
51-
"AUT",
52-
"CHE"
53-
).map { it.uppercase() }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package no.nav.paw.arbeidssokerregisteret.application
2+
3+
import io.kotest.core.spec.style.FreeSpec
4+
import io.kotest.matchers.shouldBe
5+
import no.nav.paw.arbeidssokerregisteret.application.opplysninger.DomeneOpplysning.*
6+
import no.nav.paw.arbeidssokerregisteret.application.opplysninger.adreseOpplysning
7+
import no.nav.paw.pdl.graphql.generated.hentperson.*
8+
9+
class AdresseTest : FreeSpec({
10+
"Test for adresse" - {
11+
"Test for norske adresser" - {
12+
"har veiadresse" {
13+
val veiadresse = Bostedsadresse(
14+
vegadresse = Vegadresse(
15+
kommunenummer = "1201"
16+
)
17+
)
18+
adreseOpplysning(veiadresse) shouldBe setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
19+
}
20+
"har matrikkeladresse" {
21+
val matrikkelAdresse = Bostedsadresse(
22+
matrikkeladresse = Matrikkeladresse(
23+
kommunenummer = "1201"
24+
)
25+
)
26+
adreseOpplysning(matrikkelAdresse) shouldBe setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
27+
}
28+
"har ukjentBosted" {
29+
val ukjentBosted = Bostedsadresse(
30+
ukjentBosted = UkjentBosted(
31+
bostedskommune = "1201"
32+
)
33+
)
34+
adreseOpplysning(ukjentBosted) shouldBe setOf(HarNorskAdresse, HarRegistrertAdresseIEuEoes)
35+
}
36+
}
37+
"Test for utenlandsk adresse" - {
38+
"har utenlandsk adresse i EU/EØS" {
39+
val utenlandskAdresse = Bostedsadresse(
40+
utenlandskAdresse = UtenlandskAdresse(
41+
landkode = "SWE"
42+
)
43+
)
44+
adreseOpplysning(utenlandskAdresse) shouldBe setOf(
45+
HarUtenlandskAdresse,
46+
HarRegistrertAdresseIEuEoes
47+
)
48+
}
49+
"har utenlandsk adresse utenfor EU/EØS" {
50+
val utenlandskAdresse = Bostedsadresse(
51+
utenlandskAdresse = UtenlandskAdresse(
52+
landkode = "USA"
53+
)
54+
)
55+
adreseOpplysning(utenlandskAdresse) shouldBe setOf(HarUtenlandskAdresse)
56+
}
57+
}
58+
"Test for ingen adresse" {
59+
adreseOpplysning(null) shouldBe setOf(IngenAdresseFunnet)
60+
}
61+
}
62+
})

‎domain/interne-hendelser/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/intern/v1/vo/Opplysning.kt

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ enum class Opplysning {
2020
SAVNET,
2121
HAR_NORSK_ADRESSE,
2222
HAR_UTENLANDSK_ADRESSE,
23+
HAR_REGISTRERT_ADRESSE_I_EU_EOES,
2324
INGEN_ADRESSE_FUNNET,
2425
BOSATT_ETTER_FREG_LOVEN,
2526
DNUMMER,

0 commit comments

Comments
 (0)
Please sign in to comment.