Skip to content

Commit

Permalink
Ryddet i regler
Browse files Browse the repository at this point in the history
  • Loading branch information
nilsmsa committed Aug 13, 2024
1 parent 43405ba commit d6ca7e1
Show file tree
Hide file tree
Showing 9 changed files with 118 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,15 @@ fun RegelId.apiRegelId(): ApiRegelId = when (this) {
is DomeneRegelId -> when(this) {
ForhaandsgodkjentAvAnsatt -> ApiRegelId.UKJENT_REGEL
Over18AarOgBosattEtterFregLoven -> ApiRegelId.UKJENT_REGEL
EuEoesBorgerMedDnummer -> ApiRegelId.UKJENT_REGEL
GBRStatsborgerMedDnummer -> ApiRegelId.UKJENT_REGEL
EuEoesBorger -> ApiRegelId.UKJENT_REGEL
Doed -> ApiRegelId.DOED
IkkeBosattINorgeIHenholdTilFolkeregisterloven -> ApiRegelId.IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN
IkkeFunnet -> ApiRegelId.IKKE_FUNNET
Savnet -> ApiRegelId.SAVNET
UkjentAlder -> ApiRegelId.UKJENT_ALDER
Under18Aar -> ApiRegelId.UNDER_18_AAR
EuEoesBorgerUtenDnummer -> ApiRegelId.EU_EOES_BORGER_UTEN_DNUMMER
GBRStatsborgerUtenDnummer -> ApiRegelId.GBR_STATSBORGER_UTEN_DNUMMER
NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven -> ApiRegelId.NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN
EuEoesBorgerMedStatusIkkeBosatt -> ApiRegelId.EU_EOES_BORGER_MED_STATUS_IKKE_BOSATT
}
else -> ApiRegelId.UKJENT_REGEL
}
Expand Down Expand Up @@ -127,15 +125,13 @@ fun AuthRegelId.httpCode(): HttpStatusCode = when (this) {
fun DomeneRegelId.httpCode(): HttpStatusCode = when (this) {
ForhaandsgodkjentAvAnsatt -> HttpStatusCode.Accepted
Over18AarOgBosattEtterFregLoven -> HttpStatusCode.Accepted
EuEoesBorgerMedDnummer -> HttpStatusCode.Accepted
GBRStatsborgerMedDnummer -> HttpStatusCode.Accepted
EuEoesBorger -> 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
EuEoesBorgerMedStatusIkkeBosatt -> HttpStatusCode.Forbidden
NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven -> HttpStatusCode.Forbidden
}
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,5 @@ components:
- "UNDER_18_AAR"
- "IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN"
- "UKJENT_ALDER"
- "EU_EOES_BORGER_UTEN_DNUMMER"
- "GBR_STATSBORGER_UTEN_DNUMMER"
- "EU_EOES_BORGER_MED_STATUS_IKKE_BOSATT"
- "NORSK_STATSBORGER_IKKE_BOSATT_I_NORGE_I_HENHOLD_TIL_FOLKEREGISTERLOVEN"
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,15 @@ class TestCaseRunner : FreeSpec({
val testConfiguration = TestCaseBuilder(mockOAuthServer, autorisasjonService)
.also { testCase.configure(it) }
val status = client.startPeriode(id, testConfiguration.authToken, testCase.forhaandsGodkjent)
val body = if (status.status.value >= 300) {
status.body<Feil>()
} else {
null
}
logger.info("Http response: status={}, body=\n{}", status, body)
status.status shouldBe testCase.producesHttpResponse
testCase.producesError?.also { expectedErrorResponse ->
val body = status.body<Feil>()
body.shouldNotBeNull()
body.feilKode shouldBe expectedErrorResponse.feilKode
body.aarsakTilAvvisning?.regel shouldBe expectedErrorResponse.aarsakTilAvvisning?.regel
expectedErrorResponse.aarsakTilAvvisning?.detaljer?.also { expectedDetails ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ 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 no.nav.paw.pdl.graphql.generated.hentperson.Vegadresse
import org.apache.kafka.clients.producer.ProducerRecord
import java.time.Instant
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@ 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.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.*
import no.nav.paw.arbeidssoekerregisteret.api.startstopp.models.Opplysning as ApiOpplysning

object SvenskStatsborgerMedDNummerIkkeBosattUtenForhåndsgodkjenning: TestCase {
override val id = "12345678919"
Expand All @@ -34,14 +35,32 @@ object SvenskStatsborgerMedDNummerIkkeBosattUtenForhåndsgodkjenning: TestCase {
authToken = mockOAuth2Server.personToken(id)
}

override val producesHttpResponse: HttpStatusCode = HttpStatusCode.NoContent
override val producesError: Feil? = null
override val producesHttpResponse: HttpStatusCode = HttpStatusCode.Forbidden
override val producesError: Feil? = Feil(
melding = "any",
feilKode = Feil.FeilKode.AVVIST,
aarsakTilAvvisning = AarsakTilAvvisning(
beskrivelse = "any",
regel = ApiRegelId.EU_EOES_BORGER_MED_STATUS_IKKE_BOSATT,
detaljer = listOf(
ApiOpplysning.ER_OVER_18_AAR,
ApiOpplysning.INGEN_FLYTTE_INFORMASJON,
ApiOpplysning.SAMME_SOM_INNLOGGET_BRUKER,
ApiOpplysning.ER_EU_EOES_STATSBORGER,
ApiOpplysning.IKKE_ANSATT,
ApiOpplysning.INGEN_INFORMASJON_OM_OPPHOLDSTILLATELSE,
ApiOpplysning.INGEN_ADRESSE_FUNNET,
ApiOpplysning.IKKE_BOSATT,
ApiOpplysning.DNUMMER
)
)
)

override fun producesRecord(kafkaKeysClient: KafkaKeysClient): ProducerRecord<Long, out Hendelse>? =
override fun producesRecord(kafkaKeysClient: KafkaKeysClient): ProducerRecord<Long, out Hendelse> =
ProducerRecord(
"any",
runBlocking { kafkaKeysClient.getIdAndKey(id).key },
Startet(
Avvist(
hendelseId = UUID.randomUUID(),
id = runBlocking { kafkaKeysClient.getIdAndKey(
id
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
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.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 org.apache.kafka.clients.producer.ProducerRecord
import java.time.Instant
import java.util.*

object SvenskStatsborgerUtenForhåndsgodkjenning: TestCase {
override val id = "12345678919"
override val person: Person = Person(
foedsel = Foedsel("2000-03-04", 2000).list(),
statsborgerskap = "SWE".statsborgerskap(),
opphold = emptyList(),
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.DNUMMER
)
)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,27 +46,16 @@ val reglerForInngangIPrioritertRekkefolge: List<Regel> = listOf(
id = NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven,
vedTreff = ::problem
),
"EU/EØS statsborger med d-nummer" (
"EU/EØS statsborger med status 'ikke bosatt'" (
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,
IkkeBosatt,
id = EuEoesBorgerMedStatusIkkeBosatt,
vedTreff = ::problem
),
"Statsborgerskap fra Storbritannia(GBR) uten d-nummer" (
ErGbrStatsborger,
id = GBRStatsborgerUtenDnummer,
vedTreff = ::problem
"EU/EØS statsborger" (
ErEuEoesStatsborger,
id = EuEoesBorger,
vedTreff = ::ok
),
"Avvist fordi personen ikke er bosatt i Norge i henhold til folkeregisterloven"(
id = IkkeBosattINorgeIHenholdTilFolkeregisterloven,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,10 @@ data object NorskStatsborgerIkkeBosattINorgeIHenholdTilFolkeregisterloven : Dome
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 EuEoesBorger: DomeneRegelId {
override val id: String = "EU_EOES_BORGER"
}

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"
data object EuEoesBorgerMedStatusIkkeBosatt: DomeneRegelId {
override val id: String = "EU_EOES_BORGER_MED_STATUS_IKKE_BOSATT"
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ interface Opplysning {
val beskrivelse: String
}


infix operator fun Opplysning.plus(opplysning: Opplysning): Set<Opplysning> = setOf(this, opplysning)
sealed interface DomeneOpplysning: Opplysning {

Expand Down

0 comments on commit d6ca7e1

Please sign in to comment.