release 1.27.0: exchange /keys trailing-slash WARN + docs links
This commit is contained in:
parent
b5602b261f
commit
fb62791a05
5 changed files with 31 additions and 2 deletions
2
TESTS.md
2
TESTS.md
|
|
@ -51,7 +51,7 @@ Numbering follows **executed** checks (early skip may shift later NN inside the
|
||||||
|
|
||||||
| Group | Checks (typical) |
|
| Group | Checks (typical) |
|
||||||
|-------|------------------|
|
|-------|------------------|
|
||||||
| **www.exchange-** | `/config`, currency, **alt_unit_names**; `/keys` (+ alt soft); `/intro/`, `/`; **`/terms`**, **`/privacy`**, `/terms/` |
|
| **www.exchange-** | `/config`, currency, **alt_unit_names**; `/keys` (+ alt soft); **`/keys` vs `/keys/`** (WARN if disagree — proxy slash; docs [GET /keys](https://docs.taler.net/core/api-exchange.html#get--keys), [base URL](https://docs.taler.net/core/api-common.html)); `/intro/`, `/`; **`/terms`**, **`/privacy`**, `/terms/` |
|
||||||
| **www.perf-** | outside-in RTT: bank/exchange/merchant `/config`, keys, webui, intro — ms; WARN ≥ `PERF_WARN_MS` (8000); ERROR ≥ `PERF_FAIL_MS` (20000) |
|
| **www.perf-** | outside-in RTT: bank/exchange/merchant `/config`, keys, webui, intro — ms; WARN ≥ `PERF_WARN_MS` (8000); ERROR ≥ `PERF_FAIL_MS` (20000) |
|
||||||
| **www.stats-** | `/intro/stats.json` **reachable**; **timestamps** (`generated_at_unix` + human/ISO); **freshness** vs wall clock (`STATS_STALE_SECS` WARN, `STATS_FAIL_SECS` ERROR); **display fields** (bank-shape withdraws/accounts, or exchange-db / merchant-db keys); optional performance block; shared-feed equal `gen_unix` when bank collector is published to all three |
|
| **www.stats-** | `/intro/stats.json` **reachable**; **timestamps** (`generated_at_unix` + human/ISO); **freshness** vs wall clock (`STATS_STALE_SECS` WARN, `STATS_FAIL_SECS` ERROR); **display fields** (bank-shape withdraws/accounts, or exchange-db / merchant-db keys); optional performance block; shared-feed equal `gen_unix` when bank collector is published to all three |
|
||||||
| **www.bank-** | `/config`, currency, alt_unit_names; integration/webui/intro; **auto-account.json** (required GOA/local; skip/soft off-GOA e.g. TESTPAYSAN); `/terms`, `/privacy` |
|
| **www.bank-** | `/config`, currency, alt_unit_names; integration/webui/intro; **auto-account.json** (required GOA/local; skip/soft off-GOA e.g. TESTPAYSAN); `/terms`, `/privacy` |
|
||||||
|
|
|
||||||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
1.26.1
|
1.27.0
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre
|
||||||
|
|
||||||
| Tag | Date (UTC) | Notes |
|
| Tag | Date (UTC) | Notes |
|
||||||
|-----|------------|--------|
|
|-----|------------|--------|
|
||||||
|
| **v1.27.0** | 2026-09-05 | **Feature:** exchange `/keys` vs `/keys/` trailing-slash check (WARN if disagree; docs link to GET /keys + base URL). `check_urls.sh` + `check_sanity.sh` + TESTS.md. |
|
||||||
| **v1.26.1** | 2026-08-31 | **Bugfix:** public order settle accepts `StatusPaidResponse` (`refunded`/`refund_taken`); `paid`/`order_status` not on public GET. |
|
| **v1.26.1** | 2026-08-31 | **Bugfix:** public order settle accepts `StatusPaidResponse` (`refunded`/`refund_taken`); `paid`/`order_status` not on public GET. |
|
||||||
| **v1.26.0** | 2026-08-30 | **Feature:** `--wallet-db PATH` / `--wallet-migrate` (taler-wallet-cli / taler-harness names) for e2e, ladder, zero-pay. TESTPAYSAN: one Quadlet `stage-testpaysan`; e2e token-pay via env `E2E_TOKEN_*` / `--choice-index`. Stack READMEs `README_testpaysan.md` / `README_mytops.md`. |
|
| **v1.26.0** | 2026-08-30 | **Feature:** `--wallet-db PATH` / `--wallet-migrate` (taler-wallet-cli / taler-harness names) for e2e, ladder, zero-pay. TESTPAYSAN: one Quadlet `stage-testpaysan`; e2e token-pay via env `E2E_TOKEN_*` / `--choice-index`. Stack READMEs `README_testpaysan.md` / `README_mytops.md`. |
|
||||||
| **v1.24.0** | 2026-08-30 | **Feature / zero-pay:** public-template pays as phase `zero-pay` (`check_zero_pay.sh`). Default merchant **stage.my.taler-ops.ch** (CHF:0 stickers). Wrapper `pay_talersticker_zero.sh` COUNT=100. TESTPAYSAN: empty POST `{}` + auto-confirm of bank wires (host `auto-confirm-withdrawals`). Not in default 4h PHASES (use COUNT=1). |
|
| **v1.24.0** | 2026-08-30 | **Feature / zero-pay:** public-template pays as phase `zero-pay` (`check_zero_pay.sh`). Default merchant **stage.my.taler-ops.ch** (CHF:0 stickers). Wrapper `pay_talersticker_zero.sh` COUNT=100. TESTPAYSAN: empty POST `{}` + auto-confirm of bank wires (host `auto-confirm-withdrawals`). Not in default 4h PHASES (use COUNT=1). |
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,18 @@ section "sanity · exchange"
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
expect_code "exchange public /config" 200 "$EXCHANGE_PUBLIC/config"
|
expect_code "exchange public /config" 200 "$EXCHANGE_PUBLIC/config"
|
||||||
expect_code "exchange public /keys" 200 "$EXCHANGE_PUBLIC/keys"
|
expect_code "exchange public /keys" 200 "$EXCHANGE_PUBLIC/keys"
|
||||||
|
# /keys vs /keys/: WARN if only one works (proxy slash). Docs:
|
||||||
|
# https://docs.taler.net/core/api-exchange.html#get--keys
|
||||||
|
# https://docs.taler.net/core/api-common.html (base URL ends with /; append "keys")
|
||||||
|
_k=$(http_code "$EXCHANGE_PUBLIC/keys")
|
||||||
|
_ks=$(http_code "$EXCHANGE_PUBLIC/keys/")
|
||||||
|
if [ "$_k" = "200" ] && [ "$_ks" = "200" ]; then
|
||||||
|
ok "exchange public /keys trailing-slash" "both 200"
|
||||||
|
elif [ "$_k" = "200" ]; then
|
||||||
|
warn "exchange public /keys trailing-slash" "/keys=200 /keys/=$_ks (docs: GET {base}keys)"
|
||||||
|
elif [ "$_ks" = "200" ]; then
|
||||||
|
warn "exchange public /keys trailing-slash" "/keys=$_k /keys/=200"
|
||||||
|
fi
|
||||||
expect_code "exchange public /terms" 200 "$EXCHANGE_PUBLIC/terms"
|
expect_code "exchange public /terms" 200 "$EXCHANGE_PUBLIC/terms"
|
||||||
|
|
||||||
code=$(http_body "$EXCHANGE_PUBLIC/config" "$tmp/ex-config.json")
|
code=$(http_body "$EXCHANGE_PUBLIC/config" "$tmp/ex-config.json")
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,22 @@ if [ "${LOCAL_STACK:-1}" = "1" ]; then
|
||||||
else
|
else
|
||||||
check_url_soft "exchange /keys" 200 "$EXCHANGE_PUBLIC/keys"
|
check_url_soft "exchange /keys" 200 "$EXCHANGE_PUBLIC/keys"
|
||||||
fi
|
fi
|
||||||
|
# Trailing-slash twin: docs define GET {base_url}keys with base_url ending in /
|
||||||
|
# (https://docs.taler.net/core/api-exchange.html#get--keys ,
|
||||||
|
# https://docs.taler.net/core/api-common.html — WebURL/base URL).
|
||||||
|
# /keys vs /keys/ disagreement is usually a reverse-proxy quirk → WARN, not ERROR
|
||||||
|
# (bare /keys remaining 200 is enough for wallets).
|
||||||
|
code_keys=$(http_code "$EXCHANGE_PUBLIC/keys")
|
||||||
|
code_keys_slash=$(http_code "$EXCHANGE_PUBLIC/keys/")
|
||||||
|
if [ "$code_keys" = "200" ] && [ "$code_keys_slash" = "200" ]; then
|
||||||
|
ok "exchange /keys trailing-slash" "both /keys and /keys/ → 200"
|
||||||
|
elif [ "$code_keys" = "200" ] && [ "$code_keys_slash" != "200" ]; then
|
||||||
|
warn "exchange /keys trailing-slash" \
|
||||||
|
"/keys=200 /keys/=$code_keys_slash (proxy slash quirk; see docs.taler.net exchange GET /keys)"
|
||||||
|
elif [ "$code_keys" != "200" ] && [ "$code_keys_slash" = "200" ]; then
|
||||||
|
warn "exchange /keys trailing-slash" \
|
||||||
|
"/keys=$code_keys /keys/=200 (prefer bare /keys; check Caddy/nginx)"
|
||||||
|
fi
|
||||||
# /keys should also expose currency_specification.alt_unit_names when present
|
# /keys should also expose currency_specification.alt_unit_names when present
|
||||||
code=$(http_body "$EXCHANGE_PUBLIC/keys" "$tmp/ek.json")
|
code=$(http_body "$EXCHANGE_PUBLIC/keys" "$tmp/ek.json")
|
||||||
if [ "$code" = "200" ]; then
|
if [ "$code" = "200" ]; then
|
||||||
|
|
|
||||||
Reference in a new issue