#!/usr/bin/env bash # Unit tests for normalize_taler_uri / taler_uri_has_default_port (lib.sh). # Run: ./tests/test_normalize_taler_uri.sh set -euo pipefail ROOT=$(cd "$(dirname "$0")/.." && pwd) # shellcheck source=../lib.sh source "$ROOT/lib.sh" pass=0 fail=0 assert_eq() { local name="$1" got="$2" want="$3" if [ "$got" = "$want" ]; then pass=$((pass + 1)) else echo "FAIL $name" >&2 echo " got: $got" >&2 echo " want: $want" >&2 fail=$((fail + 1)) fi } assert_true() { local name="$1" if "$@"; then # shift name : fi } # --- strip :443 / :80 --- assert_eq "withdraw :443/" \ "$(normalize_taler_uri 'taler://withdraw/bank.hacktivism.ch:443/taler-integration/abc-123')" \ "taler://withdraw/bank.hacktivism.ch/taler-integration/abc-123" assert_eq "withdraw :443 end" \ "$(normalize_taler_uri 'taler://withdraw/bank.example:443')" \ "taler://withdraw/bank.example" assert_eq "pay :443" \ "$(normalize_taler_uri 'taler://pay/taler.hacktivism.ch:443/instances/x/orders/y?c=z')" \ "taler://pay/taler.hacktivism.ch/instances/x/orders/y?c=z" assert_eq "pay-template :80" \ "$(normalize_taler_uri 'taler://pay-template/shop.example:80/instances/i/t')" \ "taler://pay-template/shop.example/instances/i/t" assert_eq "already clean" \ "$(normalize_taler_uri 'taler://withdraw/bank.hacktivism.ch/taler-integration/uuid')" \ "taler://withdraw/bank.hacktivism.ch/taler-integration/uuid" assert_eq "empty" "$(normalize_taler_uri '')" "" # non-default port kept assert_eq "keep :8443" \ "$(normalize_taler_uri 'taler://withdraw/bank.example:8443/taler-integration/x')" \ "taler://withdraw/bank.example:8443/taler-integration/x" # has_default_port detector if taler_uri_has_default_port 'taler://withdraw/h:443/p'; then pass=$((pass + 1)) else echo "FAIL detector should match :443" >&2 fail=$((fail + 1)) fi if taler_uri_has_default_port 'taler://withdraw/h/p'; then echo "FAIL detector should not match clean URI" >&2 fail=$((fail + 1)) else pass=$((pass + 1)) fi echo "normalize_taler_uri tests: pass=$pass fail=$fail" [ "$fail" -eq 0 ]