View Issue Details

IDProjectCategoryView StatusLast Update
0007288Talermechant backendpublic2022-07-22 13:25
Reporteroec Assigned ToChristian Grothoff  
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Versiongit (master) 
Fixed in Versiongit (master) 
Summary0007288: `make check ` hangs and then fails in test-merchant-walletharness
DescriptionWith the latest merchant and wallet-core, `make check` in the merchant hangs after those tests:

```
PASS: test_merchant_api_cs
PASS: test_merchant_api_rsa
PASS: test_kyc_api
PASS: test_merchant_api_twisted_cs
PASS: test_merchant_api_twisted_rsa
```

and fails after 5+ minutes.

test-merchant-walletharness.sh.log output is attached
TagsNo tags attached.

Activities

oec

2022-07-21 17:47

developer  

test-merchant-walletharness.sh.log (186,448 bytes)   
Testing for taler-bank-manage FOUND
Testing for taler-wallet-cli FOUND
testsuite root directory: /tmp/taler-integrationtests-BzHWPW
running merchant-exchange-confusion with timeout 60000ms
running test merchant-exchange-confusion in worker process
running test merchant-exchange-confusion
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/bank.conf' serve
spawned process (bank) with pid 27863
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 27875
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 27876
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 27877
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 27878
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 27879
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 27933
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/walletdb-default.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/8d3c569c-3446-477a-b5bb-01f3c7fa8471"}'
request for URL {
  href: 'http://localhost:9081/keys?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/keys',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/keys?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
request for URL {
  href: 'http://localhost:9081/wire?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/wire',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/wire?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
request for URL {
  href: 'http://localhost:9081/terms?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/terms',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/terms?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:9081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:9081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/walletdb-default.json' run-pending
request for URL {
  href: 'http://localhost:9081/keys?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/keys',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/keys?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
request for URL {
  href: 'http://localhost:9081/wire?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/wire',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/wire?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
request for URL {
  href: 'http://localhost:9081/terms?cacheBreaker=5',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/terms',
  search: '?cacheBreaker=5',
  searchParams: URLSearchParams { 'cacheBreaker' => '5' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/terms?cacheBreaker=5'
gotten response from target 200
end of target response
writing response head
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/walletdb-default.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:9081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/8d3c569c-3446-477a-b5bb-01f3c7fa8471"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/8d3c569c-3446-477a-b5bb-01f3c7fa8471"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-exchange-confusion/walletdb-default.json' run-until-done
request for URL {
  href: 'http://localhost:9081/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG?timeout_ms=30000',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG',
  search: '?timeout_ms=30000',
  searchParams: URLSearchParams { 'timeout_ms' => '30000' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG?timeout_ms=30000'
gotten response from target 404
end of target response
writing response head
request for URL {
  href: 'http://localhost:9081/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG?timeout_ms=30000',
  origin: 'http://localhost:9081',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:9081',
  hostname: 'localhost',
  port: '9081',
  pathname: '/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG',
  search: '?timeout_ms=30000',
  searchParams: URLSearchParams { 'timeout_ms' => '30000' },
  hash: ''
}
end of data
full request body undefined
proxying request to target path '/reserves/MBJ4MR6224KKQTHFTBGK6GKPA079FC03SVXMA03N4W8ZHY8FWRRG?timeout_ms=30000'
test merchant-exchange-confusion timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"merchant-exchange-confusion"}
running merchant-instances with timeout 60000ms
**** received fatal process event, terminating test merchant-exchange-confusion
running test merchant-instances in worker process
running test merchant-instances
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-instances
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-instances/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28196
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
{ currency: 'TESTKUDOS', name: 'taler-merchant', version: '3:0:1' }
adding instance
adding instance
requesting instances with auth { method: 'external' }
Error: Request failed with status code 401
    at createError (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29510:15)
    at settle (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29528:12)
    at IncomingMessage.handleStreamEnd (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:30886:11)
    at IncomingMessage.emit (node:events:539:35)
    at endReadableNT (node:internal/streams/readable:1345:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      'User-Agent': 'axios/0.25.0'
    },
    method: 'get',
    url: 'http://localhost:8083/management/instances',
    data: undefined
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      connect: [Function (anonymous)],
      error: [Function (anonymous)],
      socket: [Function (anonymous)],
      timeout: [Function (anonymous)],
      prefinish: [Function: requestOnPrefinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: false,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: 0,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    _closed: false,
    socket: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'localhost',
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(async_id_symbol)]: 379,
      [Symbol(kHandle)]: [TCP],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: true,
      [Symbol(kSetKeepAliveInitialDelay)]: 60,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'GET /management/instances HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'User-Agent: axios/0.25.0\r\n' +
      'Host: localhost:8083\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'GET',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/management/instances',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      socket: [Socket],
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      rawHeaders: [Array],
      rawTrailers: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 401,
      statusMessage: 'Unauthorized',
      client: [Socket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://localhost:8083/management/instances',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 12,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'localhost',
    protocol: 'http:',
    _redirectable: Writable {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      _options: [Object],
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 0,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://localhost:8083/management/instances',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'user-agent': [Array],
      host: [Array]
    }
  },
  response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {
      date: 'Thu, 21 Jul 2022 15:36:22 GMT',
      connection: 'close',
      'access-control-allow-origin': '*',
      'access-control-expose-headers': '*',
      'content-type': 'application/json',
      'content-length': '138'
    },
    config: {
      transitional: [Object],
      adapter: [Function: httpAdapter],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      headers: [Object],
      method: 'get',
      url: 'http://localhost:8083/management/instances',
      data: undefined
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [Socket],
      _header: 'GET /management/instances HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'User-Agent: axios/0.25.0\r\n' +
        'Host: localhost:8083\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'GET',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/management/instances',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'http:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: {
      code: 2015,
      hint: 'The merchant refused the request due to lack of authorization.',
      detail: "Check 'Authorization' header"
    }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}
Error: Request failed with status code 401
    at createError (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29510:15)
    at settle (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29528:12)
    at IncomingMessage.handleStreamEnd (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:30886:11)
    at IncomingMessage.emit (node:events:539:35)
    at endReadableNT (node:internal/streams/readable:1345:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      'User-Agent': 'axios/0.25.0'
    },
    method: 'delete',
    url: 'http://localhost:8083/management/instances/myinst',
    data: undefined
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      connect: [Function (anonymous)],
      error: [Function (anonymous)],
      socket: [Function (anonymous)],
      timeout: [Function (anonymous)],
      prefinish: [Function: requestOnPrefinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: false,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: 0,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    _closed: false,
    socket: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'localhost',
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(async_id_symbol)]: 472,
      [Symbol(kHandle)]: [TCP],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: true,
      [Symbol(kSetKeepAliveInitialDelay)]: 60,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'DELETE /management/instances/myinst HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'User-Agent: axios/0.25.0\r\n' +
      'Host: localhost:8083\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'DELETE',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/management/instances/myinst',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      socket: [Socket],
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      rawHeaders: [Array],
      rawTrailers: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 401,
      statusMessage: 'Unauthorized',
      client: [Socket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://localhost:8083/management/instances/myinst',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 12,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'localhost',
    protocol: 'http:',
    _redirectable: Writable {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      _options: [Object],
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 0,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://localhost:8083/management/instances/myinst',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      'user-agent': [Array],
      host: [Array]
    }
  },
  response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {
      date: 'Thu, 21 Jul 2022 15:36:22 GMT',
      connection: 'close',
      'access-control-allow-origin': '*',
      'access-control-expose-headers': '*',
      'content-type': 'application/json',
      'content-length': '138'
    },
    config: {
      transitional: [Object],
      adapter: [Function: httpAdapter],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      headers: [Object],
      method: 'delete',
      url: 'http://localhost:8083/management/instances/myinst',
      data: undefined
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [Socket],
      _header: 'DELETE /management/instances/myinst HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'User-Agent: axios/0.25.0\r\n' +
        'Host: localhost:8083\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'DELETE',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/management/instances/myinst',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'http:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: {
      code: 2015,
      hint: 'The merchant refused the request due to lack of authorization.',
      detail: "Check 'Authorization' header"
    }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}
shutting down
killing process 28196
process merchant-testmerchant-1 exited {
  "code": 0,
  "signal": null
}
test merchant-instances finished in worker
process exited code=0 signal=null
parent: got result {"name":"merchant-instances","timeSec":2.152,"status":"pass"}
running merchant-instances-delete with timeout 60000ms
running test merchant-instances-delete in worker process
running test merchant-instances-delete
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-instances-delete
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-instances-delete/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28227
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
{ currency: 'TESTKUDOS', name: 'taler-merchant', version: '3:0:1' }
adding instance
adding instance
Got expected exception Error: Request failed with status code 401
    at createError (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29510:15)
    at settle (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:29528:12)
    at IncomingMessage.handleStreamEnd (/usr/local/lib/taler-wallet-cli/node_modules/taler-wallet-cli/dist/taler-wallet-cli.js:30886:11)
    at IncomingMessage.emit (node:events:539:35)
    at endReadableNT (node:internal/streams/readable:1345:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      Authorization: 'Bearer secret-token:invalid',
      'User-Agent': 'axios/0.25.0'
    },
    method: 'delete',
    url: 'http://localhost:8083/management/instances/myinst',
    data: undefined
  },
  request: <ref *1> ClientRequest {
    _events: [Object: null prototype] {
      abort: [Function (anonymous)],
      aborted: [Function (anonymous)],
      connect: [Function (anonymous)],
      error: [Function (anonymous)],
      socket: [Function (anonymous)],
      timeout: [Function (anonymous)],
      prefinish: [Function: requestOnPrefinish]
    },
    _eventsCount: 7,
    _maxListeners: undefined,
    outputData: [],
    outputSize: 0,
    writable: true,
    destroyed: false,
    _last: true,
    chunkedEncoding: false,
    shouldKeepAlive: false,
    maxRequestsOnConnectionReached: false,
    _defaultKeepAlive: true,
    useChunkedEncodingByDefault: false,
    sendDate: false,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: 0,
    _hasBody: true,
    _trailer: '',
    finished: true,
    _headerSent: true,
    _closed: false,
    socket: Socket {
      connecting: false,
      _hadError: false,
      _parent: null,
      _host: 'localhost',
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: false,
      _sockname: null,
      _pendingData: null,
      _pendingEncoding: '',
      server: null,
      _server: null,
      parser: null,
      _httpMessage: [Circular *1],
      [Symbol(async_id_symbol)]: 290,
      [Symbol(kHandle)]: [TCP],
      [Symbol(lastWriteQueueSize)]: 0,
      [Symbol(timeout)]: null,
      [Symbol(kBuffer)]: null,
      [Symbol(kBufferCb)]: null,
      [Symbol(kBufferGen)]: null,
      [Symbol(kCapture)]: false,
      [Symbol(kSetNoDelay)]: false,
      [Symbol(kSetKeepAlive)]: true,
      [Symbol(kSetKeepAliveInitialDelay)]: 60,
      [Symbol(kBytesRead)]: 0,
      [Symbol(kBytesWritten)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    _header: 'DELETE /management/instances/myinst HTTP/1.1\r\n' +
      'Accept: application/json, text/plain, */*\r\n' +
      'Authorization: Bearer secret-token:invalid\r\n' +
      'User-Agent: axios/0.25.0\r\n' +
      'Host: localhost:8083\r\n' +
      'Connection: close\r\n' +
      '\r\n',
    _keepAliveTimeout: 0,
    _onPendingData: [Function: nop],
    agent: Agent {
      _events: [Object: null prototype],
      _eventsCount: 2,
      _maxListeners: undefined,
      defaultPort: 80,
      protocol: 'http:',
      options: [Object: null prototype],
      requests: [Object: null prototype] {},
      sockets: [Object: null prototype],
      freeSockets: [Object: null prototype] {},
      keepAliveMsecs: 1000,
      keepAlive: false,
      maxSockets: Infinity,
      maxFreeSockets: 256,
      scheduling: 'lifo',
      maxTotalSockets: Infinity,
      totalSocketCount: 1,
      [Symbol(kCapture)]: false
    },
    socketPath: undefined,
    method: 'DELETE',
    maxHeaderSize: undefined,
    insecureHTTPParser: undefined,
    path: '/management/instances/myinst',
    _ended: true,
    res: IncomingMessage {
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      socket: [Socket],
      httpVersionMajor: 1,
      httpVersionMinor: 1,
      httpVersion: '1.1',
      complete: true,
      rawHeaders: [Array],
      rawTrailers: [],
      aborted: false,
      upgrade: false,
      url: '',
      method: null,
      statusCode: 401,
      statusMessage: 'Unauthorized',
      client: [Socket],
      _consuming: false,
      _dumped: false,
      req: [Circular *1],
      responseUrl: 'http://localhost:8083/management/instances/myinst',
      redirects: [],
      [Symbol(kCapture)]: false,
      [Symbol(kHeaders)]: [Object],
      [Symbol(kHeadersCount)]: 12,
      [Symbol(kTrailers)]: null,
      [Symbol(kTrailersCount)]: 0,
      [Symbol(RequestTimeout)]: undefined
    },
    aborted: false,
    timeoutCb: null,
    upgradeOrConnect: false,
    parser: null,
    maxHeadersCount: null,
    reusedSocket: false,
    host: 'localhost',
    protocol: 'http:',
    _redirectable: Writable {
      _writableState: [WritableState],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      _options: [Object],
      _ended: true,
      _ending: true,
      _redirectCount: 0,
      _redirects: [],
      _requestBodyLength: 0,
      _requestBodyBuffers: [],
      _onNativeResponse: [Function (anonymous)],
      _currentRequest: [Circular *1],
      _currentUrl: 'http://localhost:8083/management/instances/myinst',
      [Symbol(kCapture)]: false
    },
    [Symbol(kCapture)]: false,
    [Symbol(kNeedDrain)]: false,
    [Symbol(corked)]: 0,
    [Symbol(kOutHeaders)]: [Object: null prototype] {
      accept: [Array],
      authorization: [Array],
      'user-agent': [Array],
      host: [Array]
    }
  },
  response: {
    status: 401,
    statusText: 'Unauthorized',
    headers: {
      date: 'Thu, 21 Jul 2022 15:36:24 GMT',
      connection: 'close',
      'access-control-allow-origin': '*',
      'access-control-expose-headers': '*',
      'content-type': 'application/json',
      'content-length': '138'
    },
    config: {
      transitional: [Object],
      adapter: [Function: httpAdapter],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 0,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      validateStatus: [Function: validateStatus],
      headers: [Object],
      method: 'delete',
      url: 'http://localhost:8083/management/instances/myinst',
      data: undefined
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: false,
      _last: true,
      chunkedEncoding: false,
      shouldKeepAlive: false,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: false,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      _contentLength: 0,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: false,
      socket: [Socket],
      _header: 'DELETE /management/instances/myinst HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Authorization: Bearer secret-token:invalid\r\n' +
        'User-Agent: axios/0.25.0\r\n' +
        'Host: localhost:8083\r\n' +
        'Connection: close\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'DELETE',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      path: '/management/instances/myinst',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: false,
      host: 'localhost',
      protocol: 'http:',
      _redirectable: [Writable],
      [Symbol(kCapture)]: false,
      [Symbol(kNeedDrain)]: false,
      [Symbol(corked)]: 0,
      [Symbol(kOutHeaders)]: [Object: null prototype]
    },
    data: {
      code: 2015,
      hint: 'The merchant refused the request due to lack of authorization.',
      detail: "Check 'Authorization' header"
    }
  },
  isAxiosError: true,
  toJSON: [Function: toJSON]
}
shutting down
killing process 28227
process merchant-testmerchant-1 exited {
  "code": 0,
  "signal": null
}
test merchant-instances-delete finished in worker
process exited code=0 signal=null
parent: got result {"name":"merchant-instances-delete","timeSec":2.023,"status":"pass"}
running merchant-instances-urls with timeout 60000ms
running test merchant-instances-urls in worker process
running test merchant-instances-urls
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-instances-urls
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-instances-urls/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28314
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
checking http://localhost:8083/private/instances/default/instances/default/config, expected 404, got 404
checking http://localhost:8083/instances/default/private/instances, expected 404, got 404
checking http://localhost:8083/instances/foo/private/instances, expected 404, got 404
checking http://localhost:8083/instances/myinst/private/instances, expected 404, got 404
checking http://localhost:8083/config, expected 200, got 200
checking http://localhost:8083/instances/default/config, expected 200, got 200
checking http://localhost:8083/instances/myinst/config, expected 200, got 200
checking http://localhost:8083/instances/foo/config, expected 404, got 404
checking http://localhost:8083/instances/default/instances/config, expected 404, got 404
checking http://localhost:8083/private/instances/myinst/config, expected 404, got 404
checking http://localhost:8083/instances/myinst/private/orders, expected 401, got 401
checking http://localhost:8083/instances/myinst/private/orders, expected 401, got 401
checking http://localhost:8083/instances/myinst/private/orders, expected 200, got 200
checking http://localhost:8083/private/instances/myinst/orders, expected 404, got 404
shutting down
killing process 28314
process merchant-testmerchant-1 exited {
  "code": 0,
  "signal": null
}
test merchant-instances-urls finished in worker
process exited code=0 signal=null
parent: got result {"name":"merchant-instances-urls","timeSec":2.116,"status":"pass"}
running merchant-longpolling with timeout 60000ms
running test merchant-longpolling in worker process
running test merchant-longpolling
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-longpolling
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/bank.conf' serve
spawned process (bank) with pid 28355
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 28378
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 28379
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 28380
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 28381
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 28382
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28424
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/walletdb-default.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/bfc8ed97-a84d-40d7-a482-c80ddbe7fcca"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:8081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:8081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/walletdb-default.json' run-pending
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/walletdb-default.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:8081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/bfc8ed97-a84d-40d7-a482-c80ddbe7fcca"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "BNGQP8G65RY44XZ1XWXNGQMT3G8M13ZSJYJNBCQGJJJDZ3Y47RZ0",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/bfc8ed97-a84d-40d7-a482-c80ddbe7fcca"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-longpolling/walletdb-default.json' run-until-done
test merchant-longpolling timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"merchant-longpolling"}
running merchant-spec-public-orders with timeout 60000ms
**** received fatal process event, terminating test merchant-longpolling
running test merchant-spec-public-orders in worker process
running test merchant-spec-public-orders
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/bank.conf' serve
spawned process (bank) with pid 28632
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 28644
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 28645
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 28646
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 28647
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 28648
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28690
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
{ currency: 'TESTKUDOS', name: 'taler-merchant', version: '3:0:1' }
{
  code: 2005,
  hint: 'The proposal is not known to the backend.',
  detail: 'foo'
}
{
  "code": 2005,
  "hint": "The proposal is not known to the backend.",
  "detail": "foo"
}
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/walletdb-withclaimtoken.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/8e786248-09d7-4c26-a007-a9abb730302b"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:8081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:8081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/walletdb-withclaimtoken.json' run-pending
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/walletdb-withclaimtoken.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:8081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/8e786248-09d7-4c26-a007-a9abb730302b"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "2HXE1ZMBZGRWDEP79HC3YXWJ95HC70F1R9S56Q5Q6A3V9Z25X3A0",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/8e786248-09d7-4c26-a007-a9abb730302b"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-spec-public-orders/walletdb-withclaimtoken.json' run-until-done
test merchant-spec-public-orders timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"merchant-spec-public-orders"}
running merchant-refund-api with timeout 60000ms
**** received fatal process event, terminating test merchant-spec-public-orders
running test merchant-refund-api in worker process
running test merchant-refund-api
running test in directory /tmp/taler-integrationtests-BzHWPW/merchant-refund-api
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/bank.conf' serve
spawned process (bank) with pid 28901
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 28916
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 28917
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 28918
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 28919
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 28920
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 28962
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/walletdb-default.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/1e53e030-4bbe-4027-a695-0bc68e754ece"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:8081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:8081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/walletdb-default.json' run-pending
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/walletdb-default.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:8081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/1e53e030-4bbe-4027-a695-0bc68e754ece"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "70PNFXNB96NB076Q3C6DQQYKBA1880Q38M250S99ZTANJ18V8D5G",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/1e53e030-4bbe-4027-a695-0bc68e754ece"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/merchant-refund-api/walletdb-default.json' run-until-done
test merchant-refund-api timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"merchant-refund-api"}
running payment-forgettable with timeout 60000ms
**** received fatal process event, terminating test merchant-refund-api
running test payment-forgettable in worker process
running test payment-forgettable
running test in directory /tmp/taler-integrationtests-BzHWPW/payment-forgettable
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/bank.conf' serve
spawned process (bank) with pid 29138
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 29150
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 29151
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 29152
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 29153
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 29154
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 29196
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/walletdb-default.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/f7b28c92-d093-462f-a261-dc1a2d60ec28"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:8081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:8081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/walletdb-default.json' run-pending
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/walletdb-default.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:8081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/f7b28c92-d093-462f-a261-dc1a2d60ec28"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "4M0K32CZAS9N5HV1QZ427NRXBS03BSDDDZ4KHANFVBGGWTV9YMR0",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/f7b28c92-d093-462f-a261-dc1a2d60ec28"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/payment-forgettable/walletdb-default.json' run-until-done
test payment-forgettable timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"payment-forgettable"}
running paywall-flow with timeout 60000ms
**** received fatal process event, terminating test payment-forgettable
running test paywall-flow in worker process
running test paywall-flow
running test in directory /tmp/taler-integrationtests-BzHWPW/paywall-flow
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' django migrate
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' django provide_accounts
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' django add_bank_account myexchange
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' django changepassword_unsafe myexchange x
child process exited (0 / null)
running command taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' django top_up myexchange TESTKUDOS:100000
child process exited (0 / null)
spawning process (bank): taler-bank-manage -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/bank.conf' serve
spawned process (bank) with pid 29415
pinging bank at http://localhost:8082/config
service bank not ready: Error: connect ECONNREFUSED 127.0.0.1:8082
pinging bank at http://localhost:8082/config
service bank available
running command taler-exchange-dbinit -c "/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf"
child process exited (0 / null)
spawning process (exchange-crypto-eddsa-testexchange-1): taler-exchange-secmod-eddsa -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-eddsa-testexchange-1) with pid 29428
spawning process (exchange-crypto-cs-testexchange-1): taler-exchange-secmod-cs -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-cs-testexchange-1) with pid 29429
spawning process (exchange-crypto-rsa-testexchange-1): taler-exchange-secmod-rsa -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' -LDEBUG
spawned process (exchange-crypto-rsa-testexchange-1) with pid 29430
spawning process (exchange-wirewatch-testexchange-1): taler-exchange-wirewatch -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf'
spawned process (exchange-wirewatch-testexchange-1) with pid 29431
spawning process (exchange-httpd-testexchange-1): taler-exchange-httpd -LINFO -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf'
spawned process (exchange-httpd-testexchange-1) with pid 29432
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8081
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' download sign upload
child process exited (0 / null)
configuring bank accounts [ 'payto://x-taler-bank/myexchange' ]
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' enable-account payto://x-taler-bank/myexchange upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' wire-fee 2022 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' wire-fee 2023 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' wire-fee 2024 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' wire-fee 2025 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' wire-fee 2026 x-taler-bank 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' upload
child process exited (0 / null)
running command taler-exchange-offline -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/exchange-testexchange-1.conf' global-fee now 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 'TESTKUDOS:0.01' 1h 1h 1year 5 upload
child process exited (0 / null)
pinging exchange (testexchange-1) at http://localhost:8081/management/keys
service exchange (testexchange-1) available
spawning process (merchant-testmerchant-1): taler-merchant-httpd taler-merchant-httpd -LDEBUG -c '/tmp/taler-integrationtests-BzHWPW/paywall-flow/merchant-testmerchant-1.conf'
spawned process (merchant-testmerchant-1) with pid 29474
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) not ready: Error: connect ECONNREFUSED 127.0.0.1:8083
pinging merchant (testmerchant-1) at http://localhost:8083/config
service merchant (testmerchant-1) available
adding instance
adding instance
setup done!
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/paywall-flow/walletdb-default.json' api 'getWithdrawalDetailsForUri' '{"talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/2ad80b55-69e0-4f0f-8996-cdfd7437410c"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "getWithdrawalDetailsForUri",
  "id": "reqid-1",
  "result": {
    "amount": "TESTKUDOS:20",
    "defaultExchangeBaseUrl": "http://localhost:8081/",
    "possibleExchanges": [
      {
        "exchangeBaseUrl": "http://localhost:8081/",
        "currency": "TESTKUDOS",
        "tos": {
          "currentVersion": "0",
          "contentType": "text/plain",
          "content": "Terms Of Service\n****************\n\nLast Updated: 09.06.2022\n\nWelcome! The ICE research center of the Bern University of Applied\nSciences in Switzerland (“we,” “our,” or “us”) provides an\nexperimental payment service through our Internet presence\n(collectively the “Services”). Before using our Services, please read\nthe Terms of Service (the “Terms” or the “Agreement”) carefully.\n\n\nThis is research\n================\n\nThis is a research experiment. Any funds wired to our Bitcoin address\nare considered a donation to our research group. We may use them to\nenable payments following the GNU Taler protocol, or simply keep them\nat our discretion.  The service is experimental and may also be\ndiscontinued at any time, in which case all remaining funds will\ndefinitively be kept by the research group.\n\n\nOverview\n========\n\nThis section provides a brief summary of the highlights of this\nAgreement. Please note that when you accept this Agreement, you are\naccepting all of the terms and conditions and not just this section.\nWe and possibly other third parties provide Internet services which\ninteract with the Taler Wallet’s self-hosted personal payment\napplication. When using the Taler Wallet to interact with our\nServices, you are agreeing to our Terms, so please read carefully.\n\n\nHighlights:\n-----------\n\n   * You are responsible for keeping the data in your Taler Wallet at\n     all times under your control. Any losses arising from you not\n     being in control of your private information are your problem.\n\n   * We may transfer funds we receive from our users to any legal\n     recipient to the best of our ability within the limitations of\n     the law and our implementation. However, the Services offered\n     today are highly experimental and the set of recipients of funds\n     is severely restricted. Again, we stress this is a research\n     experiment and technically all funds held by the exchange are\n     owned by the research group of the university.\n\n   * For our Services, we may charge transaction fees. The specific\n     fee structure is provided based on the Taler protocol and should\n     be shown to you when you withdraw electronic coins using a Taler\n     Wallet. You agree and understand that the Taler protocol allows\n     for the fee structure to change.\n\n   * You agree to not intentionally overwhelm our systems with\n     requests and follow responsible disclosure if you find security\n     issues in our services.\n\n   * We cannot be held accountable for our Services not being\n     available due to any circumstances. If we modify or terminate our\n     services, we may give you the opportunity to recover your funds.\n     However, given the experimental state of the Services today, this\n     may not be possible. You are strongly advised to limit your use\n     of the Service to small-scale experiments expecting total loss of\n     all funds.\n\nThese terms outline approved uses of our Services. The Services and\nthese Terms are still at an experimental stage. If you have any\nquestions or comments related to this Agreement, please send us a\nmessage to ice@bfh.ch. If you do not agree to this Agreement, you must\nnot use our Services.\n\n\nHow you accept this policy\n==========================\n\nBy sending funds to us (to top-up your Taler Wallet), you acknowledge\nthat you have read, understood, and agreed to these Terms. We reserve\nthe right to change these Terms at any time. If you disagree with the\nchange, we may in the future offer you with an easy option to recover\nyour unspent funds. However, in the current experimental period you\nacknowledge that this feature is not yet available, resulting in your\nfunds being lost unless you accept the new Terms. If you continue to\nuse our Services other than to recover your unspent funds, your\ncontinued use of our Services following any such change will signify\nyour acceptance to be bound by the then current Terms. Please check\nthe effective date above to determine if there have been any changes\nsince you have last reviewed these Terms.\n\n\nServices\n========\n\nWe will try to transfer funds that we receive from users to any legal\nrecipient to the best of our ability and within the limitations of the\nlaw. However, the Services offered today are highly experimental and\nthe set of recipients of funds is severely restricted.  The Taler\nWallet can be loaded by exchanging fiat or cryptocurrencies against\nelectronic coins. We are providing this exchange service. Once your\nTaler Wallet is loaded with electronic coins they can be spent for\npurchases if the seller is accepting Taler as a means of payment. We\nare not guaranteeing that any seller is accepting Taler at all or a\nparticular seller.  The seller or recipient of deposits of electronic\ncoins must specify the target account, as per the design of the Taler\nprotocol. They are responsible for following the protocol and\nspecifying the correct bank account, and are solely liable for any\nlosses that may arise from specifying the wrong account. We may allow\nthe government to link wire transfers to the underlying contract hash.\nIt is the responsibility of recipients to preserve the full contracts\nand to pay whatever taxes and charges may be applicable. Technical\nissues may lead to situations where we are unable to make transfers at\nall or lead to incorrect transfers that cannot be reversed. We may\nrefuse to execute transfers if the transfers are prohibited by a\ncompetent legal authority and we are ordered to do so.\n\nWhen using our Services, you agree to not take any action that\nintentionally imposes an unreasonable load on our infrastructure. If\nyou find security problems in our Services, you agree to first report\nthem to security@taler-systems.com and grant us the right to publish\nyour report. We warrant that we will ourselves publicly disclose any\nissues reported within 3 months, and that we will not prosecute anyone\nreporting security issues if they did not exploit the issue beyond a\nproof-of-concept, and followed the above responsible disclosure\npractice.\n\n\nFees\n====\n\nYou agree to pay the fees for exchanges and withdrawals completed via\nthe Taler Wallet (\"Fees\") as defined by us, which we may change from\ntime to time. With the exception of wire transfer fees, Taler\ntransaction fees are set for any electronic coin at the time of\nwithdrawal and fixed throughout the validity period of the respective\nelectronic coin. Your wallet should obtain and display applicable fees\nwhen withdrawing funds. Fees for coins obtained as change may differ\nfrom the fees applicable to the original coin. Wire transfer fees that\nare independent from electronic coins may change annually.  You\nauthorize us to charge or deduct applicable fees owed in connection\nwith deposits, exchanges and withdrawals following the rules of the\nTaler protocol. We reserve the right to provide different types of\nrewards to users either in the form of discount for our Services or in\nany other form at our discretion and without prior notice to you.\n\n\nEligibility and Financial self-responsibility\n=============================================\n\nTo be eligible to use our Services, you must be able to form legally\nbinding contracts or have the permission of your legal guardian. By\nusing our Services, you represent and warrant that you meet all\neligibility requirements that we outline in these Terms.\n\nYou will be responsible for maintaining the availability, integrity\nand confidentiality of the data stored in your wallet. When you setup\na Taler Wallet, you are strongly advised to follow the precautionary\nmeasures offered by the software to minimize the chances to losse\naccess to or control over your Wallet data. We will not be liable for\nany loss or damage arising from your failure to comply with this\nparagraph.\n\n\nCopyrights and trademarks\n=========================\n\nThe Taler Wallet is released under the terms of the GNU General Public\nLicense (GNU GPL). You have the right to access, use, and share the\nTaler Wallet, in modified or unmodified form. However, the GPL is a\nstrong copyleft license, which means that any derivative works must be\ndistributed under the same license terms as the original software. If\nyou have any questions, you should review the GNU GPL’s full terms and\nconditions at https://www.gnu.org/licenses/gpl-3.0.en.html.  “Taler”\nitself is a trademark of Taler Systems SA. You are welcome to use the\nname in relation to processing payments using the Taler protocol,\nassuming your use is compatible with an official release from the GNU\nProject that is not older than two years.\n\n\nLimitation of liability & disclaimer of warranties\n==================================================\n\nYou understand and agree that we have no control over, and no duty to\ntake any action regarding: Failures, disruptions, errors, or delays in\nprocessing that you may experience while using our Services; The risk\nof failure of hardware, software, and Internet connections; The risk\nof malicious software being introduced or found in the software\nunderlying the Taler Wallet; The risk that third parties may obtain\nunauthorized access to information stored within your Taler Wallet,\nincluding, but not limited to your Taler Wallet coins or backup\nencryption keys.  You release us from all liability related to any\nlosses, damages, or claims arising from:\n\n1. user error such as forgotten passwords, incorrectly constructed\n   transactions;\n\n2. server failure or data loss;\n\n3. unauthorized access to the Taler Wallet application;\n\n4. bugs or other errors in the Taler Wallet software; and\n\n5. any unauthorized third party activities, including, but not limited\n   to, the use of viruses, phishing, brute forcing, or other means of\n   attack against the Taler Wallet. We make no representations\n   concerning any Third Party Content contained in or accessed through\n   our Services.\n\nAny other terms, conditions, warranties, or representations associated\nwith such content, are solely between you and such organizations\nand/or individuals.\n\nTo the fullest extent permitted by applicable law, in no event will we\nor any of our officers, directors, representatives, agents, servants,\ncounsel, employees, consultants, lawyers, and other personnel\nauthorized to act, acting, or purporting to act on our behalf\n(collectively the “Taler Parties”) be liable to you under contract,\ntort, strict liability, negligence, or any other legal or equitable\ntheory, for:\n\n1. any lost profits, data loss, cost of procurement of substitute\n   goods or services, or direct, indirect, incidental, special,\n   punitive, compensatory, or consequential damages of any kind\n   whatsoever resulting from:\n\n   1. your use of, or conduct in connection with, our services;\n\n   2. any unauthorized use of your wallet and/or private key due to\n      your failure to maintain the confidentiality of your wallet;\n\n   3. any interruption or cessation of transmission to or from the\n      services; or\n\n   4. any bugs, viruses, trojan horses, or the like that are found in\n      the Taler Wallet software or that may be transmitted to or\n      through our services by any third party (regardless of the\n      source of origination), or\n\n2. any direct damages.\n\nThese limitations apply regardless of legal theory, whether based on\ntort, strict liability, breach of contract, breach of warranty, or any\nother legal theory, and whether or not we were advised of the\npossibility of such damages. Some jurisdictions do not allow the\nexclusion or limitation of liability for consequential or incidental\ndamages, so the above limitation may not apply to you.\n\nOur services are provided \"as is\" and without warranty of any kind. To\nthe maximum extent permitted by law, we disclaim all representations\nand warranties, express or implied, relating to the services and\nunderlying software or any content on the services, whether provided\nor owned by us or by any third party, including without limitation,\nwarranties of merchantability, fitness for a particular purpose,\ntitle, non-infringement, freedom from computer virus, and any implied\nwarranties arising from course of dealing, course of performance, or\nusage in trade, all of which are expressly disclaimed. In addition, we\ndo not represent or warrant that the content accessible via the\nservices is accurate, complete, available, current, free of viruses or\nother harmful components, or that the results of using the services\nwill meet your requirements. Some states do not allow the disclaimer\nof implied warranties, so the foregoing disclaimers may not apply to\nyou. This paragraph gives you specific legal rights and you may also\nhave other legal rights that vary from state to state.\n\n\nIndemnity and Time limitation on claims and Termination\n=======================================================\n\nTo the extent permitted by applicable law, you agree to defend,\nindemnify, and hold harmless the Taler Parties from and against any\nand all claims, damages, obligations, losses, liabilities, costs or\ndebt, and expenses (including, but not limited to, attorney’s fees)\narising from: (a) your use of and access to the Services; (b) any\nfeedback or submissions you provide to us concerning the Taler Wallet;\n(c) your violation of any term of this Agreement; or (d) your\nviolation of any law, rule, or regulation, or the rights of any third\nparty.\n\nYou agree that any claim you may have arising out of or related to\nyour relationship with us must be filed within one year after such\nclaim arises, otherwise, your claim in permanently barred.\n\nIn the event of termination concerning your use of our Services, your\nobligations under this Agreement will still continue.\n\n\nDiscontinuance of services and Force majeure\n============================================\n\nWe may, in our sole discretion and without cost to you, with or\nwithout prior notice, and at any time, modify or discontinue,\ntemporarily or permanently, any portion of our Services. We will use\nthe Taler protocol’s provisions to notify Wallets if our Services are\nto be discontinued. It is your responsibility to ensure that the Taler\nWallet is online at least once every three months to observe these\nnotifications. We shall not be held responsible or liable for any loss\nof funds in the event that we discontinue or depreciate the Services\nand your Taler Wallet fails to transfer out the coins within a three\nmonths notification period.\n\nWe shall not be held liable for any delays, failure in performance, or\ninterruptions of service which result directly or indirectly from any\ncause or condition beyond our reasonable control, including but not\nlimited to: any delay or failure due to any act of God, act of civil\nor military authorities, act of terrorism, civil disturbance, war,\nstrike or other labor dispute, fire, interruption in\ntelecommunications or Internet services or network provider services,\nfailure of equipment and/or software, other catastrophe, or any other\noccurrence which is beyond our reasonable control and shall not affect\nthe validity and enforceability of any remaining provisions.\n\n\nGoverning law, Waivers, Severability and Assignment\n===================================================\n\nNo matter where you’re located, the laws of Switzerland will govern\nthese Terms. If any provisions of these Terms are inconsistent with\nany applicable law, those provisions will be superseded or modified\nonly to the extent such provisions are inconsistent. The parties agree\nto submit to the ordinary courts in Bern, Switzerland for exclusive\njurisdiction of any dispute arising out of or related to your use of\nthe Services or your breach of these Terms.\n\nOur failure to exercise or delay in exercising any right, power, or\nprivilege under this Agreement shall not operate as a waiver; nor\nshall any single or partial exercise of any right, power, or privilege\npreclude any other or further exercise thereof.\n\nYou agree that we may assign any of our rights and/or transfer, sub-\ncontract, or delegate any of our obligations under these Terms.\n\nIf it turns out that any part of this Agreement is invalid, void, or\nfor any reason unenforceable, that term will be deemed severable and\nlimited or eliminated to the minimum extent necessary.\n\nThis Agreement sets forth the entire understanding and agreement as to\nthe subject matter hereof and supersedes any and all prior\ndiscussions, agreements, and understandings of any kind (including,\nwithout limitation, any prior versions of this Agreement) and every\nnature between us. Except as provided for above, any modification to\nthis Agreement must be in writing and must be signed by both parties.\n\n\nQuestions or comments\n=====================\n\nWe welcome comments, questions, concerns, or suggestions. Please send\nus a message on our contact page at legal@taler-systems.com.\n"
        },
        "paytoUris": [
          "payto://x-taler-bank/myexchange"
        ]
      }
    ]
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/paywall-flow/walletdb-default.json' run-pending
child process exited (0 / null)
calling wallet with timetravel arg undefined
running command taler-wallet-cli  --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/paywall-flow/walletdb-default.json' api 'acceptBankIntegratedWithdrawal' '{"exchangeBaseUrl":"http://localhost:8081/","talerWithdrawUri":"taler+http://withdraw/localhost:8082/api/2ad80b55-69e0-4f0f-8996-cdfd7437410c"}'
child process exited (0 / null)
--- wallet core response ---
{
  "type": "response",
  "operation": "acceptBankIntegratedWithdrawal",
  "id": "reqid-1",
  "result": {
    "reservePub": "3X9V8VPRFSAENJYMXA70129W1KYSEMFKD7N0BKS1NGXH6NHDX8SG",
    "confirmTransferUrl": "http://localhost:8082/en/confirm-withdrawal/2ad80b55-69e0-4f0f-8996-cdfd7437410c"
  }
}

--- end of response ---
running command taler-wallet-cli --no-throttle -LTRACE --wallet-db '/tmp/taler-integrationtests-BzHWPW/paywall-flow/walletdb-default.json' run-until-done
test paywall-flow timed out
parent: got result {"status":"fail","reason":"timeout","timeSec":60,"name":"paywall-flow"}
See /tmp/taler-integrationtests-BzHWPW/results.json for details
Skipped: 0/9
Failed: 6/9
Passed: 3/9
FAIL test-merchant-walletharness.sh (exit status: 1)

oec

2022-07-22 13:25

developer   ~0018971

After
- removing libgnunet from the system,
- using gnunet post comit 78cba4124a993ba97923ff0543f2a5942f297cdc and
- manually fixing talerbank to encode t_s (not t_ms)
the tests now all ran through.

Issue History

Date Modified Username Field Change
2022-07-21 17:47 oec New Issue
2022-07-21 17:47 oec Status new => assigned
2022-07-21 17:47 oec Assigned To => Christian Grothoff
2022-07-21 17:47 oec File Added: test-merchant-walletharness.sh.log
2022-07-22 13:25 oec Status assigned => resolved
2022-07-22 13:25 oec Resolution open => fixed
2022-07-22 13:25 oec Fixed in Version => git (master)
2022-07-22 13:25 oec Note Added: 0018971