upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2026-05-17test_cashu (10/10) + test_session (18/18): all 86 unit tests passingYour Name
- Expand esp_http_client.h stub: full config struct + method enum + init/perform/cleanup - Add portTICK_PERIOD_MS + esp_err_to_name to stubs - session.c: reject duplicate spent secrets in session_create (double-spend protection) - .gitignore: add test binaries
2026-05-17test_nostr_event: 23/23 passing — NIP-01 event ID, Schnorr signing, JSON ↵Your Name
serialization
2026-05-17test_identity: 24/24 passing — HMAC-SHA512 derivation, MAC bits, SSID/IP ↵Your Name
determinism
2026-05-17Testing infrastructure: AGENTS.md rules + unit test framework + geohash ↵Your Name
tests (11/11 pass) - Add AGENTS.md: full project context + mandatory testing rules for AI sessions - Add tests/unit/ with host-compiled C unit test infrastructure - Clean stubs approach: ESP-IDF type stubs in tests/unit/stubs/, no source modifications - Fix geohash.c bit extraction bug (3-byte span) found by unit tests - test_geohash: 11/11 passing with reference vectors (Munich, NYC, origin, boundaries)
2026-05-16Fix test 22: use dynamic TOLLGATE_IP instead of hardcoded 192.168.4.1 for ↵Your Name
route management
2026-05-16Fix captive portal detection on GrapheneOS + embed mint URL in portal HTMLYour Name
- Add esp_netif_set_dns_info() on AP interface so DHCP advertises AP as DNS server to clients (fixes captive portal on GrapheneOS) - Embed price and mint URL directly in portal HTML via server-side template substitution (no JavaScript fetch to :2121 needed) - Move supported mints section below the token input field - Add Playwright tests: no unresolved placeholders, embedded mint/price, DOM order verification (14/14 passing)
2026-05-16Unique SSID/IP per board + captive detection fix + mint list in portalYour Name
- Derive unique SSID (TollGate-{MAC4}{MAC5}) and AP IP (10.{b5}.{subnet}.1) from factory MAC — boards no longer conflict - Board A: TollGate-377C @ 10.55.85.1, Board B: TollGate-5050 @ 10.80.10.1 - Captive portal detection URIs return 200 with portal HTML (matching esp32-mesh working approach) instead of 302 redirect - Dynamic AP IP in portal HTML via __AP_IP__ template substitution - Supported mints section in portal page (shows mint URL, tap to copy) - Fixed mint URL to testnut.cashu.space (was stale in SPIFFS) - DoT reject server on port 853 for DNS-over-TLS fallback - DNS hijack: NXDOMAIN for all non-A queries, no forwarding for unauthed - Playwright tests updated for 200 response on detection URIs - Phase 2 test suite: 20/21 pass (test 22 expiry ping route issue) - Tests 25-27 deferred to Phase 3 (Board B as second client)
2026-05-16Phase 2 Playwright tests: 10/10 passing (portal, captive detection, API)Your Name
- Updated from Phase 1 tests to Phase 2 (302 redirects, Cashu token input) - Test captive detection URIs return 302 (using request API) - Test invalid token via request API (no CORS issues) - Tests: portal branding, price, token input, pay button, detection redirects - Tests: whoami, usage, API advertisement, invalid token
2026-05-16Phase 2 tests 22-23 passing: session expiry + renewal (21/21)Your Name
- Test 22: session expires after allotment, internet blocked, usage returns -1/-1 - Test 23: second token renews session, internet restored - Test 18 fix: add route through TollGate before ping, pipe sudo password - All 21 Phase 2 tests pass
2026-05-16Captive portal detection fix + Phase 2 tests 16-18,20 passing (17/17)Your Name
- Add DoT reject server on port 853 (TCP RST forces DNS-over-TLS fallback) - DNS hijack returns NXDOMAIN for all non-A query types (no forwarding for unauthed) - Shorter TTL on hijack responses (10s) for faster captive detection - Explicit 302 redirect handlers for /generate_204, /hotspot-detect.html, etc. - HTTP and DNS request logging for debugging captive detection - Per-MAC tracking in firewall (find_by_mac, get_mac_for_ip with ARP fallback) - Session MAC tracking (session_find_by_mac) - Phase 2 test 18: add route through TollGate before ping test - All 17 Phase 2 tests pass (15-21 + whoami + portal form)
2026-05-15Phase 2 WIP: Cashu payment endpoints, session tracking, updated checklistYour Name
- Add cashu.c/h: Cashu token decode (cashuA/base64url), proof state check via mint API, allotment calculator - Add session.c/h: time-based session management with allotment/expiry, spent secret tracking - Add tollgate_api.c/h: HTTP server on :2121 with GET / (kind=10021 discovery), POST / (payment processing), /usage, /whoami - Update captive portal HTML: replace Grant Free Access with Cashu token paste form + Pay & Connect button - Update tollgate_main.c: wire in session manager, TollGate API, 1s session tick loop - Add tests/phase2.mjs: Phase 2 test suite (discovery, invalid token, wrong mint, valid payment) - Update CHECKLIST.md: reflect Phase 1 complete, Phase 2 in progress with known bugs Known issues (not yet flashed): - Stack overflow crash in httpd POST handler (need stack_size=16384 + heap allocations) - cashu_decode_token uses 2KB stack buffer (needs heap alloc) - Mint URL should be testnut.cashu.space (nofee.testnut has API compat issues)
2026-05-15Phase 1 working: captive portal, DNS hijack, NAT-based access controlYour Name
- Fix WiFi init order: netif creation before esp_wifi_init, set mode before set_config - Replace broken netif input filter with NAPT on/off per authentication state - NAPT disabled by default, enabled when client granted, disabled on revoke - Fix test helpers: use -I wlp59s0 for ping, handle nslookup exit code 1 - All 20 API tests pass, all 6 smoke tests pass