gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: implement simulate-incoming-transactio


From: gnunet
Subject: [libeufin] branch master updated: implement simulate-incoming-transactions cli command
Date: Fri, 06 Aug 2021 00:08:01 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 7060943  implement simulate-incoming-transactions cli command
7060943 is described below

commit 70609437afe1e2f928ecd18a043556195f02623b
Author: Florian Dold <florian@dold.me>
AuthorDate: Fri Aug 6 00:07:56 2021 +0200

    implement simulate-incoming-transactions cli command
---
 cli/bin/libeufin-cli                               | 37 +++++--------------
 .../tech/libeufin/sandbox/EbicsProtocolBackend.kt  |  6 ++--
 .../src/main/kotlin/tech/libeufin/sandbox/JSON.kt  | 41 ----------------------
 .../src/main/kotlin/tech/libeufin/sandbox/Main.kt  | 35 ++----------------
 .../kotlin/tech/libeufin/sandbox/bankAccount.kt    |  9 ++---
 sandbox/src/test/kotlin/CamtTest.kt                |  6 ++--
 util/src/main/kotlin/JSON.kt                       |  7 ++--
 util/src/main/kotlin/Payto.kt                      |  3 +-
 8 files changed, 24 insertions(+), 120 deletions(-)

diff --git a/cli/bin/libeufin-cli b/cli/bin/libeufin-cli
index 6bab568..9d81d24 100755
--- a/cli/bin/libeufin-cli
+++ b/cli/bin/libeufin-cli
@@ -1054,54 +1054,33 @@ def bankaccount_generate_transactions(obj, 
account_label):
     check_response_status(resp)
 
 
-@sandbox_bankaccount.command(help="Book a payment in the sandbox")
-@click.option("--creditor-iban", help="IBAN receiving the payment", 
prompt=True)
-@click.option("--creditor-bic", help="BIC receiving the payment", prompt=True)
-@click.option(
-    "--creditor-name",
-    help="Name of the person who is receiving the payment",
-    prompt=True,
-)
+@sandbox_bankaccount.command(help="Book an incoming payment in the sandbox")
+@click.argument("account-name")
 @click.option("--debtor-iban", help="IBAN sending the payment", prompt=True)
 @click.option("--debtor-bic", help="BIC sending the payment", prompt=True)
 @click.option(
     "--debtor-name", help="name of the person who is sending the payment", 
prompt=True
 )
 @click.option("--amount", help="amount, no currency", prompt=True)
-@click.option("--currency", help="currency", prompt=True)
 @click.option("--subject", help="payment subject", prompt=True)
-@click.option(
-    "--direction",
-    help="direction respect to the bank account hosted at Sandbox: allows 
DBIT/CRDT values.",
-    prompt=True,
-)
 @click.pass_obj
