diff --git a/apps/api-start-stopp-perioder/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/routes/StartStoppResultatMapping.kt b/apps/api-start-stopp-perioder/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/routes/StartStoppResultatMapping.kt index 24abe82f..f7a6c21d 100644 --- a/apps/api-start-stopp-perioder/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/routes/StartStoppResultatMapping.kt +++ b/apps/api-start-stopp-perioder/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/routes/StartStoppResultatMapping.kt @@ -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 } @@ -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 } diff --git a/apps/api-start-stopp-perioder/src/main/resources/openapi/startstopp.yaml b/apps/api-start-stopp-perioder/src/main/resources/openapi/startstopp.yaml index e2b3e849..195da4d6 100644 --- a/apps/api-start-stopp-perioder/src/main/resources/openapi/startstopp.yaml +++ b/apps/api-start-stopp-perioder/src/main/resources/openapi/startstopp.yaml @@ -238,4 +238,9 @@ components: - "IKKE_TILGANG" - "UNDER_18_AAR" - "IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN" - - "UKJENT_ALDER" \ No newline at end of file + - "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" \ No newline at end of file diff --git a/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskBrukerBosattISverige.kt b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskBrukerBosattISverige.kt index f3eb078b..a2eb3716 100644 --- a/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskBrukerBosattISverige.kt +++ b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskBrukerBosattISverige.kt @@ -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, diff --git "a/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskStatsborgerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" "b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskStatsborgerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" new file mode 100644 index 00000000..a77162e2 --- /dev/null +++ "b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/NorskStatsborgerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" @@ -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 = + 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 + ) + ) + ) +} \ No newline at end of file diff --git "a/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/SvenskStatsborgerMedDNummerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" "b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/SvenskStatsborgerMedDNummerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" new file mode 100644 index 00000000..ce2b818f --- /dev/null +++ "b/apps/api-start-stopp-perioder/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/testdata/SvenskStatsborgerMedDNummerIkkeBosattUtenForh\303\245ndsgodkjenning.kt" @@ -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? = + 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 + ) + ) + ) +} \ No newline at end of file diff --git a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsRegler.kt b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsRegler.kt index 0afdd1c1..309734b3 100644 --- a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsRegler.kt +++ b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsRegler.kt @@ -41,6 +41,33 @@ val reglerForInngangIPrioritertRekkefolge: List = 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 diff --git a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt index 0c76a76e..48a57e13 100644 --- a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt +++ b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt @@ -36,4 +36,24 @@ data object Over18AarOgBosattEtterFregLoven : DomeneRegelId { data object UkjentAlder : DomeneRegelId { override val id: String = "UKJENT_ALDER" -} \ No newline at end of file +} + +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" +}