aboutsummaryrefslogtreecommitdiff
path: root/integrationtests
diff options
context:
space:
mode:
Diffstat (limited to 'integrationtests')
-rw-r--r--integrationtests/.gitignore3
-rw-r--r--integrationtests/common.sh229
-rw-r--r--integrationtests/template.conf227
-rwxr-xr-xintegrationtests/test-base.sh13
-rwxr-xr-xintegrationtests/test-coin-expiration.sh14
-rwxr-xr-xintegrationtests/test-double-link.sh19
-rwxr-xr-xintegrationtests/test-double-spend.sh22
-rwxr-xr-xintegrationtests/test-recoup.sh178
-rwxr-xr-xintegrationtests/test-refund.sh26
-rwxr-xr-xintegrationtests/test-retries.sh47
-rwxr-xr-xintegrationtests/test-tip.sh18
-rwxr-xr-xintegrationtests/test-withdrawal.sh19
12 files changed, 0 insertions, 815 deletions
diff --git a/integrationtests/.gitignore b/integrationtests/.gitignore
deleted file mode 100644
index 447e2f328..000000000
--- a/integrationtests/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.log
-*-prod.conf
-*.wallet.json
diff --git a/integrationtests/common.sh b/integrationtests/common.sh
deleted file mode 100644
index d3f347672..000000000
--- a/integrationtests/common.sh
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-function setup_config() {
- echo -n "Testing for taler-bank-manage"
- taler-bank-manage -h >/dev/null </dev/null || exit_skip " MISSING"
- echo " FOUND"
- echo -n "Testing for taler-wallet-cli"
- taler-wallet-cli -v >/dev/null </dev/null || exit_skip " MISSING"
- echo " FOUND"
- echo -n "Testing for taler-merchant-httpd"
- # TODO "taler-merchant-httpd -v" should not return an error
- [[ "$(taler-merchant-httpd -v)" =~ "taler-merchant-httpd v" ]] || exit_skip " MISSING"
- echo " FOUND"
- bc -v >/dev/null </dev/null || exit_error "Please install bc"
-
- trap shutdown_services EXIT
-
- SCRIPT_NAME=$1
-
- # Where do we write the result?
- export BASEDB=${1:-"auditor-${SCRIPT_NAME}db"}
-
- # Name of the Postgres database we will use for the script.
- # Will be dropped, do NOT use anything that might be used
- # elsewhere
- export TARGET_DB=taler-auditor-${SCRIPT_NAME}db
-
- # Configuration file will be edited, so we create one
- # from the template.
- export CONF=test-${SCRIPT_NAME}.conf
- cp template.conf "$CONF"
-
- export LOG=test-${SCRIPT_NAME}.log
- rm "$LOG" 2>/dev/null || true
-
- export WALLET_DB=wallet-${SCRIPT_NAME}.json
- rm "$WALLET_DB" 2>/dev/null || true
-
- # Clean up
- DATA_DIR=$(taler-config -f -c "$CONF" -s PATHS -o TALER_HOME)
- rm -rf "$DATA_DIR" || true
-
- # reset database
- dropdb "$TARGET_DB" >/dev/null 2>/dev/null || true
- createdb "$TARGET_DB" || exit_skip "Could not create database $TARGET_DB"
-
- # obtain key configuration data
- MASTER_PRIV_FILE=$(taler-config -f -c "$CONF" -s EXCHANGE -o MASTER_PRIV_FILE)
- MASTER_PRIV_DIR=$(dirname "$MASTER_PRIV_FILE")
- mkdir -p "$MASTER_PRIV_DIR"
- gnunet-ecc -g1 "$MASTER_PRIV_FILE" >/dev/null
- MASTER_PUB=$(gnunet-ecc -p "$MASTER_PRIV_FILE")
- EXCHANGE_URL=$(taler-config -c "$CONF" -s EXCHANGE -o BASE_URL)
- MERCHANT_PORT=$(taler-config -c "$CONF" -s MERCHANT -o PORT)
- # shellcheck disable=SC2034
- MERCHANT_URL=http://localhost:${MERCHANT_PORT}/
- BANK_PORT=$(taler-config -c "$CONF" -s BANK -o HTTP_PORT)
- # shellcheck disable=SC2034
- BANK_URL=http://localhost:${BANK_PORT}/
- AUDITOR_URL=http://localhost:8083/
-
- # patch configuration
- taler-config -c "$CONF" -s exchange -o MASTER_PUBLIC_KEY -V "$MASTER_PUB"
- taler-config -c "$CONF" -s merchant-exchange-default -o MASTER_KEY -V "$MASTER_PUB"
- taler-config -c "$CONF" -s exchangedb-postgres -o CONFIG -V "postgres:///$TARGET_DB"
- taler-config -c "$CONF" -s auditordb-postgres -o CONFIG -V "postgres:///$TARGET_DB"
- taler-config -c "$CONF" -s merchantdb-postgres -o CONFIG -V "postgres:///$TARGET_DB"
- taler-config -c "$CONF" -s bank -o database -V "postgres:///$TARGET_DB"
-}
-
-function setup_services() {
- # setup exchange
- echo "Setting up exchange"
- taler-exchange-dbinit -c "$CONF"
- taler-exchange-wire -c "$CONF" 2>taler-exchange-wire.log
- taler-exchange-keyup -L INFO -c "$CONF" -o e2a.dat 2>taler-exchange-keyup.log
-
- # setup auditor
- echo "Setting up auditor"
- taler-auditor-dbinit -c "$CONF"
- taler-auditor-exchange -c "$CONF" -m "$MASTER_PUB" -u "$EXCHANGE_URL"
- taler-auditor-sign -c "$CONF" -u $AUDITOR_URL -r e2a.dat -o a2e.dat -m "$MASTER_PUB"
- rm -f e2a.dat
-
- # provide auditor's signature to exchange
- ABD=$(taler-config -c "$CONF" -s EXCHANGEDB -o AUDITOR_BASE_DIR -f)
- mkdir -p "$ABD"
- mv a2e.dat "$ABD"
-}
-
-function launch_services() {
- # Launch services
- echo "Launching services"
- taler-bank-manage-testing "$CONF" "postgres:///$TARGET_DB" serve-http &>bank-"$SCRIPT_NAME".log &
- taler-exchange-httpd -c "$CONF" 2>taler-exchange-httpd.log &
- # shellcheck disable=SC2034
- EXCHANGE_PID=$!
- taler-merchant-httpd -c "$CONF" -L INFO 2>taler-merchant-httpd.log &
- # shellcheck disable=SC2034
- MERCHANT_PID=$!
- taler-exchange-wirewatch -c "$CONF" 2>taler-exchange-wirewatch.log &
- taler-auditor-httpd -c "$CONF" 2>taler-auditor-httpd.log &
-}
-
-function wait_for_services() {
- # Wait for bank to be available (usually the slowest)
- for _ in $(seq 1 50); do
- echo -n "."
- sleep 0.2
- OK=0
- wget "$BANK_URL" -o /dev/null -O /dev/null >/dev/null || continue
- OK=1
- break
- done
- if [ 1 != $OK ]; then
- exit_skip "Failed to launch bank"
- fi
- # Wait for all other services to be available
- for _ in $(seq 1 50); do
- echo -n "."
- sleep 0.1
- OK=0
- wget "$EXCHANGE_URL" -o /dev/null -O /dev/null >/dev/null || continue
- wget "$MERCHANT_URL" -o /dev/null -O /dev/null >/dev/null || continue
- wget "$AUDITOR_URL" -o /dev/null -O /dev/null >/dev/null || continue
- OK=1
- break
- done
- if [ 1 != $OK ]; then
- shutdown_services
- exit_skip "Failed to launch services"
- fi
- echo " DONE"
-}
-
-# Configure merchant instances
-function configure_merchant() {
- json='
- {
- "id": "default",
- "name": "GNU Taler Merchant",
- "payto_uris": ["payto://x-taler-bank/test_merchant"],
- "address": {},
- "jurisdiction": {},
- "default_max_wire_fee": "TESTKUDOS:1",
- "default_wire_fee_amortization": 3,
- "default_max_deposit_fee": "TESTKUDOS:1",
- "default_wire_transfer_delay": {"d_ms": "forever"},
- "default_pay_delay": {"d_ms": "forever"}
- }
- '
- curl -v -XPOST --data "$json" "${MERCHANT_URL}private/instances"
-}
-
-function normal_start_and_wait() {
- setup_config "$1"
- setup_services
- launch_services
- wait_for_services
- configure_merchant
-}
-
-# provide the service URL as first parameter
-function wait_for_service() {
- for _ in $(seq 1 50); do
- echo -n "."
- sleep 0.1
- wget "$1" -o /dev/null -O /dev/null >/dev/null || continue
- echo " DONE"
- break
- done
-}
-
-function get_balance() {
- taler-wallet-cli --wallet-db="$WALLET_DB" balance 2>>"$LOG"
-}
-
-function assert_less_than() {
- AMOUNT_1=${1//TESTKUDOS:/}
- AMOUNT_2=${2//TESTKUDOS:/}
- if (($(echo "$AMOUNT_1 >= $AMOUNT_2" | bc -l))); then
- exit_error "$1 is not lower than $2"
- fi
-}
-
-function assert_greater_than() {
- AMOUNT_1=${1//TESTKUDOS:/}
- AMOUNT_2=${2//TESTKUDOS:/}
- if (($(echo "$AMOUNT_1 <= $AMOUNT_2" | bc -l))); then
- exit_error "$1 is not greater than $2"
- fi
-}
-
-function assert_equal() {
- [[ "$1" == "$2" ]] || exit_error "$1 is not equal to $2"
-}
-
-function shutdown_services() {
- echo "Shutting down services"
- jobs -p | xargs --no-run-if-empty kill || true
- wait
-
- # clean up
- echo "Final clean up"
- dropdb "$TARGET_DB" >/dev/null 2>/dev/null || true
-
- rm "$WALLET_DB" 2>/dev/null || true
-
- rm -rf "$DATA_DIR" || true
- rm "$CONF"
-}
-
-# Exit, with status code "skip" (no 'real' failure)
-function exit_skip() {
- echo "$1"
- exit 77
-}
-
-function exit_error() {
- echo -e "\033[0;31mError: $1\033[0m"
- exit 1
-}
-
-function exit_success() {
- echo -e "\033[0;32mSUCCESS \o/\033[0m"
- exit 0
-}
diff --git a/integrationtests/template.conf b/integrationtests/template.conf
deleted file mode 100644
index 306a9c674..000000000
--- a/integrationtests/template.conf
+++ /dev/null
@@ -1,227 +0,0 @@
-[exchange]
-KEYDIR = ${TALER_DATA_HOME}/exchange/live-keys/
-REVOCATION_DIR = ${TALER_DATA_HOME}/exchange/revocations/
-MAX_KEYS_CACHING = forever
-DB = postgres
-MASTER_PRIV_FILE = ${TALER_DATA_HOME}/exchange/offline-keys/master.priv
-SERVE = tcp
-UNIXPATH = ${TALER_RUNTIME_DIR}/exchange.http
-UNIXPATH_MODE = 660
-PORT = 8081
-BASE_URL = http://localhost:8081/
-SIGNKEY_DURATION = 4 weeks
-LEGAL_DURATION = 2 years
-LOOKAHEAD_SIGN = 32 weeks 1 day
-LOOKAHEAD_PROVIDE = 4 weeks 1 day
-
-[merchant]
-SERVE = tcp
-PORT = 9966
-UNIXPATH = ${TALER_RUNTIME_DIR}/merchant.http
-UNIXPATH_MODE = 660
-DEFAULT_WIRE_FEE_AMORTIZATION = 1
-DB = postgres
-WIREFORMAT = default
-# Set very low, so we can be sure that the database generated
-# will contain wire transfers "ready" for the aggregator.
-WIRE_TRANSFER_DELAY = 1 minute
-DEFAULT_PAY_DEADLINE = 1 day
-DEFAULT_MAX_DEPOSIT_FEE = TESTKUDOS:0.1
-KEYFILE = ${TALER_DATA_HOME}/merchant/merchant.priv
-DEFAULT_MAX_WIRE_FEE = TESTKUDOS:0.10
-
-# Ensure that merchant reports EVERY deposit confirmation to auditor
-FORCE_AUDIT = YES
-
-[instance-default]
-KEYFILE = ${TALER_DATA_HOME}/merchant/default.priv
-NAME = Merchant Inc.
-TIP_EXCHANGE = http://localhost:8081/
-# TODO necessary to specify a different key here?
-TIP_RESERVE_PRIV_FILENAME = ${TALER_DATA_HOME}/merchant/default.priv
-
-[auditor]
-DB = postgres
-AUDITOR_PRIV_FILE = ${TALER_DATA_HOME}/auditor/offline-keys/auditor.priv
-SERVE = tcp
-UNIXPATH = ${TALER_RUNTIME_DIR}/exchange.http
-UNIXPATH_MODE = 660
-PORT = 8083
-AUDITOR_URL = http://localhost:8083/
-TINY_AMOUNT = TESTKUDOS:0.01
-
-[PATHS]
-TALER_HOME = ${PWD}/generate_auditordb_home/
-TALER_DATA_HOME = $TALER_HOME/.local/share/taler/
-TALER_CONFIG_HOME = $TALER_HOME/.config/taler/
-TALER_CACHE_HOME = $TALER_HOME/.cache/taler/
-TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/taler-system-runtime/
-
-[bank]
-DATABASE = postgres:///taler-auditor-basedb
-MAX_DEBT = TESTKUDOS:50.0
-MAX_DEBT_BANK = TESTKUDOS:100000.0
-HTTP_PORT = 8082
-SUGGESTED_EXCHANGE = http://localhost:8081/
-SUGGESTED_EXCHANGE_PAYTO = payto://x-taler-bank/localhost/2
-ALLOW_REGISTRATIONS = YES
-
-[exchangedb]
-AUDITOR_BASE_DIR = ${TALER_DATA_HOME}/auditors/
-WIREFEE_BASE_DIR = ${TALER_DATA_HOME}/exchange/wirefees/
-IDLE_RESERVE_EXPIRATION_TIME = 4 weeks
-LEGAL_RESERVE_EXPIRATION_TIME = 7 years
-
-[exchange_keys]
-signkey_duration = 4 weeks
-legal_duration = 2 years
-lookahead_sign = 32 weeks 1 day
-lookahead_provide = 4 weeks 1 day
-
-[taler]
-CURRENCY = TESTKUDOS
-CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
-
-[exchange-account-1]
-WIRE_RESPONSE = ${TALER_DATA_HOME}/exchange/account-1.json
-PAYTO_URI = payto://x-taler-bank/localhost/Exchange
-enable_debit = yes
-enable_credit = yes
-WIRE_GATEWAY_URL = "http://localhost:8082/taler-wire-gateway/Exchange/"
-WIRE_GATEWAY_AUTH_METHOD = basic
-USERNAME = Exchange
-PASSWORD = x
-
-[merchant-account-merchant]
-PAYTO_URI = payto://x-taler-bank/localhost/42
-WIRE_RESPONSE = ${TALER_CONFIG_HOME}/merchant/account-3.json
-HONOR_default = YES
-ACTIVE_default = YES
-
-[fees-x-taler-bank]
-wire-fee-2020 = TESTKUDOS:0.01
-closing-fee-2020 = TESTKUDOS:0.01
-wire-fee-2021 = TESTKUDOS:0.01
-closing-fee-2021 = TESTKUDOS:0.01
-wire-fee-2022 = TESTKUDOS:0.01
-closing-fee-2022 = TESTKUDOS:0.01
-wire-fee-2023 = TESTKUDOS:0.01
-closing-fee-2023 = TESTKUDOS:0.01
-wire-fee-2024 = TESTKUDOS:0.01
-closing-fee-2024 = TESTKUDOS:0.01
-wire-fee-2025 = TESTKUDOS:0.01
-closing-fee-2025 = TESTKUDOS:0.01
-wire-fee-2026 = TESTKUDOS:0.01
-closing-fee-2026 = TESTKUDOS:0.01
-wire-fee-2027 = TESTKUDOS:0.01
-closing-fee-2027 = TESTKUDOS:0.01
-wire-fee-2028 = TESTKUDOS:0.01
-closing-fee-2028 = TESTKUDOS:0.01
-
-[merchant-instance-wireformat-default]
-TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/tutorial.json
-
-[merchant-exchange-default]
-EXCHANGE_BASE_URL = http://localhost:8081/
-CURRENCY = TESTKUDOS
-
-[payments-generator]
-currency = TESTKUDOS
-instance = default
-bank = http://localhost:8082/
-merchant = http://localhost:9966/
-exchange_admin = http://localhost:18080/
-exchange-admin = http://localhost:18080/
-exchange = http://localhost:8081/
-
-[coin_kudos_ct_1]
-value = TESTKUDOS:0.01
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.01
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_ct_10]
-value = TESTKUDOS:0.10
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_1]
-value = TESTKUDOS:1
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.02
-fee_deposit = TESTKUDOS:0.02
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_2]
-value = TESTKUDOS:2
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.03
-fee_deposit = TESTKUDOS:0.03
-fee_refresh = TESTKUDOS:0.04
-fee_refund = TESTKUDOS:0.02
-rsa_keysize = 1024
-
-[coin_kudos_4]
-value = TESTKUDOS:4
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.03
-fee_deposit = TESTKUDOS:0.03
-fee_refresh = TESTKUDOS:0.04
-fee_refund = TESTKUDOS:0.02
-rsa_keysize = 1024
-
-[coin_kudos_5]
-value = TESTKUDOS:5
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_8]
-value = TESTKUDOS:8
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.05
-fee_deposit = TESTKUDOS:0.02
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.04
-rsa_keysize = 1024
-
-[coin_kudos_10]
-value = TESTKUDOS:10
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[benchmark]
-BANK_DETAILS = bank_details.json
-MERCHANT_DETAILS = merchant_details.json
diff --git a/integrationtests/test-base.sh b/integrationtests/test-base.sh
deleted file mode 100755
index 676ba7fb7..000000000
--- a/integrationtests/test-base.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-# Script to generate the basic database for auditor
-# testing from a 'correct' interaction between exchange,
-# wallet and merchant.
-
-source "common.sh"
-normal_start_and_wait "base"
-
-# run wallet CLI
-echo "Running wallet"
-taler-wallet-cli testing integrationtest -e "$EXCHANGE_URL" -m "$MERCHANT_URL" -b "$BANK_URL"
-
-exit_success
diff --git a/integrationtests/test-coin-expiration.sh b/integrationtests/test-coin-expiration.sh
deleted file mode 100755
index 83f7477bf..000000000
--- a/integrationtests/test-coin-expiration.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet automatically refreshes coins for they expire
-
-source "common.sh"
-normal_start_and_wait "coin-expiration"
-
-echo "Withdraw TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" >>"$LOG" 2>>"$LOG"
-echo "Balance after withdrawal: $(get_balance)"
-
-# TODO time-travel to check that wallet actually refreshed coin before expiration
-taler-wallet-cli --wallet-db="$WALLET_DB" advanced dump-coins
-
-exit_success
diff --git a/integrationtests/test-double-link.sh b/integrationtests/test-double-link.sh
deleted file mode 100755
index d5f5d3329..000000000
--- a/integrationtests/test-double-link.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Script to check that Uris are properly handled when used a second time
-
-source "common.sh"
-normal_start_and_wait "double-link"
-
-echo "Getting pay taler:// Uri"
-PAY_URI=$(taler-wallet-cli testing gen-pay-uri -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:1" -s "foo" | grep -E -o 'taler://.*')
-echo "Trying to pay without balance"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" 2>&1 | grep -q "insufficient balance" || exit_error "not reporting insufficient balance"
-echo "Withdrawing"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" > /dev/null
-echo "Trying to pay again, should work this time"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" > /dev/null
-echo "Trying to pay what was paid already should throw error"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" 2>&1 | grep -q "already paid" || exit_error "not reporting already paid"
-echo "Already paid properly detected"
-
-exit_success
diff --git a/integrationtests/test-double-spend.sh b/integrationtests/test-double-spend.sh
deleted file mode 100755
index 81a4563a6..000000000
--- a/integrationtests/test-double-spend.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet can not double spend coins and handles this error well
-
-source "common.sh"
-normal_start_and_wait "double-spend"
-
-echo "Withdraw TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" >/dev/null
-# Copy wallet database before spending coins
-cp "$WALLET_DB" "$WALLET_DB.bak"
-echo "Spend all the money"
-taler-wallet-cli --wallet-db="$WALLET_DB" testing test-pay -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:9.5" -s "foo"
-echo "New balance: $(get_balance)"
-# Restore old wallet database
-mv "$WALLET_DB.bak" "$WALLET_DB"
-echo "Balance after getting old coins back: $(get_balance)"
-echo "Try to double-spend"
-# TODO this should probably fail more gracefully
-# "exchange_reply: { hint: 'insufficient funds', code: 1200 }
-taler-wallet-cli --wallet-db="$WALLET_DB" testing test-pay -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:9.5" -s "foo"
-
-exit_success
diff --git a/integrationtests/test-recoup.sh b/integrationtests/test-recoup.sh
deleted file mode 100755
index 72f7e1ad5..000000000
--- a/integrationtests/test-recoup.sh
+++ /dev/null
@@ -1,178 +0,0 @@
-#!/bin/bash
-# Script to test revocation.
-#
-# Requires the wallet CLI to be installed and in the path. Furthermore, the
-# user running this script must be Postgres superuser and be allowed to
-# create/drop databases.
-# Also the jq utility needs to be installed
-
-echo -n "Testing for jq"
-jq --version >/dev/null </dev/null || exit_skip " MISSING"
-echo " FOUND"
-
-source "common.sh"
-setup_config "recoup"
-
-TMP_DIR=$(mktemp -d revocation-tmp-XXXXXX)
-
-taler-config -c "$CONF" -s exchange -o KEYDIR -V "${TMP_DIR}/keydir/"
-taler-config -c "$CONF" -s exchange -o REVOCATION_DIR -V "${TMP_DIR}/revdir/"
-
-setup_services
-launch_services
-wait_for_services
-
-# run wallet CLI
-echo "Running wallet"
-taler-wallet-cli --wallet-db=$WALLET_DB --no-throttle \
- testing withdraw \
- -e $EXCHANGE_URL \
- -b $BANK_URL \
- -a TESTKUDOS:8
-
-
-export coins=$(taler-wallet-cli --wallet-db=$WALLET_DB advanced dump-coins)
-
-# Find coin we want to revoke
-export rc=$(echo "$coins" | jq -r '[.coins[] | select((.denom_value == "TESTKUDOS:2"))][0] | .coin_pub')
-# Find the denom
-export rd=$(echo "$coins" | jq -r '[.coins[] | select((.denom_value == "TESTKUDOS:2"))][0] | .denom_pub_hash')
-echo "Revoking denomination ${rd} (to affect coin ${rc})"
-# Find all other coins, which will be suspended
-export susp=$(echo "$coins" | jq --arg rc "$rc" '[.coins[] | select(.coin_pub != $rc) | .coin_pub]')
-
-# Do the revocation
-taler-exchange-keyup -o e2a2.dat -c $CONF -r $rd
-taler-auditor-sign -c $CONF -u $AUDITOR_URL -r e2a2.dat -o a2e2.dat -m $MASTER_PUB
-rm e2a2.dat
-mv a2e2.dat $ABD
-
-# Restart the exchange...
-kill -SIGUSR1 $EXCHANGE_PID
-sleep 1 # Give exchange time to re-scan data
-echo "Restarted the exchange post revocation"
-
-# Now we suspend the other coins, so later we will pay with the recouped coin
-taler-wallet-cli --wallet-db=$WALLET_DB advanced suspend-coins "$susp"
-
-# Update exchange /keys so recoup gets scheduled
-taler-wallet-cli --wallet-db=$WALLET_DB exchanges update \
- -f $EXCHANGE_URL
-
-# Block until scheduled operations are done
-taler-wallet-cli --wallet-db=$WALLET_DB run-until-done
-
-# Now we buy something, only the coins resulting from recouped will be
-# used, as other ones are suspended
-taler-wallet-cli --wallet-db=$WALLET_DB testing test-pay \
- -m $MERCHANT_URL -k sandbox \
- -a "TESTKUDOS:1" -s "foo"
-taler-wallet-cli --wallet-db=$WALLET_DB run-until-done
-
-echo "Purchase with recoup'ed coin (via reserve) done"
-
-# Find coin we want to refresh, then revoke
-export rrc=$(echo "$coins" | jq -r '[.coins[] | select((.denom_value == "TESTKUDOS:5"))][0] | .coin_pub')
-# Find the denom
-export zombie_denom=$(echo "$coins" | jq -r '[.coins[] | select((.denom_value == "TESTKUDOS:5"))][0] | .denom_pub_hash')
-
-echo "Will refresh coin ${rrc} of denomination ${zombie_denom}"
-# Find all other coins, which will be suspended
-export susp=$(echo "$coins" | jq --arg rrc "$rrc" '[.coins[] | select(.coin_pub != $rrc) | .coin_pub]')
-
-export rrc
-export zombie_denom
-
-# Travel into the future! (must match DURATION_WITHDRAW option)
-export TIMETRAVEL="--timetravel=604800000000"
-
-echo "Launching exchange 1 week in the future"
-kill -TERM $EXCHANGE_PID
-taler-exchange-httpd $TIMETRAVEL -c $CONF 2> taler-exchange-httpd.log &
-export EXCHANGE_PID=$!
-
-# Wait for exchange to be available
-for n in `seq 1 50`
-do
- echo -n "."
- sleep 0.1
- OK=0
- # exchange
- wget http://localhost:8081/ -o /dev/null -O /dev/null >/dev/null || continue
- OK=1
- break
-done
-
-echo "Refreshing coin $rrc"
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB advanced force-refresh "$rrc"
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB run-until-done
-
-# Update our list of the coins
-export coins=$(taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB advanced dump-coins)
-
-# Find resulting refreshed coin
-export freshc=$(echo "$coins" | jq -r --arg rrc "$rrc" \
- '[.coins[] | select((.refresh_parent_coin_pub == $rrc) and .denom_value == "TESTKUDOS:0.1")][0] | .coin_pub'
-)
-
-# Find the denom of freshc
-export fresh_denom=$(echo "$coins" | jq -r --arg rrc "$rrc" \
- '[.coins[] | select((.refresh_parent_coin_pub == $rrc) and .denom_value == "TESTKUDOS:0.1")][0] | .denom_pub_hash'
-)
-
-echo "Coin ${freshc} of denomination ${fresh_denom} is the result of the refresh"
-
-# Find all other coins, which will be suspended
-export susp=$(echo "$coins" | jq --arg freshc "$freshc" '[.coins[] | select(.coin_pub != $freshc) | .coin_pub]')
-
-
-# Do the revocation of freshc
-echo "Revoking ${fresh_denom} (to affect coin ${freshc})"
-taler-exchange-keyup -c $CONF -o e2a3.dat -r $fresh_denom
-taler-auditor-sign -c $CONF -u $AUDITOR_URL -r e2a3.dat -o a2e3.dat -m $MASTER_PUB
-rm e2a3.dat
-mv a2e3.dat $ABD
-
-# Restart the exchange...
-kill -SIGUSR1 $EXCHANGE_PID
-sleep 1 # give exchange time to re-scan data
-
-
-# Now we suspend the other coins, so later we will pay with the recouped coin
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB advanced suspend-coins "$susp"
-
-# Update exchange /keys so recoup gets scheduled
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB exchanges update \
- -f $EXCHANGE_URL
-
-# Block until scheduled operations are done
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB run-until-done
-
-echo "Restarting merchant (so new keys are known)"
-kill -TERM $MERCHANT_PID
-taler-merchant-httpd -c $CONF -L INFO 2> taler-merchant-httpd.log &
-MERCHANT_PID=$!
-# Wait for merchant to be again available
-for n in `seq 1 50`
-do
- echo -n "."
- sleep 0.1
- OK=0
- # merchant
- wget http://localhost:9966/ -o /dev/null -O /dev/null >/dev/null || continue
- OK=1
- break
-done
-
-# Now we buy something, only the coins resulting from recoup+refresh will be
-# used, as other ones are suspended
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB testing test-pay \
- -m $MERCHANT_URL -k sandbox \
- -a "TESTKUDOS:0.02" -s "bar"
-taler-wallet-cli $TIMETRAVEL --wallet-db=$WALLET_DB run-until-done
-
-echo "SUCCESS: Bought something with refresh-recouped coin"
-
-rm -r "$TMP_DIR"
-
-exit 0
diff --git a/integrationtests/test-refund.sh b/integrationtests/test-refund.sh
deleted file mode 100755
index 7b8fbdef7..000000000
--- a/integrationtests/test-refund.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet can handle refund URIs and actually process the refund
-
-source "common.sh"
-normal_start_and_wait "refund"
-
-echo "Withdraw TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" >>"$LOG" 2>>"$LOG"
-BALANCE_1=$(get_balance)
-echo "Balance after withdrawal: $BALANCE_1"
-REFUND_URI=$(taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing gen-refund-uri \
- -m "$MERCHANT_URL" -k sandbox \
- -s "first refund" -a "TESTKUDOS:8" -r "TESTKUDOS:2" 2>>"$LOG" | grep -E -m 1 -o "taler://refund.*insecure=1")
-BALANCE_2=$(get_balance)
-echo "Balance after payment: $BALANCE_2"
-assert_less_than "$BALANCE_2" "$BALANCE_1"
-taler-wallet-cli --wallet-db="$WALLET_DB" balance 2>>"$LOG"
-echo "Handling refund: $REFUND_URI"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri "$REFUND_URI" 2>"$LOG"
-taler-wallet-cli --wallet-db="$WALLET_DB" run-until-done 2>>"$LOG" >>"$LOG"
-BALANCE_3=$(get_balance)
-echo "Balance after first refund: $BALANCE_3"
-assert_greater_than "$BALANCE_3" "$BALANCE_2"
-# TODO how to test second refund for same purchase?
-
-exit_success
diff --git a/integrationtests/test-retries.sh b/integrationtests/test-retries.sh
deleted file mode 100755
index 3d953eab0..000000000
--- a/integrationtests/test-retries.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet retries operations when services are not reachable
-
-source "common.sh"
-normal_start_and_wait "retries"
-
-# TODO try withdrawal when bank is down
-
-echo "Withdraw TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" 2>>"$LOG" >>"$LOG"
-BALANCE_1=$(get_balance)
-echo "Balance after withdrawal: $BALANCE_1"
-echo "Getting pay taler:// Uri"
-PAY_URI=$(taler-wallet-cli testing gen-pay-uri -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:1" -s "foo" | grep -E -o 'taler://.*')
-echo "Trying to pay with exchange down, will fail"
-kill "$EXCHANGE_PID" && sleep 1
-ps -p "$EXCHANGE_PID" >"$LOG" && exit_error "exchange still alive"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" 2>>"$LOG" >>"$LOG" && exit_error "could pay with exchange down"
-echo "Re-launching exchange"
-taler-exchange-httpd -c "$CONF" 2>taler-exchange-httpd.log &
-EXCHANGE_PID=$!
-echo -n "Wait for exchange to start"
-wait_for_service "$EXCHANGE_URL"
-echo "Retrying operations with exchange up"
-taler-wallet-cli --wallet-db="$WALLET_DB" run-until-done 2>>"$LOG" >>"$LOG"
-BALANCE_2=$(get_balance)
-echo "Balance after re-tried payment: $BALANCE_2"
-assert_less_than "$BALANCE_2" "$BALANCE_1"
-
-echo "Getting pay taler:// Uri"
-PAY_URI=$(taler-wallet-cli testing gen-pay-uri -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:1" -s "foo" | grep -E -o 'taler://.*')
-echo "Trying to pay with merchant down, will fail"
-kill "$MERCHANT_PID" && sleep 1
-ps -p "$MERCHANT_PID" >"$LOG" && exit_error "merchant still alive"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" 2>>"$LOG" >>"$LOG" && exit_error "could pay with merchant down"
-echo "Re-launching merchant"
-taler-merchant-httpd -c "$CONF" -L INFO 2>taler-merchant-httpd.log &
-MERCHANT_PID=$!
-echo -n "Wait for merchant to start"
-wait_for_service "$MERCHANT_URL"
-echo "Retrying payment with merchant up"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri --yes "$PAY_URI" 2>>"$LOG" >>"$LOG"
-BALANCE_3=$(get_balance)
-echo "Balance after re-tried payment: $BALANCE_3"
-assert_less_than "$BALANCE_3" "$BALANCE_2"
-
-exit_success
diff --git a/integrationtests/test-tip.sh b/integrationtests/test-tip.sh
deleted file mode 100755
index 8bdcc6ef3..000000000
--- a/integrationtests/test-tip.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet can handle tip URIs and actually process the tips
-
-source "common.sh"
-normal_start_and_wait "tip"
-
-# TODO fund exchange tipping reserve: 404 tipping reserve unknown at exchange
-TIP_URI=$(taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing gen-tip-uri \
- -m "$MERCHANT_URL" -k sandbox -a "TESTKUDOS:5" 2>>"$LOG" | grep -E -m 1 -o "taler://tip.*insecure=1")
-echo -n "Balance after tip: "
-taler-wallet-cli --wallet-db="$WALLET_DB" balance 2>>"$LOG"
-echo "Handling tip: $TIP_URI"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle handle-uri "$TIP_URI" 2>"$LOG"
-taler-wallet-cli --wallet-db="$WALLET_DB" run-until-done 2>>"$LOG" >>"$LOG"
-echo -n "Balance after first tip: "
-taler-wallet-cli --wallet-db="$WALLET_DB" balance 2>>"$LOG"
-
-exit_success
diff --git a/integrationtests/test-withdrawal.sh b/integrationtests/test-withdrawal.sh
deleted file mode 100755
index 1450f6258..000000000
--- a/integrationtests/test-withdrawal.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Script to check that the wallet does a withdrawal correctly
-
-source "common.sh"
-normal_start_and_wait "withdrawal"
-
-echo "Withdraw 5 TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:5" >>"$LOG" 2>>"$LOG"
-BALANCE_1=$(get_balance)
-assert_equal "$BALANCE_1" "TESTKUDOS:4.84"
-echo "Balance after withdrawal: $BALANCE_1"
-
-echo "Withdraw 10 TESTKUDOS"
-taler-wallet-cli --wallet-db="$WALLET_DB" --no-throttle testing withdraw -e "$EXCHANGE_URL" -b "$BANK_URL" -a "TESTKUDOS:10" >>"$LOG" 2>>"$LOG"
-BALANCE_2=$(get_balance)
-assert_equal "$BALANCE_2" "TESTKUDOS:14.66"
-echo "Balance after withdrawal: $BALANCE_2"
-
-exit_success