Skip to content

Commit

Permalink
La til regler som tillater statsborger fra GBR og EU/EØS (untatt Norg…
Browse files Browse the repository at this point in the history
…e) å registrere seg uten å være bosatt i hendhold til FREG loven
  • Loading branch information
nilsmsa committed Aug 6, 2024
1 parent 66d40ab commit 10d3dc6
Show file tree
Hide file tree
Showing 7 changed files with 235 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ fun RegelId.apiRegelId(): ApiRegelId = when (this) {
Savnet -> ApiRegelId.SAVNET
UkjentAlder -> ApiRegelId.UKJENT_ALDER
Under18Aar -> ApiRegelId.UNDER_18_AAR
EuEoesBorgerMedDnummer -> ApiRegelId.EU_EOES_BORGER_MED_DNUMMER
EuEoesBorgerUtenDnummer -> ApiRegelId.EU_EOES_BORGER_UTEN_DNUMMER
GBRStatsborgerMedDnummer -> ApiRegelId.GBR_STATSBORGER_MED_DNUMMER
GBRStatsborgerUtenDnummer -> ApiRegelId.GBR_STATSBORGER_UTEN_DNUMMER
NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven -> ApiRegelId.NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN
}
else -> ApiRegelId.UKJENT_REGEL
}
Expand Down Expand Up @@ -122,10 +127,15 @@ fun AuthRegelId.httpCode(): HttpStatusCode = when (this) {
fun DomeneRegelId.httpCode(): HttpStatusCode = when (this) {
ForhaandsgodkjentAvAnsatt -> HttpStatusCode.Accepted
Over18AarOgBosattEtterFregLoven -> HttpStatusCode.Accepted
EuEoesBorgerMedDnummer -> HttpStatusCode.Accepted
GBRStatsborgerMedDnummer -> HttpStatusCode.Accepted
Doed -> HttpStatusCode.Forbidden
IkkeBosattINorgeIHenholdTilFolkeregisterloven -> HttpStatusCode.Forbidden
IkkeFunnet -> HttpStatusCode.Forbidden
Savnet -> HttpStatusCode.Forbidden
UkjentAlder -> HttpStatusCode.Forbidden
Under18Aar -> HttpStatusCode.Forbidden
EuEoesBorgerUtenDnummer -> HttpStatusCode.Forbidden
GBRStatsborgerUtenDnummer -> HttpStatusCode.Forbidden
NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven -> HttpStatusCode.Forbidden
}
Original file line number Diff line number Diff line change
Expand Up @@ -238,4 +238,9 @@ components:
- "IKKE_TILGANG"
- "UNDER_18_AAR"
- "IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN"
- "UKJENT_ALDER"
- "UKJENT_ALDER"
- "EU_EOES_BORGER_MED_DNUMMER"
- "GBR_STATSBORGER_MED_DNUMMER"
- "EU_EOES_BORGER_UTEN_DNUMMER"
- "GBR_STATSBORGER_UTEN_DNUMMER"
- "NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN"
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ data object NorskBrukerBosattISverige: TestCase {
feilKode = Feil.FeilKode.AVVIST,
aarsakTilAvvisning = AarsakTilAvvisning(
beskrivelse = "any",
regel = ApiRegelId.IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN,
regel = ApiRegelId.NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN,
detaljer = listOf(
ApiOpplysning.ER_OVER_18_AAR,
ApiOpplysning.HAR_UTENLANDSK_ADRESSE,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package no.nav.paw.arbeidssokerregisteret.testdata

import io.kotest.common.runBlocking
import io.ktor.http.*
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.AarsakTilAvvisning
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.ApiRegelId
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Feil
import no.nav.paw.arbeidssokerregisteret.*
import no.nav.paw.arbeidssokerregisteret.intern.v1.Avvist
import no.nav.paw.arbeidssokerregisteret.intern.v1.Hendelse
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Bruker
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.BrukerType
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Opplysning
import no.nav.paw.kafkakeygenerator.client.KafkaKeysClient
import no.nav.paw.pdl.graphql.generated.hentperson.Foedsel
import no.nav.paw.pdl.graphql.generated.hentperson.Person
import no.nav.paw.pdl.graphql.generated.hentperson.UtenlandskAdresse
import org.apache.kafka.clients.producer.ProducerRecord
import java.time.Instant
import java.util.*
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Opplysning as ApiOpplysning

object NorskStatsborgerIkkeBosattUtenForhåndsgodkjenning: TestCase {
override val id = "12345678919"
override val person: Person = Person(
foedsel = Foedsel("2000-03-04", 2000).list(),
statsborgerskap = "NOR".statsborgerskap(),
opphold = emptyList(),
folkeregisterpersonstatus = ikkeBosatt.folkeregisterpersonstatus(),
bostedsadresse = bostedsadresse(
utenlandskAdresse = UtenlandskAdresse("SWE")
),
innflyttingTilNorge = emptyList(),
utflyttingFraNorge = "2017-01-02".utflytting()
)

override val configure: TestCaseBuilder.() -> Unit = {
authToken = mockOAuth2Server.personToken(id)
}

override val producesHttpResponse: HttpStatusCode = HttpStatusCode.Forbidden
override val producesError: Feil = Feil(
melding = "any",
feilKode = Feil.FeilKode.AVVIST,
aarsakTilAvvisning = AarsakTilAvvisning(
beskrivelse = "any",
regel = ApiRegelId.NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN,
detaljer = listOf(
ApiOpplysning.ER_NORSK_STATSBORGER,
ApiOpplysning.IKKE_BOSATT,
ApiOpplysning.ER_EU_EOES_STATSBORGER,
ApiOpplysning.ER_OVER_18_AAR,
ApiOpplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
ApiOpplysning.SISTE_FLYTTING_VAR_UT_AV_NORGE,
ApiOpplysning.SAMME_SOM_INNLOGGET_BRUKER,
ApiOpplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
ApiOpplysning.HAR_UTENLANDSK_ADRESSE,
ApiOpplysning.IKKE_ANSATT
)
)
)

override fun producesRecord(kafkaKeysClient: KafkaKeysClient): ProducerRecord<Long, out Hendelse> =
ProducerRecord(
"any",
runBlocking { kafkaKeysClient.getIdAndKey(id).key },
Avvist(
hendelseId = UUID.randomUUID(),
id = runBlocking { kafkaKeysClient.getIdAndKey(
id
).id },
identitetsnummer = id,
metadata = no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Metadata(
tidspunkt = Instant.now(),
kilde = "paw-arbeidssokerregisteret-api-start-stopp-perioder",
utfoertAv = Bruker(
id = id,
type = BrukerType.SLUTTBRUKER
),
aarsak = "any",
tidspunktFraKilde = null
),
opplysninger = setOf(
Opplysning.ER_OVER_18_AAR,
Opplysning.SISTE_FLYTTING_VAR_UT_AV_NORGE,
Opplysning.SAMME_SOM_INNLOGGET_BRUKER,
Opplysning.ER_NORSK_STATSBORGER,
Opplysning.ER_EU_EOES_STATSBORGER,
Opplysning.HAR_REGISTRERT_ADRESSE_I_EU_EOES,
Opplysning.IKKE_ANSATT,
Opplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
Opplysning.HAR_UTENLANDSK_ADRESSE,
Opplysning.IKKE_BOSATT
)
)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package no.nav.paw.arbeidssokerregisteret.testdata

import io.kotest.common.runBlocking
import io.ktor.http.*
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Feil
import no.nav.paw.arbeidssokerregisteret.*
import no.nav.paw.arbeidssokerregisteret.intern.v1.Avvist
import no.nav.paw.arbeidssokerregisteret.intern.v1.Hendelse
import no.nav.paw.arbeidssokerregisteret.intern.v1.Startet
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Bruker
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.BrukerType
import no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Opplysning
import no.nav.paw.kafkakeygenerator.client.KafkaKeysClient
import no.nav.paw.pdl.graphql.generated.hentperson.Foedsel
import no.nav.paw.pdl.graphql.generated.hentperson.Person
import no.nav.paw.pdl.graphql.generated.hentperson.UtenlandskAdresse
import org.apache.kafka.clients.producer.ProducerRecord
import java.time.Instant
import java.util.*

object SvenskStatsborgerMedDNummerIkkeBosattUtenForhåndsgodkjenning: TestCase {
override val id = "12345678919"
override val person: Person = Person(
foedsel = Foedsel("2000-03-04", 2000).list(),
statsborgerskap = "SWE".statsborgerskap(),
opphold = emptyList(),
folkeregisterpersonstatus = ikkeBosatt.folkeregisterpersonstatus() + dNummer.folkeregisterpersonstatus(),
bostedsadresse = bostedsadresse(),
innflyttingTilNorge = emptyList(),
utflyttingFraNorge = emptyList()
)

override val configure: TestCaseBuilder.() -> Unit = {
authToken = mockOAuth2Server.personToken(id)
}

override val producesHttpResponse: HttpStatusCode = HttpStatusCode.NoContent
override val producesError: Feil? = null

override fun producesRecord(kafkaKeysClient: KafkaKeysClient): ProducerRecord<Long, out Hendelse>? =
ProducerRecord(
"any",
runBlocking { kafkaKeysClient.getIdAndKey(id).key },
Startet(
hendelseId = UUID.randomUUID(),
id = runBlocking { kafkaKeysClient.getIdAndKey(
id
).id },
identitetsnummer = id,
metadata = no.nav.paw.arbeidssokerregisteret.intern.v1.vo.Metadata(
tidspunkt = Instant.now(),
kilde = "paw-arbeidssokerregisteret-api-start-stopp-perioder",
utfoertAv = Bruker(
id = id,
type = BrukerType.SLUTTBRUKER
),
aarsak = "any",
tidspunktFraKilde = null
),
opplysninger = setOf(
Opplysning.ER_OVER_18_AAR,
Opplysning.INGEN_FLYTTE_INFORMASJON,
Opplysning.SAMME_SOM_INNLOGGET_BRUKER,
Opplysning.ER_EU_EOES_STATSBORGER,
Opplysning.IKKE_ANSATT,
Opplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
Opplysning.INGEN_ADRESSE_FUNNET,
Opplysning.IKKE_BOSATT,
Opplysning.DNUMMER
)
)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,33 @@ val reglerForInngangIPrioritertRekkefolge: List<Regel> = listOf(
id = Over18AarOgBosattEtterFregLoven,
vedTreff = ::ok
),
"Norsk statsborger, men ikke bosatt i hendhold til Folkeregisterloven"(
ErNorskStatsborger,
id = NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven,
vedTreff = ::problem
),
"EU/EØS statsborger med d-nummer" (
ErEuEoesStatsborger,
Dnummer,
id = EuEoesBorgerMedDnummer,
vedTreff = ::ok
),
"Statsborgerskap fra Storbritannia(GBR) med d-nummer" (
ErGbrStatsborger,
Dnummer,
id = GBRStatsborgerMedDnummer,
vedTreff = ::ok
),
"EU/EØS statsborger uten d-nummer" (
ErEuEoesStatsborger,
id = EuEoesBorgerUtenDnummer,
vedTreff = ::problem
),
"Statsborgerskap fra Storbritannia(GBR) uten d-nummer" (
ErGbrStatsborger,
id = GBRStatsborgerUtenDnummer,
vedTreff = ::problem
),
"Avvist fordi personen ikke er bosatt i Norge i henhold til folkeregisterloven"(
id = IkkeBosattINorgeIHenholdTilFolkeregisterloven,
vedTreff = ::problem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,24 @@ data object Over18AarOgBosattEtterFregLoven : DomeneRegelId {

data object UkjentAlder : DomeneRegelId {
override val id: String = "UKJENT_ALDER"
}
}

data object NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven : DomeneRegelId {
override val id: String = "NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN"
}

data object EuEoesBorgerMedDnummer: DomeneRegelId {
override val id: String = "EU_EOES_BORGER_MED_DNUMMER"
}

data object GBRStatsborgerMedDnummer: DomeneRegelId {
override val id: String = "GBR_STATSBORGER_MED_DNUMMER"
}

data object EuEoesBorgerUtenDnummer: DomeneRegelId {
override val id: String = "EU_EOES_BORGER_UTEN_DNUMMER"
}

data object GBRStatsborgerUtenDnummer: DomeneRegelId {
override val id: String = "GBR_STATSBORGER_UTEN_DNUMMER"
}

0 comments on commit 10d3dc6

Please sign in to comment.