diff --git a/README.md b/README.md
index 1b467bd4..2ab37034 100644
--- a/README.md
+++ b/README.md
@@ -104,7 +104,7 @@ file.
```groovy
dependencies {
- implementation "eu.europa.ec.eudi:eudi-lib-android-wallet-core:0.10.1-SNAPSHOT"
+ implementation "eu.europa.ec.eudi:eudi-lib-android-wallet-core:0.10.2-SNAPSHOT"
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha05"
}
```
diff --git a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/index.md b/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/index.md
index 8c3c4357..c1449732 100644
--- a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/index.md
+++ b/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/index.md
@@ -23,13 +23,13 @@ androidJvm
## Functions
-| Name | Summary |
-|--------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| [build](build.md) | [androidJvm]
fun [build](build.md)(): [OpenId4VciManager](../index.md)
Build the [OpenId4VciManager](../index.md) |
-| [config](config.md) | [androidJvm]
fun [config](config.md)(config: [OpenId4VciManager.Config](../-config/index.md)): [OpenId4VciManager.Builder](index.md)
Set the [Config](../-config/index.md) to use |
-| [documentManager](document-manager.md) | [androidJvm]
fun [documentManager](document-manager.md)(documentManager: DocumentManager): [OpenId4VciManager.Builder](index.md)
Set the DocumentManager to use |
-| [ktHttpClientFactory](kt-http-client-factory.md) | [androidJvm]
fun [ktHttpClientFactory](kt-http-client-factory.md)(factory: () -> HttpClient): [OpenId4VciManager.Builder](index.md)
Override the Ktor HTTP client factory |
-| [logger](logger.md) | [androidJvm]
fun [logger](logger.md)(logger: [Logger](../../../eu.europa.ec.eudi.wallet.logging/-logger/index.md)): [OpenId4VciManager.Builder](index.md) |
+| Name | Summary |
+|------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [build](build.md) | [androidJvm]
fun [build](build.md)(): [OpenId4VciManager](../index.md)
Build the [OpenId4VciManager](../index.md) |
+| [config](config.md) | [androidJvm]
fun [config](config.md)(config: [OpenId4VciManager.Config](../-config/index.md)): [OpenId4VciManager.Builder](index.md)
Set the [Config](../-config/index.md) to use |
+| [documentManager](document-manager.md) | [androidJvm]
fun [documentManager](document-manager.md)(documentManager: DocumentManager): [OpenId4VciManager.Builder](index.md)
Set the DocumentManager to use |
+| [ktorHttpClientFactory](ktor-http-client-factory.md) | [androidJvm]
fun [ktorHttpClientFactory](ktor-http-client-factory.md)(factory: () -> HttpClient): [OpenId4VciManager.Builder](index.md)
Override the Ktor HTTP client factory |
+| [logger](logger.md) | [androidJvm]
fun [logger](logger.md)(logger: [Logger](../../../eu.europa.ec.eudi.wallet.logging/-logger/index.md)): [OpenId4VciManager.Builder](index.md) |
## Properties
diff --git a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/kt-http-client-factory.md b/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/kt-http-client-factory.md
deleted file mode 100644
index ebc03777..00000000
--- a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/kt-http-client-factory.md
+++ /dev/null
@@ -1,9 +0,0 @@
-//[wallet-core](../../../../index.md)/[eu.europa.ec.eudi.wallet.issue.openid4vci](../../index.md)/[OpenId4VciManager](../index.md)/[Builder](index.md)/[ktHttpClientFactory](kt-http-client-factory.md)
-
-# ktHttpClientFactory
-
-[androidJvm]\
-fun [ktHttpClientFactory](kt-http-client-factory.md)(factory: () ->
-HttpClient): [OpenId4VciManager.Builder](index.md)
-
-Override the Ktor HTTP client factory
diff --git a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md b/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md
index 839a719e..dc1b0e0a 100644
--- a/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md
+++ b/docs/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md
@@ -2,5 +2,11 @@
# ktorHttpClientFactory
+[androidJvm]\
+fun [ktorHttpClientFactory](ktor-http-client-factory.md)(factory: () ->
+HttpClient): [OpenId4VciManager.Builder](index.md)
+
+Override the Ktor HTTP client factory
+
[androidJvm]\
var [ktorHttpClientFactory](ktor-http-client-factory.md): () -> HttpClient?
diff --git a/docs/wallet-core/package-list b/docs/wallet-core/package-list
index 08aa831d..1c314bad 100644
--- a/docs/wallet-core/package-list
+++ b/docs/wallet-core/package-list
@@ -87,8 +87,8 @@ $dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Buil
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/config/#eu.europa.ec.eudi.wallet.issue.openid4vci.OpenId4VciManager.Config/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/config.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/documentManager/#/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/document-manager.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/documentManager/#eu.europa.ec.eudi.wallet.document.DocumentManager/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/document-manager.md
-$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/ktHttpClientFactory/#kotlin.Function0[io.ktor.client.HttpClient]/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/kt-http-client-factory.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/ktorHttpClientFactory/#/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md
+$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/ktorHttpClientFactory/#kotlin.Function0[io.ktor.client.HttpClient]/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/ktor-http-client-factory.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/logger/#/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/logger.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Builder/logger/#eu.europa.ec.eudi.wallet.logging.Logger/PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-builder/logger.md
$dokka.location:eu.europa.ec.eudi.wallet.issue.openid4vci/OpenId4VciManager.Companion///PointingToDeclaration/wallet-core/eu.europa.ec.eudi.wallet.issue.openid4vci/-open-id4-vci-manager/-companion/index.md
diff --git a/gradle.properties b/gradle.properties
index d135a3a7..ff1c3498 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -42,7 +42,7 @@ systemProp.sonar.host.url=https://sonarcloud.io
systemProp.sonar.gradle.skipCompile=true
systemProp.sonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/testDebugUnitTestCoverage/testDebugUnitTestCoverage.xml,build/reports/jacoco/testReleaseUnitTestCoverage/testReleaseUnitTestCoverage.xml
systemProp.sonar.projectName=eudi-lib-android-wallet-core
-VERSION_NAME=0.10.1-SNAPSHOT
+VERSION_NAME=0.10.2-SNAPSHOT
SONATYPE_HOST=S01
SONATYPE_AUTOMATIC_RELEASE=false
diff --git a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/EudiWallet.kt b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/EudiWallet.kt
index 65b911f5..8aaa9332 100644
--- a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/EudiWallet.kt
+++ b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/EudiWallet.kt
@@ -154,6 +154,7 @@ object EudiWallet {
openId4VpConfig,
openId4VpCBORResponseGenerator,
).apply {
+ _config.ktorHttpClientFactory?.let { ktorHttpClientFactory = it }
logger = this@EudiWallet.logger
_config.trustedReaderCertificates?.let {
setReaderTrustStore(ReaderTrustStore.getDefault(it))
@@ -255,6 +256,7 @@ object EudiWallet {
documentManager(this@EudiWallet.documentManager)
config(config)
logger = this@EudiWallet.logger
+ ktorHttpClientFactory = _config.ktorHttpClientFactory
}.also { it.issueDocumentByDocType(docType, txCode, executor, onEvent) }
} ?: run {
(executor ?: context.mainExecutor()).execute {
@@ -289,6 +291,7 @@ object EudiWallet {
documentManager(this@EudiWallet.documentManager)
config(config)
logger = this@EudiWallet.logger
+ ktorHttpClientFactory = _config.ktorHttpClientFactory
}.also { it.issueDocumentByOffer(offer, txCode, executor, onEvent) }
} ?: run {
(executor ?: context.mainExecutor()).execute {
@@ -322,6 +325,7 @@ object EudiWallet {
documentManager(this@EudiWallet.documentManager)
config(config)
logger = this@EudiWallet.logger
+ ktorHttpClientFactory = _config.ktorHttpClientFactory
}.also { it.issueDocumentByOfferUri(offerUri, txCode, executor, onEvent) }
} ?: run {
(executor ?: context.mainExecutor()).execute {
@@ -351,6 +355,7 @@ object EudiWallet {
documentManager(this@EudiWallet.documentManager)
config(config)
logger = this@EudiWallet.logger
+ ktorHttpClientFactory = _config.ktorHttpClientFactory
}.also {
when (val document = documentManager.getDocumentById(documentId)) {
is DeferredDocument -> it.issueDeferredDocument(document, executor, onResult)
@@ -399,6 +404,7 @@ object EudiWallet {
documentManager(this@EudiWallet.documentManager)
config(config)
logger = this@EudiWallet.logger
+ ktorHttpClientFactory = _config.ktorHttpClientFactory
}.also { it.resolveDocumentOffer(offerUri, executor, onResult) }
} ?: run {
(executor ?: context.mainExecutor()).execute {
diff --git a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManager.kt b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManager.kt
index ac56f04d..573bcd38 100644
--- a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManager.kt
+++ b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManager.kt
@@ -186,7 +186,7 @@ interface OpenId4VciManager {
/**
* Override the Ktor HTTP client factory
*/
- fun ktHttpClientFactory(factory: () -> HttpClient) = apply {
+ fun ktorHttpClientFactory(factory: () -> HttpClient) = apply {
this.ktorHttpClientFactory = factory
}
diff --git a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/ProcessDeferredOutcome.kt b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/ProcessDeferredOutcome.kt
index a92b4f0d..da59975b 100644
--- a/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/ProcessDeferredOutcome.kt
+++ b/wallet-core/src/main/java/eu/europa/ec/eudi/wallet/issue/openid4vci/ProcessDeferredOutcome.kt
@@ -37,7 +37,6 @@ internal class ProcessDeferredOutcome(
try {
when (outcome) {
is DeferredCredentialQueryOutcome.Errored -> {
- documentManager.deleteDocumentById(deferredDocument.id)
callback(
DeferredIssueResult.DocumentFailed(
deferredDocument.id,
diff --git a/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/EudiWalletConfigTest.kt b/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/EudiWalletConfigTest.kt
index c69c09c1..e2debdd0 100644
--- a/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/EudiWalletConfigTest.kt
+++ b/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/EudiWalletConfigTest.kt
@@ -21,30 +21,25 @@ import eu.europa.ec.eudi.wallet.transfer.openid4vp.ClientIdScheme
import eu.europa.ec.eudi.wallet.transfer.openid4vp.EncryptionAlgorithm
import eu.europa.ec.eudi.wallet.transfer.openid4vp.EncryptionMethod
import eu.europa.ec.eudi.wallet.transfer.openid4vp.PreregisteredVerifier
-import org.junit.Assert.*
-import org.junit.Before
-import org.junit.Test
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.`when`
+import io.mockk.every
+import io.mockk.mockk
+import org.junit.jupiter.api.Assertions.*
+import org.junit.jupiter.api.Test
import java.io.File
import java.security.cert.X509Certificate
class EudiWalletConfigTest {
- private lateinit var context: Context
-
- @Before
- fun setUp() {
- context = mock(Context::class.java)
- `when`(context.applicationContext).thenReturn(context)
- `when`(context.noBackupFilesDir).thenReturn(mock(File::class.java))
+ private val context: Context = mockk(relaxed = true) {
+ every { applicationContext } returns this@mockk
+ every { noBackupFilesDir } returns mockk()
}
@Test
fun testInvoke() {
val storageDir = File("/tmp")
- val readerCertificate1 = mock(X509Certificate::class.java)
- val readerCertificate2 = mock(X509Certificate::class.java)
+ val readerCertificate1 = mockk()
+ val readerCertificate2 = mockk()
val config = EudiWalletConfig(context) {
documentsStorageDir(storageDir)
userAuthenticationRequired(true)
@@ -114,38 +109,6 @@ class EudiWalletConfigTest {
assertEquals("eudi-openid4ci://authorize", config.openId4VciConfig?.authFlowRedirectionURI)
}
- @Test
- fun testBuilder() {
- val builder = EudiWalletConfig.Builder(context)
-
- builder.encryptDocumentsInStorage(false)
- builder.useHardwareToStoreKeys(false)
- builder.bleTransferMode(
- EudiWalletConfig.BLE_SERVER_PERIPHERAL_MODE,
- EudiWalletConfig.BLE_CLIENT_CENTRAL_MODE
- )
- builder.bleClearCacheEnabled(true)
- builder.userAuthenticationRequired(true)
- builder.userAuthenticationTimeOut(30_000L)
- builder.trustedReaderCertificates(listOf(mock(X509Certificate::class.java)))
-
- val config = builder.build()
-
- assertFalse(config.encryptDocumentsInStorage)
- assertFalse(config.useHardwareToStoreKeys)
- assertEquals(
- EudiWalletConfig.BLE_SERVER_PERIPHERAL_MODE or EudiWalletConfig.BLE_CLIENT_CENTRAL_MODE,
- config.bleTransferMode
- )
- assertTrue(config.bleCentralClientModeEnabled)
- assertTrue(config.blePeripheralServerModeEnabled)
- assertTrue(config.bleClearCacheEnabled)
- assertTrue(config.userAuthenticationRequired)
- assertEquals(30_000L, config.userAuthenticationTimeOut)
- assertEquals(1, config.trustedReaderCertificates?.size)
-
- }
-
@Test
fun testDefaultValues() {
val config = EudiWalletConfig(context) {}
diff --git a/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManagerBuilderTest.kt b/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManagerBuilderTest.kt
index 93e11c1c..5f7eca85 100644
--- a/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManagerBuilderTest.kt
+++ b/wallet-core/src/test/java/eu/europa/ec/eudi/wallet/issue/openid4vci/OpenId4VciManagerBuilderTest.kt
@@ -18,9 +18,9 @@ package eu.europa.ec.eudi.wallet.issue.openid4vci
import android.content.Context
import eu.europa.ec.eudi.wallet.document.DocumentManager
+import io.ktor.client.*
import io.mockk.mockk
-import org.junit.jupiter.api.Assertions.assertNotNull
-import org.junit.jupiter.api.Assertions.assertThrows
+import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Test
@@ -68,4 +68,19 @@ class OpenId4VciManagerBuilderTest {
builder.build()
}
}
+
+ @Test
+ fun `Builder sets the ktorClientFactory`() {
+ val ktorClientFactory: () -> HttpClient = mockk()
+ val builder = OpenId4VciManager.Builder(context)
+ .config(config)
+ .documentManager(documentManager)
+ .ktorHttpClientFactory(ktorClientFactory)
+
+ val manager = builder.build() as DefaultOpenId4VciManager
+
+ assertNotNull(manager)
+
+ assertSame(ktorClientFactory, manager.ktorHttpClientFactory)
+ }
}
\ No newline at end of file