From 0e6fe88c0abdd4e7f97a9c7b3328f8072c02ba48 Mon Sep 17 00:00:00 2001 From: Sergejs Luhmirins Date: Mon, 24 Feb 2025 10:45:59 +0200 Subject: [PATCH 1/2] MS-885 Make verification success flag optional --- .../libsimprints/contracts/data/JsonExt.kt | 2 +- .../contracts/data/Verification.kt | 19 ++++++++++++++----- .../contracts/data/VerificationTest.kt | 8 ++++++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/simprints/libsimprints/contracts/data/JsonExt.kt b/src/main/java/com/simprints/libsimprints/contracts/data/JsonExt.kt index 8a00510..8ed7fc4 100644 --- a/src/main/java/com/simprints/libsimprints/contracts/data/JsonExt.kt +++ b/src/main/java/com/simprints/libsimprints/contracts/data/JsonExt.kt @@ -4,7 +4,7 @@ import org.json.JSONArray import org.json.JSONException import org.json.JSONObject -internal inline fun T.asJsonObject(crossinline block: (JSONObject) -> JSONObject): JSONObject = JSONObject().also { block(it) } +internal inline fun T.asJsonObject(crossinline block: (JSONObject) -> Unit): JSONObject = JSONObject().also { block(it) } internal inline fun fromJsonString( jsonString: String, diff --git a/src/main/java/com/simprints/libsimprints/contracts/data/Verification.kt b/src/main/java/com/simprints/libsimprints/contracts/data/Verification.kt index 30016bf..f49681c 100644 --- a/src/main/java/com/simprints/libsimprints/contracts/data/Verification.kt +++ b/src/main/java/com/simprints/libsimprints/contracts/data/Verification.kt @@ -3,21 +3,24 @@ package com.simprints.libsimprints.contracts.data /** * This constructor creates a new identification * - * @param guid Global unique id of the verified person - * @param confidence An int containing the (matching) confidence + * @param guid Global unique id of the verified person + * @param confidence An int containing the (matching) confidence * @param confidenceBand Confidence qualifier based on the project's configuration + * @param isSuccess Whether the confidence is higher than threshold in the project's configuration if configured */ data class Verification( val guid: String, val confidence: Float, val confidenceBand: ConfidenceBand, - val isSuccess: Boolean, + val isSuccess: Boolean?, ) { fun toJson(): String = asJsonObject { it.put(KEY_GUID, guid) it.put(KEY_CONFIDENCE_BAND, confidenceBand.name) it.put(KEY_CONFIDENCE, confidence) - it.put(KEY_IS_SUCCESS, isSuccess) + if (isSuccess != null) { + it.put(KEY_IS_SUCCESS, isSuccess) + } }.toString() companion object { @@ -30,7 +33,13 @@ data class Verification( val guid = json.getString(KEY_GUID) val confidence = json.getDouble(KEY_CONFIDENCE).toFloat() val band = json.getString(KEY_CONFIDENCE_BAND).let { ConfidenceBand.valueOf(it) } - val isSuccess = json.getBoolean(KEY_IS_SUCCESS) + + // Success flag is only provided if threshold is enabled in project configuration + val isSuccess = if (!json.isNull(KEY_IS_SUCCESS)) { + json.getBoolean(KEY_IS_SUCCESS) + } else { + null + } Verification(guid, confidence, band, isSuccess) } diff --git a/src/test/java/com/simprints/libsimprints/contracts/data/VerificationTest.kt b/src/test/java/com/simprints/libsimprints/contracts/data/VerificationTest.kt index 016a0ff..2ca747e 100644 --- a/src/test/java/com/simprints/libsimprints/contracts/data/VerificationTest.kt +++ b/src/test/java/com/simprints/libsimprints/contracts/data/VerificationTest.kt @@ -14,4 +14,12 @@ class VerificationTest { Assert.assertEquals(expected, actual) } + + @Test + fun `test verification does not have isSuccess if null`() { + val expected = Verification("case-id", 42f, ConfidenceBand.HIGH, null) + val actual = Verification.fromJson(expected.toJson()) + + Assert.assertEquals(expected, actual) + } } From ee978188e2a05af1756ae9f2f8bb34c71c9f205c Mon Sep 17 00:00:00 2001 From: Sergejs Luhmirins Date: Mon, 24 Feb 2025 10:50:39 +0200 Subject: [PATCH 2/2] MS-885 Improve documentation comments for contract data --- src/main/java/com/simprints/libsimprints/Identification.kt | 7 ------- .../com/simprints/libsimprints/contracts/data/Enrolment.kt | 5 +++++ .../libsimprints/contracts/data/Identification.kt | 2 +- .../simprints/libsimprints/contracts/data/RefusalForm.kt | 6 ++++++ 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/simprints/libsimprints/Identification.kt b/src/main/java/com/simprints/libsimprints/Identification.kt index dc81528..57df0ea 100644 --- a/src/main/java/com/simprints/libsimprints/Identification.kt +++ b/src/main/java/com/simprints/libsimprints/Identification.kt @@ -4,13 +4,6 @@ import android.os.Parcel import android.os.Parcelable import android.os.Parcelable.Creator -/** - * This constructor creates a new identification - * - * @param guid Global unique id of the verified person - * @param confidence An int containing the (matching) confidence - * @param tier The tier score derived from the confidence - */ @Deprecated("Use contracts.data.Identification instead") data class Identification( val guid: String, diff --git a/src/main/java/com/simprints/libsimprints/contracts/data/Enrolment.kt b/src/main/java/com/simprints/libsimprints/contracts/data/Enrolment.kt index 8f72fc7..75dffde 100644 --- a/src/main/java/com/simprints/libsimprints/contracts/data/Enrolment.kt +++ b/src/main/java/com/simprints/libsimprints/contracts/data/Enrolment.kt @@ -1,5 +1,10 @@ package com.simprints.libsimprints.contracts.data +/** + * This constructor creates a new enrolment result + * + * @param guid Global unique id of the new enrolment + */ data class Enrolment( val guid: String, ) { diff --git a/src/main/java/com/simprints/libsimprints/contracts/data/Identification.kt b/src/main/java/com/simprints/libsimprints/contracts/data/Identification.kt index 2eca397..b826f06 100644 --- a/src/main/java/com/simprints/libsimprints/contracts/data/Identification.kt +++ b/src/main/java/com/simprints/libsimprints/contracts/data/Identification.kt @@ -3,7 +3,7 @@ package com.simprints.libsimprints.contracts.data import org.json.JSONArray /** - * This constructor creates a new identification + * This constructor creates a new identification result * * @param guid Global unique id of the verified person * @param confidence An int containing the (matching) confidence diff --git a/src/main/java/com/simprints/libsimprints/contracts/data/RefusalForm.kt b/src/main/java/com/simprints/libsimprints/contracts/data/RefusalForm.kt index da02ee3..6a4e9eb 100644 --- a/src/main/java/com/simprints/libsimprints/contracts/data/RefusalForm.kt +++ b/src/main/java/com/simprints/libsimprints/contracts/data/RefusalForm.kt @@ -1,5 +1,11 @@ package com.simprints.libsimprints.contracts.data +/** + * This constructor creates a new refusal form response + * + * @param reason Refusal reason chosen by user out of the provided options + * @param extra Additional information provided by the user + */ data class RefusalForm( val reason: String, val extra: String,