commit bf264dbc3f82ee2a5988381785e29fd286b6fdbf
parent bd6cbe43c27144b5537cd96e3745777351768272
Author: Florian Dold <florian.dold@gmail.com>
Date: Thu, 31 Oct 2019 19:41:53 +0100
clean up tests and fix annotations
Diffstat:
13 files changed, 260 insertions(+), 341 deletions(-)
diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsMessages.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_h004/EbicsMessages.kt
@@ -202,29 +202,29 @@ class DataEncryptionInfo {
propOrder = ["transactionPhase", "segmentNumber", "orderID", "returnCode", "reportText", "any"]
)
class EbicsResponseMutableHeaderType {
- @XmlElement(name = "TransactionPhase", required = true)
- @XmlSchemaType(name = "token")
+ @get:XmlElement(name = "TransactionPhase", required = true)
+ @get:XmlSchemaType(name = "token")
lateinit var transactionPhase: TransactionPhaseType
- @XmlElement(name = "SegmentNumber")
+ @get:XmlElement(name = "SegmentNumber")
var segmentNumber: SegmentNumber? = null
- @XmlElement(name = "OrderID")
- @XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- @XmlSchemaType(name = "token")
+ @get:XmlElement(name = "OrderID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
var orderID: String? = null
- @XmlElement(name = "ReturnCode", required = true)
- @XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- @XmlSchemaType(name = "token")
+ @get:XmlElement(name = "ReturnCode", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
lateinit var returnCode: String
- @XmlElement(name = "ReportText", required = true)
- @XmlJavaTypeAdapter(NormalizedStringAdapter::class)
- @XmlSchemaType(name = "normalizedString")
+ @get:XmlElement(name = "ReportText", required = true)
+ @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class)
+ @get:XmlSchemaType(name = "normalizedString")
lateinit var reportText: String
- @XmlAnyElement(lax = true)
+ @get:XmlAnyElement(lax = true)
var any: List<Any>? = null
@XmlAccessorType(XmlAccessType.NONE)
@@ -261,23 +261,24 @@ enum class TransactionPhaseType(value: String) {
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "ResponseStaticHeaderType", propOrder = ["transactionID", "numSegments"])
class ResponseStaticHeaderType {
- @XmlElement(name = "TransactionID", type = String::class)
- @XmlJavaTypeAdapter(HexBinaryAdapter::class)
- @XmlSchemaType(name = "hexBinary")
+ @get:XmlElement(name = "TransactionID", type = String::class)
+ @get:XmlJavaTypeAdapter(HexBinaryAdapter::class)
+ @get:XmlSchemaType(name = "hexBinary")
var transactionID: ByteArray? = null
- @XmlElement(name = "NumSegments")
- @XmlSchemaType(name = "positiveInteger")
+ @get:XmlElement(name = "NumSegments")
+ @get:XmlSchemaType(name = "positiveInteger")
var numSegments: BigInteger? = null
}
@XmlAccessorType(XmlAccessType.NONE)
+@XmlType(name = "")
class TimestampBankParameter {
- @XmlValue
+ @get:XmlValue
lateinit var value: XMLGregorianCalendar
- @XmlAttribute(name = "authenticate", required = true)
+ @get:XmlAttribute(name = "authenticate", required = true)
var authenticate: Boolean = false
}
@@ -321,13 +322,13 @@ class EbicsResponse {
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "", propOrder = ["dataTransfer", "returnCode", "timestampBankParameter"])
class Body {
- @XmlElement(name = "DataTransfer")
+ @get:XmlElement(name = "DataTransfer")
var dataTransfer: DataTransferResponseType? = null
- @XmlElement(name = "ReturnCode", required = true)
+ @get:XmlElement(name = "ReturnCode", required = true)
lateinit var returnCode: ReturnCode
- @XmlElement(name = "TimestampBankParameter")
+ @get:XmlElement(name = "TimestampBankParameter")
var timestampBankParameter: TimestampBankParameter? = null
@XmlAccessorType(XmlAccessType.NONE)
@@ -365,13 +366,13 @@ class EbicsResponse {
}
-@XmlAccessorType(XmlAccessType.NONE)
@XmlType(
name = "PubKeyValueType", propOrder = [
"rsaKeyValue",
"timeStamp"
]
)
+@XmlAccessorType(XmlAccessType.NONE)
class PubKeyValueType {
@get:XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
lateinit var rsaKeyValue: RSAKeyValueType
@@ -379,9 +380,6 @@ class PubKeyValueType {
@get:XmlElement(name = "TimeStamp", required = false)
@get:XmlSchemaType(name = "dateTime")
var timeStamp: XMLGregorianCalendar? = null
-
- @get:XmlAnyElement(lax = true)
- var any: List<Any>? = null
}
@@ -434,6 +432,7 @@ class EncryptionPubKeyInfoType {
name = "HIARequestOrderDataType",
propOrder = ["authenticationPubKeyInfo", "encryptionPubKeyInfo", "partnerID", "userID", "any"]
)
+@XmlRootElement(name = "HIARequestOrderData")
class HIARequestOrderDataType {
@get:XmlElement(name = "AuthenticationPubKeyInfo", required = true)
lateinit var authenticationPubKeyInfo: AuthenticationPubKeyInfoType
@@ -491,19 +490,19 @@ class EbicsKeyManagementResponse {
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "", propOrder = ["orderID", "returnCode", "reportText"])
class KeyManagementResponseMutableHeaderType {
- @XmlElement(name = "OrderID")
- @XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- @XmlSchemaType(name = "token")
+ @get:XmlElement(name = "OrderID")
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
var orderID: String? = null
- @XmlElement(name = "ReturnCode", required = true)
- @XmlJavaTypeAdapter(CollapsedStringAdapter::class)
- @XmlSchemaType(name = "token")
+ @get:XmlElement(name = "ReturnCode", required = true)
+ @get:XmlJavaTypeAdapter(CollapsedStringAdapter::class)
+ @get:XmlSchemaType(name = "token")
lateinit var returnCode: String
- @XmlElement(name = "ReportText", required = true)
- @XmlJavaTypeAdapter(NormalizedStringAdapter::class)
- @XmlSchemaType(name = "normalizedString")
+ @get:XmlElement(name = "ReportText", required = true)
+ @get:XmlJavaTypeAdapter(NormalizedStringAdapter::class)
+ @get:XmlSchemaType(name = "normalizedString")
lateinit var reportText: String
}
}
@@ -511,13 +510,13 @@ class EbicsKeyManagementResponse {
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "", propOrder = ["dataTransfer", "returnCode", "timestampBankParameter"])
class Body {
- @XmlElement(name = "DataTransfer")
+ @get:XmlElement(name = "DataTransfer")
val dataTransfer: DataTransfer? = null
- @XmlElement(name = "ReturnCode", required = true)
+ @get:XmlElement(name = "ReturnCode", required = true)
lateinit var returnCode: ReturnCode
- @XmlElement(name = "TimestampBankParameter")
+ @get:XmlElement(name = "TimestampBankParameter")
var timestampBankParameter: TimestampBankParameter? = null
@XmlAccessorType(XmlAccessType.NONE)
diff --git a/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/EbicsMessages.kt b/sandbox/src/main/kotlin/tech/libeufin/schema/ebics_s001/EbicsMessages.kt
@@ -36,11 +36,11 @@ import javax.xml.datatype.XMLGregorianCalendar
]
)
class PubKeyValueType {
- @XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
+ @get:XmlElement(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
lateinit var rsaKeyValue: RSAKeyValueType
- @XmlElement(name = "TimeStamp")
- @XmlSchemaType(name = "dateTime")
+ @get:XmlElement(name = "TimeStamp")
+ @get:XmlSchemaType(name = "dateTime")
var timeStamp: XMLGregorianCalendar? = null
@XmlAnyElement(lax = true)
diff --git a/sandbox/src/test/kotlin/EbicsMessagesTest.kt b/sandbox/src/test/kotlin/EbicsMessagesTest.kt
@@ -0,0 +1,169 @@
+package tech.libeufin.sandbox
+
+import junit.framework.TestCase.assertEquals
+import org.apache.xml.security.binding.xmldsig.SignatureType
+import org.junit.Test
+import org.w3c.dom.Element
+import tech.libeufin.schema.ebics_h004.*
+import tech.libeufin.schema.ebics_hev.HEVResponse
+import tech.libeufin.schema.ebics_hev.SystemReturnCodeType
+import tech.libeufin.schema.ebics_s001.SignaturePubKeyOrderData
+import kotlin.test.assertNotNull
+import kotlin.test.assertTrue
+
+class EbicsMessagesTest {
+ /**
+ * Tests the JAXB instantiation of non-XmlRootElement documents,
+ * as notably are the inner XML strings carrying keys in INI/HIA
+ * messages.
+ */
+ @Test
+ fun importNonRoot() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val ini = classLoader.getResource("ebics_ini_inner_key.xml")
+ val jaxb = XMLUtil.convertStringToJaxb<SignaturePubKeyOrderData>(ini.readText())
+ assertEquals("A006", jaxb.value.signaturePubKeyInfo.signatureVersion)
+ }
+
+ /**
+ * Test string -> JAXB
+ */
+ @Test
+ fun stringToJaxb() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val ini = classLoader.getResource("ebics_ini_request_sample.xml")
+ val jaxb = XMLUtil.convertStringToJaxb<EbicsUnsecuredRequest>(ini.readText())
+ println("jaxb loaded")
+ assertEquals(
+ "INI",
+ jaxb.value.header.static.orderDetails.orderType
+ )
+ }
+
+ /**
+ * Test JAXB -> string
+ */
+ @Test
+ fun jaxbToString() {
+ val hevResponseJaxb = HEVResponse().apply {
+ this.systemReturnCode = SystemReturnCodeType().apply {
+ this.reportText = "[EBICS_OK]"
+ this.returnCode = "000000"
+ }
+ this.versionNumber = listOf(HEVResponse.VersionNumber.create("H004", "02.50"))
+ }
+ XMLUtil.convertJaxbToString(hevResponseJaxb)
+ }
+
+
+ /**
+ * Test DOM -> JAXB
+ */
+ @Test
+ fun domToJaxb() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val ini = classLoader.getResource("ebics_ini_request_sample.xml")!!
+ val iniDom = XMLUtil.parseStringIntoDom(ini.readText())
+ XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>(
+ EbicsUnsecuredRequest::class.java,
+ iniDom
+ )
+ }
+
+ @Test
+ fun testKeyMgmgResponse() {
+ val responseXml = EbicsKeyManagementResponse().apply {
+ header = EbicsKeyManagementResponse.Header().apply {
+ mutable = EbicsKeyManagementResponse.Header.KeyManagementResponseMutableHeaderType().apply {
+ reportText = "foo"
+ returnCode = "bar"
+ }
+ _static = EbicsKeyManagementResponse.Header.EmptyStaticHeader()
+ }
+ version = "H004"
+ body = EbicsKeyManagementResponse.Body().apply {
+ returnCode = EbicsKeyManagementResponse.Body.ReturnCode().apply {
+ authenticate = true
+ value = "000000"
+ }
+ }
+ }
+ val text = XMLUtil.convertJaxbToString(responseXml)
+ assertTrue(text.isNotEmpty())
+ }
+
+ @Test
+ fun testParseHiaRequestOrderData() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val hia = classLoader.getResource("hia_request_order_data.xml")!!.readText()
+ XMLUtil.convertStringToJaxb<HIARequestOrderDataType>(hia)
+ }
+
+ @Test
+ fun hiaLoad() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val hia = classLoader.getResource("hia_request.xml")!!
+ val hiaDom = XMLUtil.parseStringIntoDom(hia.readText())
+ val x: Element = hiaDom.getElementsByTagNameNS(
+ "urn:org:ebics:H004",
+ "OrderDetails"
+ )?.item(0) as Element
+
+ x.setAttributeNS(
+ "http://www.w3.org/2001/XMLSchema-instance",
+ "type",
+ "UnsecuredReqOrderDetailsType"
+ )
+
+ XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>(
+ EbicsUnsecuredRequest::class.java,
+ hiaDom
+ )
+ }
+
+ @Test
+ fun loadInnerKey() {
+ val jaxbKey = run {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val file = classLoader.getResource(
+ "ebics_ini_inner_key.xml"
+ )
+ assertNotNull(file)
+ XMLUtil.convertStringToJaxb<SignaturePubKeyOrderData>(file.readText())
+ }
+
+ val modulus = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.modulus
+ val exponent = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.exponent
+ CryptoUtil.loadRsaPublicKeyFromComponents(modulus, exponent)
+ }
+
+ @Test
+ fun loadIniMessage() {
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val text = classLoader.getResource("ebics_ini_request_sample.xml")!!.readText()
+ XMLUtil.convertStringToJaxb<EbicsUnsecuredRequest>(text)
+ }
+
+ @Test
+ fun loadResponse() {
+ val response = EbicsResponse().apply {
+ version = "H004"
+ header = EbicsResponse.Header().apply {
+ _static = ResponseStaticHeaderType()
+ mutable = EbicsResponseMutableHeaderType().apply {
+ this.reportText = "foo"
+ this.returnCode = "bar"
+ this.transactionPhase = TransactionPhaseType.INITIALISATION
+ }
+ }
+ authSignature = SignatureType()
+ body = EbicsResponse.Body().apply {
+ returnCode = EbicsResponse.Body.ReturnCode().apply {
+ authenticate = true
+ value = "asdf"
+ }
+ }
+ }
+ print(XMLUtil.convertJaxbToString(response))
+ }
+}
+\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/HiaLoadTest.kt b/sandbox/src/test/kotlin/HiaLoadTest.kt
@@ -1,32 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import org.w3c.dom.Element
-import tech.libeufin.schema.ebics_h004.EbicsUnsecuredRequest
-
-class HiaLoadTest {
-
- @Test
- fun hiaLoad() {
-
- val processor = XMLUtil()
- val classLoader = ClassLoader.getSystemClassLoader()
- val hia = classLoader.getResource("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ebicsUnsecuredRequest xmlns=\"urn:org:ebics:H004\"\n xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"urn:org:ebics:H004 ebics_keymgmt_request_H004.xsd\"\n Version=\"H004\"\n Revision=\"1\">\n <header authenticate=\"true\">\n <static>\n <HostID>LIBEUFIN-SANDBOX</HostID>\n <PartnerID>CUSTM001</PartnerID>\n <UserID>u1</UserID>\n <OrderDetails>\n <OrderType>HIA</OrderType>\n <OrderAttribute>DZNNN</OrderAttribute>\n </OrderDetails>\n <SecurityMedium>0000</SecurityMedium>\n </static>\n <mutable/>\n </header>\n <body>\n <DataTransfer>\n <OrderData>eJzNlsmyo0YWhvf1FBW3l0SZZBY3VHIwCwESM0g7ZpCYxAxPb/mWh7ZdrlUvmhX8Z/gzyPNl5P7npSo/T0nXF0399Q35Cbz9fPi0P8qMmTzHpB8uXZx0fDAEn1+Jdf8e91/f8mFo32F4nuefZuynpstgFAAAAxp+5cR9kf3n7dPn7z0fLb6+jV39/qp6T8Ii6t+PAOA/yn9PXh3/YvpR9+FrAYD8sHbpi39ZLwL7mmpFeVIFX4q6H4I6St4Or157ZhzypB6KKBheP0UfQyVZ5TptDh9G+2+CG5RjcvjNeh/376bF/F3+FtCaeCzH/sCccjF6CEpIHO9qNg7sk6vEJqcu5+zCjy3Te4YaE00r3WCcLidQGGEqJ4uoRMrcaQFlAnAK2xDVb1T2KGFMbW87hbMe9m5XzjCb6kuIareAuStQx66uzs+PUlk5oQim7B6eoNW2qo4Ljxu4jbFWLM4M7n4geL2ZNSiMnxum8+d+YTntqIqVV3eS06KTHYeBuOmqaXA1Ar/csDRAAFFNmr8cGc07u8ZC9TidnjhurtHURIQpvLBIf6Uj/5xQT2pGj62hFy2jbldl1wQtTkKbBKm0d2pWZIxX6Q6brViRT8Hl5UeW6FnsgIC1YQslccVX8AhjALHjgHF/ENYD8+3O7ZLOjPhJWvOeMniZ3ayU8F9rAxgdA9xMO1mN0ITDKKWuzZ23hRWH6P3ZKRn3FBhahVPVUOgmF1Br6mWEGkoWQ9h1eXcWlHsA5sGwVg6PurNwXCdWaw70kceyi3Gye6IjoQTPmksNZ5SAyYFlYQD2HLzenvaur+j7YOw20fN9ZEQK+yYyl0AYctO+tL7HmmVR6lw3hpVuLQpfJxvUcjJfsQ+pQCzmVCuiBpbg+DR1uktRiLu3+LHTSiTqQrWN+QF3a4lGdo/NMirzSlakYYUsCgekexluTTKjt4LKV65gMNMX5fIM3xBPu3PUGepNk19iM6yPa4K3z9m8X4KU3gVayt7E+jGR7DWwoZlcyj38X4P7l2kWlrapX3QcGINhP9L+UH6HAf4+DXu7qBJrCKr2gAJk9wVBvgDERpB3BLxjxG0P/xn/Bhr8D9L+hqb77dg6+ACge/j7sV+Bhn9E9F6oo25t/7eoqyBWNpkKhBnWdoKGuhmCBRJ82aiLXKO+c69WObdyykqpGrcg2A+PPp8it7LPdjNhK5BiMEIn6h6QgJHjEWsmk3Jz+9arzzIBzYNz3qj0mNT8xVTYUR8xVxXWklfOR9nz6FQ6z/gI7Gwkg6kTjx2OnisyF3DN823VzoSr4g5ryJwbHMquYT4NDSEM0PbsLwYsRRPq9lvpA5nnoqlXi9vTCYT4FkyoE7QDt5aBImu2fMdO5d0bBJftAd5cSFpop0IvJKXEH4KxYVdK8B7lsp0JfSmIiwiriH9a+plTZiGxZc8hezlARdah8KgLdshknHN6xLyi0SWHjCm6cYu2J4n6VkCYMjfdzMMxRs1sRCsAt9LXlrr01YT4jeM2RE95x8qg+zShwUrm7MyWCdonrmK+SL8U8gsGwbCZbECR3PP5ihjNrA6ryssn9bR6BnTlRnBkNYmdG6aEuzBLGnrk1WxY2VwBGH5S6tCp/VFGBobwT2FY2JSrPquMjHjlFnGFWDCutPVlcNIwljSFU34Ws5h4bdgq2eKUHV+jcHVQx5v74z2uToGp3xmRjGxpTkTEnnnaf7zQb+rdLpo0DlJL7ZwxCJ8OJIRM6iQvetZRo4sQoCTSbQp1HVovaZ95jUK/zljDup8ehRVrEBGCRGZmzukmaSZn61EXF/pRszUNjc8sVSdM9+Wuq1WA6f+vqP+J5e8oCx+Y/1P/QPzfKN7rQTfUSSfzB8HnjsxZEl5uf2i/Zjj9x6vNqIK5h3/7+rSHv3MJOnz6BXLJ7gw=</OrderData>\n </DataTransfer>\n </body>\n</ebicsUnsecuredRequest>\n")
- val hiaDom = XMLUtil.parseStringIntoDom(hia.readText())
- val x: Element = hiaDom.getElementsByTagNameNS(
- "urn:org:ebics:H004",
- "OrderDetails"
- )?.item(0) as Element
-
- x.setAttributeNS(
- "http://www.w3.org/2001/XMLSchema-instance",
- "type",
- "UnsecuredReqOrderDetailsType"
- )
-
- XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>(
- EbicsUnsecuredRequest::class.java,
- hiaDom
- )
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/InnerIniLoadTest.kt b/sandbox/src/test/kotlin/InnerIniLoadTest.kt
@@ -1,31 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import tech.libeufin.schema.ebics_h004.EbicsUnsecuredRequest
-import tech.libeufin.schema.ebics_s001.SignaturePubKeyOrderData
-import kotlin.test.assertNotNull
-
-class InnerIniLoadTest {
- @Test
- fun loadInnerKey() {
- val jaxbKey = run {
- val classLoader = ClassLoader.getSystemClassLoader()
- val file = classLoader.getResource(
- "ebics_ini_inner_key.xml"
- )
- assertNotNull(file)
- XMLUtil.convertStringToJaxb<SignaturePubKeyOrderData>(file.readText())
- }
-
- val modulus = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.modulus
- val exponent = jaxbKey.value.signaturePubKeyInfo.pubKeyValue.rsaKeyValue.exponent
- CryptoUtil.loadRsaPublicKeyFromComponents(modulus, exponent)
- }
-
- @Test
- fun loadIniMessage() {
- val classLoader = ClassLoader.getSystemClassLoader()
- val text = classLoader.getResource("ebics_ini_request_sample.xml")!!.readText()
- XMLUtil.convertStringToJaxb<EbicsUnsecuredRequest>(text)
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/JaxbTest.kt b/sandbox/src/test/kotlin/JaxbTest.kt
@@ -1,95 +0,0 @@
-package tech.libeufin.sandbox
-
-import junit.framework.TestCase.assertEquals
-import org.junit.Test
-import tech.libeufin.schema.ebics_h004.EbicsKeyManagementResponse
-import tech.libeufin.schema.ebics_h004.EbicsUnsecuredRequest
-import tech.libeufin.schema.ebics_h004.HIARequestOrderDataType
-import tech.libeufin.schema.ebics_hev.HEVResponse
-import tech.libeufin.schema.ebics_hev.SystemReturnCodeType
-import tech.libeufin.schema.ebics_s001.SignaturePubKeyOrderData
-import kotlin.test.assertTrue
-
-class JaxbTest {
- /**
- * Tests the JAXB instantiation of non-XmlRootElement documents,
- * as notably are the inner XML strings carrying keys in INI/HIA
- * messages.
- */
- @Test
- fun importNonRoot() {
- val classLoader = ClassLoader.getSystemClassLoader()
- val ini = classLoader.getResource("ebics_ini_inner_key.xml")
- val jaxb = XMLUtil.convertStringToJaxb<SignaturePubKeyOrderData>(ini.readText())
- assertEquals("A006", jaxb.value.signaturePubKeyInfo.signatureVersion)
- }
-
- /**
- * Test string -> JAXB
- */
- @Test
- fun stringToJaxb() {
- val classLoader = ClassLoader.getSystemClassLoader()
- val ini = classLoader.getResource("ebics_ini_request_sample_patched.xml")
- val jaxb = XMLUtil.convertStringToJaxb<EbicsUnsecuredRequest>(ini.readText())
- println("jaxb loaded")
- assertEquals(
- "INI",
- jaxb.value.header.static.orderDetails.orderType
- )
- }
-
- /**
- * Test JAXB -> string
- */
- @Test
- fun jaxbToString() {
- val hevResponseJaxb = HEVResponse().apply {
- this.systemReturnCode = SystemReturnCodeType().apply {
- this.reportText = "[EBICS_OK]"
- this.returnCode = "000000"
- }
- this.versionNumber = listOf(HEVResponse.VersionNumber.create("H004", "02.50"))
- }
- XMLUtil.convertJaxbToString(hevResponseJaxb)
- }
-
-
- /**
- * Test DOM -> JAXB
- */
- @Test
- fun domToJaxb() {
- val classLoader = ClassLoader.getSystemClassLoader()
- val ini = classLoader.getResource("ebics_ini_request_sample_patched.xml")
- val iniDom = XMLUtil.parseStringIntoDom(ini.readText())
- XMLUtil.convertDomToJaxb<EbicsUnsecuredRequest>(
- EbicsUnsecuredRequest::class.java,
- iniDom
- )
- }
-
- @Test
- fun testKeyMgmgResponse() {
- val responseXml = EbicsKeyManagementResponse().apply {
- header = EbicsKeyManagementResponse.Header().apply {
- mutable = EbicsKeyManagementResponse.Header.KeyManagementResponseMutableHeaderType().apply {
- reportText = "foo"
- returnCode = "bar"
- }
- _static = EbicsKeyManagementResponse.Header.EmptyStaticHeader()
- }
- version = "H004"
- body = EbicsKeyManagementResponse.Body()
- }
- val text = XMLUtil.convertJaxbToString(responseXml)
- assertTrue(text.isNotEmpty())
- }
-
- @Test
- fun testParseHiaRequestOrderData() {
- val classLoader = ClassLoader.getSystemClassLoader()
- val hia = classLoader.getResource("hia_request_order_data.xml")!!.readText()
- XMLUtil.convertStringToJaxb<HIARequestOrderDataType>(hia)
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/KeyCmpTest.kt b/sandbox/src/test/kotlin/KeyCmpTest.kt
@@ -1,26 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import java.math.BigInteger
-import junit.framework.TestCase.assertTrue
-
-class KeyCmpTest {
-
- /**
- * This test simulates the way keys are compared when they get
- * confirmed via the "keyletter". The scenario has one format
- * (ByteArray) for keys stored in the database, and another (hexadecimanl
- * string) for keys communicated in the keyletter.
- */
- @Test
- fun bytesCmp() {
-
- val HEX_STRING = "AA" // as coming from the keyletter
- val ba = byteArrayOf(0xAA.toByte()) // as coming from the database
-
- val x = HEX_STRING.toBigInteger(16)
- val y = BigInteger(1, ba)
-
- assertTrue(x == y)
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/LogTest.kt b/sandbox/src/test/kotlin/LogTest.kt
@@ -10,7 +10,6 @@ class LogTest {
@Test
fun logLine() {
-
val loggerSandbox = LoggerFactory.getLogger("tech.libeufin.sandbox")
val loggerNexus = LoggerFactory.getLogger("tech.libeufin.nexus")
loggerSandbox.info("line")
diff --git a/sandbox/src/test/kotlin/ResponseTest.kt b/sandbox/src/test/kotlin/ResponseTest.kt
@@ -1,21 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.apache.xml.security.binding.xmldsig.SignatureType
-import org.junit.Test
-import tech.libeufin.schema.ebics_h004.EbicsResponse
-
-class ResponseTest {
-
- @Test
- fun loadResponse() {
- val response = EbicsResponse().apply {
- version = "H004"
- header = EbicsResponse.Header().apply {
- }
- authSignature = SignatureType()
- body = EbicsResponse.Body()
- }
- print(XMLUtil.convertJaxbToString(response))
- }
-
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/XmlSigTest.kt b/sandbox/src/test/kotlin/XmlSigTest.kt
@@ -1,33 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import java.security.KeyPairGenerator
-import kotlin.test.*
-
-
-
-class XmlSigTest {
-
- @Test
- fun basicSigningTest() {
- val doc = XMLUtil.parseStringIntoDom("""
- <foo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
- <AuthSignature />
- <bar authenticate='true'>bla</bar>Hello World
- <spam>
- eggs
-
- ham
- </spam>
- </foo>
- """.trimIndent())
- val kpg = KeyPairGenerator.getInstance("RSA")
- kpg.initialize(2048)
- val pair = kpg.genKeyPair()
- val otherPair = kpg.genKeyPair()
- XMLUtil.signEbicsDocument(doc, pair.private)
- println(XMLUtil.convertDomToString(doc))
- assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public))
- assertFalse(XMLUtil.verifyEbicsDocument(doc, otherPair.public))
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/XmlTest.kt b/sandbox/src/test/kotlin/XmlTest.kt
@@ -1,24 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import org.junit.Assert.*
-import javax.xml.transform.stream.StreamSource
-
-class XmlTest {
-
- val processor = tech.libeufin.sandbox.XMLUtil()
-
- @Test
- fun hevValidation(){
- val classLoader = ClassLoader.getSystemClassLoader()
- val hev = classLoader.getResourceAsStream("ebics_hev.xml")
- assertTrue(processor.validate(StreamSource(hev)))
- }
-
- @Test
- fun iniValidation(){
- val classLoader = ClassLoader.getSystemClassLoader()
- val ini = classLoader.getResourceAsStream("ebics_ini_request_sample.xml")
- assertTrue(processor.validate(StreamSource(ini)))
- }
-}
-\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/XmlUtilTest.kt b/sandbox/src/test/kotlin/XmlUtilTest.kt
@@ -0,0 +1,48 @@
+package tech.libeufin.sandbox
+
+import org.junit.Test
+import org.junit.Assert.*
+import java.security.KeyPairGenerator
+import javax.xml.transform.stream.StreamSource
+
+class XmlUtilTest {
+
+ val processor = tech.libeufin.sandbox.XMLUtil()
+
+ @Test
+ fun hevValidation(){
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val hev = classLoader.getResourceAsStream("ebics_hev.xml")
+ assertTrue(processor.validate(StreamSource(hev)))
+ }
+
+ @Test
+ fun iniValidation(){
+ val classLoader = ClassLoader.getSystemClassLoader()
+ val ini = classLoader.getResourceAsStream("ebics_ini_request_sample.xml")
+ assertTrue(processor.validate(StreamSource(ini)))
+ }
+
+ @Test
+ fun basicSigningTest() {
+ val doc = XMLUtil.parseStringIntoDom("""
+ <foo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
+ <AuthSignature />
+ <bar authenticate='true'>bla</bar>Hello World
+ <spam>
+ eggs
+
+ ham
+ </spam>
+ </foo>
+ """.trimIndent())
+ val kpg = KeyPairGenerator.getInstance("RSA")
+ kpg.initialize(2048)
+ val pair = kpg.genKeyPair()
+ val otherPair = kpg.genKeyPair()
+ XMLUtil.signEbicsDocument(doc, pair.private)
+ println(XMLUtil.convertDomToString(doc))
+ kotlin.test.assertTrue(XMLUtil.verifyEbicsDocument(doc, pair.public))
+ kotlin.test.assertFalse(XMLUtil.verifyEbicsDocument(doc, otherPair.public))
+ }
+}
+\ No newline at end of file
diff --git a/sandbox/src/test/kotlin/XsiTypeAttributeTest.kt b/sandbox/src/test/kotlin/XsiTypeAttributeTest.kt
@@ -1,28 +0,0 @@
-package tech.libeufin.sandbox
-
-import org.junit.Test
-import org.w3c.dom.Element
-import tech.libeufin.schema.ebics_h004.EbicsUnsecuredRequest
-
-class XsiTypeAttributeTest {
-
- @Test
- fun domToJaxb() {
-
- val processor = XMLUtil()
- val classLoader = ClassLoader.getSystemClassLoader()
- val ini = classLoader.getResource("ebics_ini_request_sample.xml")
- val iniDom = XMLUtil.parseStringIntoDom(ini.readText())
- val x: Element = iniDom.getElementsByTagName("OrderDetails")?.item(0) as Element
-
- x.setAttributeNS(
- "http://www.w3.org/2001/XMLSchema-instance",
- "type",
- "UnsecuredReqOrderDetailsType"
- )
-
- XMLUtil.convertDomToJaxb(
- EbicsUnsecuredRequest::class.java,
- iniDom)
- }
-}
-\ No newline at end of file