-def book_payment(
+def simulate_incoming_transaction(
     obj,
-    creditor_iban,
-    creditor_bic,
-    creditor_name,
+    account_name,
     debtor_iban,
     debtor_bic,
     debtor_name,
     amount,
-    currency,
     subject,
-    direction,
 ):
     sandbox_base_url = obj.require_sandbox_base_url()
-    url = urljoin(sandbox_base_url, "/admin/payments")
+    url = urljoin(sandbox_base_url, 
f"/admin/bank-accounts/{account_name}/simulate-incoming-transaction")
     body = dict(
-        creditorIban=creditor_iban,
-        creditorBic=creditor_bic,
-        creditorName=creditor_name,
-        debitorIban=debtor_iban,
-        debitorBic=debtor_bic,
-        debitorName=debtor_name,
+        debtorIban=debtor_iban,
+        debtorBic=debtor_bic,
+        debtorName=debtor_name,
         amount=amount,
-        currency=currency,
         subject=subject,
-        direction=direction,
     )
     try:
         resp = post(url, json=body)
diff --git 
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 0cc3438..43a11d1 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -171,11 +171,11 @@ private fun getRelatedParty(branch: XmlElementBuilder, 
payment: RawPayment) {
         var bic = payment.creditorBic
     }
     if (payment.direction == "CRDT") {
-        otherParty.iban = payment.debitorIban
+        otherParty.iban = payment.debtorIban
         otherParty.ibanPath = "DbtrAcct/Id/IBAN"
         otherParty.namePath = "Dbtr/Nm"
-        otherParty.name = payment.debitorName
-        otherParty.bic = payment.debitorBic
+        otherParty.name = payment.debtorName
+        otherParty.bic = payment.debtorBic
         otherParty.bicPath = "DbtrAgt/FinInstnId/BIC"
     }
     branch.element("RltdPties") {
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt
index c7f906c..6db929d 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/JSON.kt
@@ -30,27 +30,11 @@ data class EbicsHostsResponse(
     val ebicsHosts: List<String>
 )
 
-/**
- * Used to show information about ONE particular
- * Ebics host that is active in the system.
- */
-data class EbicsHostResponse(
-    val hostID: String,
-    val ebicsVersion: String
-)
-
 data class EbicsHostCreateRequest(
     val hostID: String,
     val ebicsVersion: String
 )
 
-/**
- * List type that show all the payments existing in the system.
- */
-data class PaymentsResponse(
-    val payments: MutableList<RawPayment> = mutableListOf()
-)
-
 /**
  * List type that show all the payments existing in the system.
  */
@@ -81,32 +65,7 @@ data class BankAccountRequest(
     val currency: String
 )
 
-data class DateRange(
-    val startDate: Long,
-    val endDate: Long
-)
-
 data class CamtParams(
     val iban: String,
     val type: Int
 )
-
-data class BankAccountStatements(
-    var bankAccountStatements: MutableList<BankAccountStatement> = 
mutableListOf()
-)
-
-data class BankAccountReports(
-    var bankAccountReports: MutableList<BankAccountReport> = mutableListOf()
-)
-
-data class BankAccountStatement(
-    var statementId: String,
-    var creationTime: Long,
-    var message: MutableList<String> = mutableListOf()
-)
-
-data class BankAccountReport(
-    var reportId: String,
-    var creationTime: Long,
-    val message: String
-)
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
index a43b1e2..67b6284 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt
@@ -66,7 +66,6 @@ import com.github.ajalt.clikt.parameters.options.flag
 import com.github.ajalt.clikt.parameters.options.option
 import com.github.ajalt.clikt.parameters.options.versionOption
 import com.github.ajalt.clikt.parameters.types.int
-import com.google.common.collect.Maps
 import com.google.common.io.Resources
 import execThrowableOrTerminate
 import io.ktor.application.ApplicationCall
@@ -87,14 +86,12 @@ import 
tech.libeufin.sandbox.BankAccountTransactionsTable.debtorIban
 import tech.libeufin.sandbox.BankAccountTransactionsTable.debtorName
 import tech.libeufin.sandbox.BankAccountTransactionsTable.direction
 import tech.libeufin.sandbox.BankAccountTransactionsTable.pmtInfId
-import tech.libeufin.sandbox.SandboxConfigEntity
 import tech.libeufin.util.*
 import tech.libeufin.util.ebics_h004.EbicsResponse
 import tech.libeufin.util.ebics_h004.EbicsTypes
 import java.net.BindException
 import java.util.*
 import kotlin.random.Random
-import kotlin.reflect.jvm.internal.impl.load.kotlin.JvmType
 import kotlin.system.exitProcess
 
 const val SANDBOX_DB_ENV_VAR_NAME = "LIBEUFIN_SANDBOX_DB_CONNECTION"
@@ -435,34 +432,6 @@ fun serverMain(dbName: String, port: Int) {
                 return@post
             }
 
-            /**
-             * Adds a new payment to the book.
-             */
-            post("/admin/payments") {
-                val body = call.receiveJson<RawPayment>()
-                val randId = getRandomString(16)
-                transaction {
-                    val localIban = if (body.direction == "DBIT") 
body.debitorIban else body.creditorIban
-                    BankAccountTransactionsTable.insert {
-                        it[creditorIban] = body.creditorIban
-                        it[creditorBic] = body.creditorBic
-                        it[creditorName] = body.creditorName
-                        it[debtorIban] = body.debitorIban
-                        it[debtorBic] = body.debitorBic
-                        it[debtorName] = body.debitorName
-                        it[subject] = body.subject
-                        it[amount] = body.amount
-                        it[currency] = body.currency
-                        it[date] = Instant.now().toEpochMilli()
-                        it[accountServicerReference] = "sandbox-$randId"
-                        it[account] = getBankAccountFromIban(localIban).id
-                        it[direction] = body.direction
-                    }
-                }
-                call.respondText("Payment created")
-                return@post
-            }
-
             post("/admin/bank-accounts/{label}/simulate-incoming-transaction") 
{
                 val body = call.receiveJson<IncomingPaymentInfo>()
                 // FIXME: generate nicer UUID!
@@ -494,7 +463,7 @@ fun serverMain(dbName: String, port: Int) {
             post("/admin/ebics/bank-accounts") {
                 val body = call.receiveJson<BankAccountRequest>()
                 transaction {
-                    var subscriber = getEbicsSubscriberFromDetails(
+                    val subscriber = getEbicsSubscriberFromDetails(
                         body.subscriber.userID,
                         body.subscriber.partnerID,
                         body.subscriber.hostID
@@ -504,7 +473,7 @@ fun serverMain(dbName: String, port: Int) {
                         bic = body.bic
                         name = body.name
                         label = body.label
-                        currency = body.currency.toUpperCase(Locale.ROOT)
+                        currency = body.currency.uppercase(Locale.ROOT)
                     }
                 }
                 call.respondText("Bank account created")
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
index 84c3008..6e7822e 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt
@@ -9,7 +9,6 @@ import tech.libeufin.sandbox.BankAccountTransactionsTable.amount
 import tech.libeufin.util.RawPayment
 import tech.libeufin.util.importDateFromMillis
 import tech.libeufin.util.toDashedDate
-import java.math.BigInteger
 
 private val logger: Logger = LoggerFactory.getLogger("tech.libeufin.sandbox")
 
@@ -54,7 +53,6 @@ fun historyForAccount(iban: String): List<RawPayment> {
             FIXME: add the following condition too:
             and (BankAccountTransactionsTable.date.between(start.millis, 
end.millis))
              */
-
         }.forEach {
             history.add(
                 RawPayment(
@@ -62,9 +60,9 @@ fun historyForAccount(iban: String): List<RawPayment> {
                     creditorIban = 
it[BankAccountTransactionsTable.creditorIban],
                     creditorBic = it[BankAccountTransactionsTable.creditorBic],
                     creditorName = 
it[BankAccountTransactionsTable.creditorName],
-                    debitorIban = it[BankAccountTransactionsTable.debtorIban],
-                    debitorBic = it[BankAccountTransactionsTable.debtorBic],
-                    debitorName = it[BankAccountTransactionsTable.debtorName],
+                    debtorIban = it[BankAccountTransactionsTable.debtorIban],
+                    debtorBic = it[BankAccountTransactionsTable.debtorBic],
+                    debtorName = it[BankAccountTransactionsTable.debtorName],
                     date = 
importDateFromMillis(it[BankAccountTransactionsTable.date]).toDashedDate(),
                     amount = it[BankAccountTransactionsTable.amount],
                     currency = it[BankAccountTransactionsTable.currency],
@@ -77,7 +75,6 @@ fun historyForAccount(iban: String): List<RawPayment> {
                 )
             )
         }
-
     }
     return history
 }
diff --git a/sandbox/src/test/kotlin/CamtTest.kt 
b/sandbox/src/test/kotlin/CamtTest.kt
index 4556868..56a53a4 100644
--- a/sandbox/src/test/kotlin/CamtTest.kt
+++ b/sandbox/src/test/kotlin/CamtTest.kt
@@ -12,9 +12,9 @@ class CamtTest {
             creditorIban = "GB33BUKB20201222222222",
             creditorName = "Oliver Smith",
             creditorBic = "BUKBGB33",
-            debitorIban = "GB33BUKB20201333333333",
-            debitorName = "John Doe",
-            debitorBic = "BUKBGB33",
+            debtorIban = "GB33BUKB20201333333333",
+            debtorName = "John Doe",
+            debtorBic = "BUKBGB33",
             amount = "2",
             currency = "EUR",
             subject = "reimbursement",
diff --git a/util/src/main/kotlin/JSON.kt b/util/src/main/kotlin/JSON.kt
index de959f0..2656efc 100644
--- a/util/src/main/kotlin/JSON.kt
+++ b/util/src/main/kotlin/JSON.kt
@@ -28,9 +28,9 @@ data class RawPayment(
     val creditorIban: String,
     val creditorBic: String?,
     val creditorName: String,
-    val debitorIban: String,
-    val debitorBic: String?,
-    val debitorName: String,
+    val debtorIban: String,
+    val debtorBic: String?,
+    val debtorName: String,
     val amount: String,
     val currency: String,
     val subject: String,
@@ -50,7 +50,6 @@ data class IncomingPaymentInfo(
     val debtorBic: String?,
     val debtorName: String,
     val amount: String,
-    val currency: String,
     val subject: String
 )
 
diff --git a/util/src/main/kotlin/Payto.kt b/util/src/main/kotlin/Payto.kt
index ed52d1b..f6e1ca8 100644
--- a/util/src/main/kotlin/Payto.kt
+++ b/util/src/main/kotlin/Payto.kt
@@ -13,7 +13,8 @@ data class Payto(
 class InvalidPaytoError(msg: String) : Exception(msg)
 
 fun parsePayto(paytoLine: String): Payto {
-    if (!"^payto://".toRegex().containsMatchIn(paytoLine)) throw 
InvalidPaytoError("Invalid payto line: $paytoLine")
+    if (!paytoLine.startsWith("payto://"))
+        throw InvalidPaytoError("Invalid payto URI: $paytoLine")
     val javaParsedUri = try {
         URI(paytoLine)
     } catch (e: java.lang.Exception) {

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]