API: Standardized JSON list responses with Pydantic schemas and Pagination; add sort_by/sort_dir validation with whitelists; consistent JSON 401 for /api/*; structured logging for sorting/pagination; add pydantic dep; add Docker smoke script and README docs.
This commit is contained in:
27
scripts/smoke.sh
Normal file
27
scripts/smoke.sh
Normal file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
BASE_URL="${BASE_URL:-http://localhost:8000}"
|
||||
|
||||
echo "[1] Health check"
|
||||
curl -sf "$BASE_URL/health" >/dev/null || { echo "Health check failed"; exit 1; }
|
||||
|
||||
echo "[2] API unauthenticated should return 401 JSON"
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/api/rolodex")
|
||||
if [ "$code" != "401" ]; then
|
||||
echo "Expected 401, got $code"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat << 'EX'
|
||||
Login via UI at /login to create a session cookie in your browser.
|
||||
For scripted tests, copy the cookie to cookies.txt and run examples:
|
||||
|
||||
curl -b cookies.txt "$BASE_URL/api/rolodex?page=1&page_size=2&sort_by=last_name&sort_dir=asc"
|
||||
curl -b cookies.txt "$BASE_URL/api/files?page=1&page_size=2&sort_by=open_date&sort_dir=desc"
|
||||
curl -b cookies.txt "$BASE_URL/api/ledger?page=1&page_size=2&sort_by=transaction_date&sort_dir=desc"
|
||||
EX
|
||||
|
||||
echo "Smoke tests completed."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user