libeufin

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

RevenueApiTest.kt (2093B)


      1 /*
      2  * This file is part of LibEuFin.
      3  * Copyright (C) 2023 Taler Systems S.A.
      4 
      5  * LibEuFin is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU Affero General Public License as
      7  * published by the Free Software Foundation; either version 3, or
      8  * (at your option) any later version.
      9 
     10  * LibEuFin is distributed in the hope that it will be useful, but
     11  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General
     13  * Public License for more details.
     14 
     15  * You should have received a copy of the GNU Affero General Public
     16  * License along with LibEuFin; see the file COPYING.  If not, see
     17  * <http://www.gnu.org/licenses/>
     18  */
     19 
     20 import io.ktor.http.*
     21 import io.ktor.client.request.*
     22 import org.junit.Test
     23 import tech.libeufin.common.RevenueIncomingHistory
     24 import tech.libeufin.common.assertOk
     25 import tech.libeufin.common.test.*
     26 
     27 class RevenueApiTest {
     28     // GET /accounts/{USERNAME}/taler-revenue/config
     29     @Test
     30     fun config() = bankSetup {
     31         client.get("/accounts/merchant/taler-revenue/config").assertOk()
     32     }
     33 
     34     // GET /accounts/{USERNAME}/taler-revenue/history
     35     @Test
     36     fun history() = bankSetup {
     37         setMaxDebt("exchange", "KUDOS:1000000")
     38         authRoutine(HttpMethod.Get, "/accounts/merchant/taler-revenue/history")
     39         historyRoutine<RevenueIncomingHistory>(
     40             url = "/accounts/merchant/taler-revenue/history",
     41             ids = { it.incoming_transactions.map { it.row_id } },
     42             registered = listOf(
     43                 { 
     44                     // Transactions using clean transfer logic
     45                     transfer("KUDOS:10")
     46                 },
     47                 { 
     48                     // Common credit transactions
     49                     tx("exchange", "KUDOS:10", "merchant", "ignored")
     50                 }
     51             ),
     52             ignored = listOf(
     53                 {
     54                     // Ignore debit transactions
     55                     tx("merchant", "KUDOS:10", "customer")
     56                 }
     57             )
     58         )
     59     }
     60 }