Skip to content

Commit

Permalink
validate received school organization oids
Browse files Browse the repository at this point in the history
  • Loading branch information
Kailari committed Jan 23, 2025
1 parent f8fdd7e commit 754f709
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fi.oph.kitu.kotoutumiskoulutus

import fi.oph.kitu.Oid
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Table
import java.time.Instant
Expand All @@ -14,7 +15,7 @@ data class KielitestiSuoritus(
val oppijanumero: String,
val email: String,
val timeCompleted: Instant,
val schoolOid: String,
val schoolOid: Oid,
val courseid: Int,
val coursename: String,
val luetunYmmartaminenResultSystem: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package fi.oph.kitu.kotoutumiskoulutus
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import fi.oph.kitu.Oid
import fi.oph.kitu.kotoutumiskoulutus.KoealustaSuorituksetResponse.User
import fi.oph.kitu.kotoutumiskoulutus.KoealustaSuorituksetResponse.User.Completion
import fi.oph.kitu.oppijanumero.Oppija
Expand Down Expand Up @@ -203,6 +204,17 @@ class KoealustaMappingService(
return result
}

fun getSchoolOid(
userId: Int,
oid: String,
): Oid =
Oid.valueOf(oid)
?: throw Error.Validation.MalformedField(
userId,
"schoolOID",
oid,
)

fun completionToEntity(
user: User,
oppijanumero: String,
Expand All @@ -212,6 +224,7 @@ class KoealustaMappingService(
val kuullunYmmartaminen = getKuullunYmmartaminen(user.userid, completion)
val puhe = getPuhe(user.userid, completion)
val kirjoittaminen = getKirjoittaminen(user.userid, completion)
val schoolOid = getSchoolOid(user.userid, completion.schoolOID)

if (user.preferredname.isNullOrEmpty()) {
throw Error.Validation.MissingField("preferred name", user.userid)
Expand All @@ -224,7 +237,7 @@ class KoealustaMappingService(
email = user.email,
oppijanumero = oppijanumero,
timeCompleted = Instant.ofEpochSecond(completion.timecompleted),
schoolOid = completion.schoolOID,
schoolOid = schoolOid,
courseid = completion.courseid,
coursename = completion.coursename,
luetunYmmartaminenResultSystem = luetunYmmartaminen.quiz_result_system!!,
Expand Down Expand Up @@ -273,6 +286,12 @@ class KoealustaMappingService(
field: String,
userId: Int,
) : Validation(userId, "Missing student \"$field\" for user \"$userId\"")

class MalformedField(
userId: Int,
field: String,
value: String,
) : Validation(userId, "Malformed value \"$value\" in \"$field\" for user \"$userId\"")
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fi.oph.kitu.kotoutumiskoulutus

import com.fasterxml.jackson.databind.ObjectMapper
import fi.oph.kitu.Oid
import fi.oph.kitu.oppijanumero.OppijanumeroServiceMock
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
Expand Down Expand Up @@ -57,7 +58,7 @@ class KoealustaServiceTests {
{
"courseid": 32,
"coursename": "Integraatio testaus",
"schoolOID": "",
"schoolOID": "1.2.246.562.10.1234567890",
"results": [
{
"name": "luetun ymm\u00e4rt\u00e4minen",
Expand Down Expand Up @@ -125,5 +126,9 @@ class KoealustaServiceTests {
expected = "Integraatio testaus",
actual = mervi.coursename,
)
assertEquals(
expected = Oid.valueOf("1.2.246.562.10.1234567890"),
actual = mervi.schoolOid,
)
}
}

0 comments on commit 754f709

Please sign in to comment.