From 32a00c23226406ea59a7d0ed37aa4ff19fafe0c7 Mon Sep 17 00:00:00 2001 From: Nithya Ganesh Date: Thu, 16 Mar 2023 23:24:48 -0400 Subject: [PATCH 1/4] added unit tests to validate the serialization of pindetails --- .../service/models/oidc/PinDetailsTest.kt | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt diff --git a/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt b/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt new file mode 100644 index 00000000..91b99291 --- /dev/null +++ b/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved + +package com.microsoft.did.sdk.credential.service.models.oidc + +import assertk.assertThat +import assertk.assertions.isEqualTo +import assertk.assertions.isNull +import com.microsoft.did.sdk.di.defaultTestSerializer +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.MissingFieldException +import org.assertj.core.api.Assertions +import org.junit.Test + +@OptIn(ExperimentalSerializationApi::class) +class PinDetailsTest { + private val pinDetailsHashedFlowSerializedString = """{ + "length": 4, + "type": "numeric", + "alg": "sha256", + "iterations": 1, + "salt": "sakGSIfjwqroREOujhuj3j", + "hash": "C1if7XayVIBrhnCfyCnsTiMn/myBI0XQ13vtfBGIUj8=" + }""" + + private val pinDetailsNonHashedFlowSerializedString = """{ + "length": 4, + "type": "numeric", + "hash": "C1if7XayVIBrhnCfyCnsTiMn/myBI0XQ13vtfBGIUj8=" + }""" + + private val pinDetailsWithNoLengthSerializedString = """{ + "type": "numeric", + "hash": "C1if7XayVIBrhnCfyCnsTiMn/myBI0XQ13vtfBGIUj8=" + }""" + + private val pinDetailsWithNoTypeSerializedString = """{ + "length": 4, + "hash": "C1if7XayVIBrhnCfyCnsTiMn/myBI0XQ13vtfBGIUj8=" + }""" + + private val pinDetailsWithNoHashSerializedString = """{ + "length": 4, + "type": "numeric" + }""" + + @Test + fun `test serialization of pin details for hashed flow passes`() { + val pinDetail = defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsHashedFlowSerializedString) + assertThat(pinDetail.length).isEqualTo(4) + assertThat(pinDetail.salt).isEqualTo("sakGSIfjwqroREOujhuj3j") + assertThat(pinDetail.type).isEqualTo("numeric") + } + + @Test + fun `test serialization of pin details for non hashed flow passes`() { + val pinDetail = defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsNonHashedFlowSerializedString) + assertThat(pinDetail.length).isEqualTo(4) + assertThat(pinDetail.type).isEqualTo("numeric") + assertThat(pinDetail.salt).isNull() + } + + @Test + fun `test serialization of pin details when missing length fails`() { + Assertions.assertThatThrownBy { + defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsWithNoLengthSerializedString) + }.isInstanceOf(MissingFieldException::class.java) + } + + @Test + fun `test serialization of pin details when missing type fails`() { + Assertions.assertThatThrownBy { + defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsWithNoTypeSerializedString) + }.isInstanceOf(MissingFieldException::class.java) + } + + @Test + fun `test serialization of pin details when missing hash passes`() { + val pinDetail = defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsWithNoHashSerializedString) + assertThat(pinDetail.type).isEqualTo("numeric") + assertThat(pinDetail.length).isEqualTo(4) + assertThat(pinDetail.salt).isNull() + } +} \ No newline at end of file From b96121d41c51b2e1b9ca4dd0ffefd9d7bf600379 Mon Sep 17 00:00:00 2001 From: Nithya Ganesh Date: Fri, 17 Mar 2023 00:01:47 -0400 Subject: [PATCH 2/4] fixed failing test --- .../test/java/com/microsoft/did/sdk/util/ClaimFormatterTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/test/java/com/microsoft/did/sdk/util/ClaimFormatterTest.kt b/sdk/src/test/java/com/microsoft/did/sdk/util/ClaimFormatterTest.kt index 6cda1553..b2f74188 100644 --- a/sdk/src/test/java/com/microsoft/did/sdk/util/ClaimFormatterTest.kt +++ b/sdk/src/test/java/com/microsoft/did/sdk/util/ClaimFormatterTest.kt @@ -10,7 +10,7 @@ class ClaimFormatterTest { private val suppliedClaimValueForText = "claim value" private val expectedClaimValueForIncorrectDate = "?" private val suppliedClaimValueForDateInMills = 1621366869159L - private val expectedFormattedDateTimeInDifferentTimeZone = listOf("May 18, 2021, 12:41:09 PM", "May 18, 2021, 7:41:09 PM", "May 18, 2021, 9:41:09 PM") + private val expectedFormattedDateTimeInDifferentTimeZone = listOf("May 18, 2021, 12:41:09 PM", "May 18, 2021, 7:41:09 PM", "May 18, 2021, 9:41:09 PM", "May 18, 2021, 3:41:09 PM") private val suppliedClaimValueForDateInSeconds = 1621366850L private val expectedFormattedDate = "May 18, 2021" From 81183e1243f70ed8f661a979691088e6657cb36b Mon Sep 17 00:00:00 2001 From: Nithya Ganesh Date: Fri, 17 Mar 2023 14:34:16 -0400 Subject: [PATCH 3/4] removed unused dependency --- sdk/build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/sdk/build.gradle b/sdk/build.gradle index 493e24d4..4d86b863 100644 --- a/sdk/build.gradle +++ b/sdk/build.gradle @@ -127,7 +127,6 @@ dependencies { androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" androidTestImplementation "io.mockk:mockk-android:$mockk_version" - androidTestImplementation "android.arch.core:core-testing:1.1.1" testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" @@ -135,7 +134,6 @@ dependencies { testImplementation 'com.willowtreeapps.assertk:assertk-jvm:0.21' testImplementation "org.assertj:assertj-core:$assertj_test_version" testImplementation "junit:junit:$junit_version" - testImplementation "android.arch.core:core-testing:1.1.1" } /** From 915bd83ef6b522f8d5a64c2848b44cb9e8a85c1b Mon Sep 17 00:00:00 2001 From: Nithya Ganesh Date: Fri, 17 Mar 2023 14:52:26 -0400 Subject: [PATCH 4/4] changed the exception checked in test --- .../sdk/credential/service/models/oidc/PinDetailsTest.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt b/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt index 91b99291..f3d9ae2c 100644 --- a/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt +++ b/sdk/src/test/java/com/microsoft/did/sdk/credential/service/models/oidc/PinDetailsTest.kt @@ -6,12 +6,10 @@ import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isNull import com.microsoft.did.sdk.di.defaultTestSerializer -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.MissingFieldException +import kotlinx.serialization.SerializationException import org.assertj.core.api.Assertions import org.junit.Test -@OptIn(ExperimentalSerializationApi::class) class PinDetailsTest { private val pinDetailsHashedFlowSerializedString = """{ "length": 4, @@ -63,14 +61,14 @@ class PinDetailsTest { fun `test serialization of pin details when missing length fails`() { Assertions.assertThatThrownBy { defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsWithNoLengthSerializedString) - }.isInstanceOf(MissingFieldException::class.java) + }.isInstanceOf(SerializationException::class.java) } @Test fun `test serialization of pin details when missing type fails`() { Assertions.assertThatThrownBy { defaultTestSerializer.decodeFromString(PinDetails.serializer(), pinDetailsWithNoTypeSerializedString) - }.isInstanceOf(MissingFieldException::class.java) + }.isInstanceOf(SerializationException::class.java) } @Test