libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 5cc79b332d9595500290523e4c60cc877b0a237f
parent 047d2d36186fdfa7142d42e867dbb5713ad226b3
Author: Antoine A <>
Date:   Tue, 23 Jan 2024 23:57:31 +0100

Update dependencies

Diffstat:
Mbuild.gradle | 10+++++-----
Mcommon/build.gradle | 6+++---
Mebics/build.gradle | 7+++----
Mnexus/build.gradle | 12+++---------
Mnexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt | 5+++--
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt | 1-
Mnexus/src/test/kotlin/ConfigLoading.kt | 6++----
Mnexus/src/test/kotlin/Parsing.kt | 20++++++++------------
8 files changed, 27 insertions(+), 40 deletions(-)

diff --git a/build.gradle b/build.gradle @@ -3,7 +3,7 @@ import org.apache.tools.ant.filters.ReplaceTokens plugins { - id("org.jetbrains.kotlin.jvm") version "1.9.20" + id("org.jetbrains.kotlin.jvm") version "1.9.22" id("org.jetbrains.dokka") version "1.9.10" id("idea") id("java-library") @@ -21,11 +21,11 @@ if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_17)){ allprojects { ext { - set("kotlin_version", "1.9.20") - set("ktor_version", "2.3.6") - set("clikt_version", "4.2.1") + set("kotlin_version", "1.9.22") + set("ktor_version", "2.3.7") + set("clikt_version", "4.2.2") set("coroutines_version", "1.7.3") - set("postgres_version", "42.7.0") + set("postgres_version", "42.7.1") set("junixsocket_version", "2.8.3") } diff --git a/common/build.gradle b/common/build.gradle @@ -16,12 +16,12 @@ compileTestKotlin.kotlinOptions.jvmTarget = "17" sourceSets.main.java.srcDirs = ["src/main/kotlin"] dependencies { - implementation("ch.qos.logback:logback-classic:1.4.5") + implementation("ch.qos.logback:logback-classic:1.4.14") // Crypto - implementation("org.bouncycastle:bcprov-jdk15on:1.69") + implementation("org.bouncycastle:bcprov-jdk18on:1.77") // Database helper implementation("org.postgresql:postgresql:$postgres_version") - implementation("com.zaxxer:HikariCP:5.0.1") + implementation("com.zaxxer:HikariCP:5.1.0") implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") implementation("io.ktor:ktor-server-test-host:$ktor_version") diff --git a/ebics/build.gradle b/ebics/build.gradle @@ -18,11 +18,10 @@ sourceSets.main.java.srcDirs = ["src/main/kotlin"] dependencies { implementation(project(":common")) - implementation("ch.qos.logback:logback-classic:1.4.5") // XML Stuff - implementation("javax.xml.bind:jaxb-api:2.3.1") - implementation("org.glassfish.jaxb:jaxb-runtime:2.3.1") - implementation("org.apache.santuario:xmlsec:2.2.2") + implementation("jakarta.xml.bind:jakarta.xml.bind-api:2.3.3") + implementation("org.glassfish.jaxb:jaxb-runtime:2.3.9") + implementation("org.apache.santuario:xmlsec:2.3.4") implementation("io.ktor:ktor-http:$ktor_version") implementation("org.jetbrains.kotlin:kotlin-test:$kotlin_version") diff --git a/nexus/build.gradle b/nexus/build.gradle @@ -25,12 +25,10 @@ dependencies { implementation(project(":ebics")) // XML parsing/binding and encryption - implementation("javax.xml.bind:jaxb-api:2.3.0") - implementation("org.glassfish.jaxb:jaxb-runtime:2.3.1") - implementation("org.apache.santuario:xmlsec:2.2.2") + implementation("jakarta.xml.bind:jakarta.xml.bind-api:2.3.3") // Compression - implementation("org.apache.commons:commons-compress:1.21") + implementation("org.apache.commons:commons-compress:1.25.0") // Command line parsing implementation("com.github.ajalt.clikt:clikt:$clikt_version") @@ -38,11 +36,8 @@ dependencies { // Ktor client library implementation("io.ktor:ktor-client-apache:$ktor_version") - // Brings the call-logging library too. - implementation("io.ktor:ktor-server-test-host:$ktor_version") - // PDF generation - implementation("com.itextpdf:itext7-core:7.1.16") + implementation("com.itextpdf:itext-core:8.0.2") // UNIX domain sockets support (used to connect to PostgreSQL) implementation("com.kohlschutter.junixsocket:junixsocket-core:$junixsocket_version") @@ -51,7 +46,6 @@ dependencies { implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") // Unit testing - testImplementation("org.junit.jupiter:junit-jupiter:5.7.1") testImplementation("org.jetbrains.kotlin:kotlin-test:$kotlin_version") testImplementation("io.ktor:ktor-client-mock:$ktor_version") } diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/EbicsSetup.kt @@ -54,7 +54,7 @@ inline fun <reified T> syncJsonToDisk(obj: T, path: String) { try { // Write to temp file then rename to enable atomicity when possible val path = Path(path).absolute() - val tmp = Files.createTempFile(path.parent, "tmp_", "_${path.fileName}") + val tmp = Files.createTempFile(path.parent, "tmp_", "_${path.fileName}") tmp.writeText(content) tmp.moveTo(path, StandardCopyOption.REPLACE_EXISTING); } catch (e: Exception) { @@ -95,7 +95,8 @@ private fun preparePrivateKeys(path: String): ClientPrivateKeysFile { logger.info("New client keys created at: $path") return newKeys } catch (e: Exception) { - throw Exception("Could not create client keys at $path", e) + throw Exception("Could not create client keys at $path", e) + // TODO Better log } } diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics2.kt @@ -24,7 +24,6 @@ package tech.libeufin.nexus.ebics import io.ktor.client.* -import org.bouncycastle.util.encoders.UTF8 import org.slf4j.Logger import org.slf4j.LoggerFactory import tech.libeufin.nexus.BankPublicKeysFile diff --git a/nexus/src/test/kotlin/ConfigLoading.kt b/nexus/src/test/kotlin/ConfigLoading.kt @@ -18,12 +18,10 @@ */ import org.junit.Test -import org.junit.jupiter.api.assertThrows import tech.libeufin.nexus.EbicsSetupConfig import tech.libeufin.nexus.NEXUS_CONFIG_SOURCE import tech.libeufin.nexus.getFrequencyInSeconds -import kotlin.test.assertEquals -import kotlin.test.assertNull +import kotlin.test.* import tech.libeufin.common.* class ConfigLoading { @@ -59,7 +57,7 @@ class ConfigLoading { # All the other defaults won't be loaded. BANK_DIALECT = postfinance """.trimIndent()) - assertThrows<TalerConfigError> { + assertFailsWith<TalerConfigError> { EbicsSetupConfig(handle) } } diff --git a/nexus/src/test/kotlin/Parsing.kt b/nexus/src/test/kotlin/Parsing.kt @@ -18,30 +18,26 @@ */ import org.junit.Test -import org.junit.jupiter.api.assertThrows import tech.libeufin.nexus.* import tech.libeufin.common.* import tech.libeufin.common.parseBookDate import tech.libeufin.common.parseCamtTime import java.lang.StringBuilder -import kotlin.test.assertEquals -import kotlin.test.assertNotNull -import kotlin.test.assertNull -import kotlin.test.assertTrue +import kotlin.test.* class Parsing { @Test fun gregorianTime() { parseCamtTime("2023-11-06T20:00:00") - assertThrows<Exception> { parseCamtTime("2023-11-06T20:00:00+01:00") } - assertThrows<Exception> { parseCamtTime("2023-11-06T20:00:00Z") } + assertFailsWith<Exception> { parseCamtTime("2023-11-06T20:00:00+01:00") } + assertFailsWith<Exception> { parseCamtTime("2023-11-06T20:00:00Z") } } @Test fun bookDateTest() { parseBookDate("1970-01-01") - assertThrows<Exception> { parseBookDate("1970-01-01T00:00:01Z") } + assertFailsWith<Exception> { parseBookDate("1970-01-01T00:00:01Z") } } @Test @@ -87,15 +83,15 @@ class Parsing { @Test // Could be moved in a dedicated Amounts.kt test module. fun generateCurrencyAgnosticAmount() { - assertThrows<Exception> { + assertFailsWith<Exception> { // Too many fractional digits. getAmountNoCurrency(TalerAmount(1, 123456789, "KUDOS")) } - assertThrows<Exception> { + assertFailsWith<Exception> { // Nexus doesn't support sub-cents. getAmountNoCurrency(TalerAmount(1, 12345678, "KUDOS")) } - assertThrows<Exception> { + assertFailsWith<Exception> { // Nexus doesn't support sub-cents. getAmountNoCurrency(TalerAmount(0, 1, "KUDOS")) } @@ -122,6 +118,6 @@ class Parsing { val invalidChar = StringBuilder(valid) invalidChar.setCharAt(10, '*') assertNull(isReservePub(invalidChar.toString())) - // assertNull(isReservePub(valid.dropLast(1))) // FIXME: this fails now because the decoder is buggy. + assertNull(isReservePub(valid.dropLast(1))) } } \ No newline at end of file