chatelet/tests
Padreug 0dad30b648 feat: card rail via LNbits fiat providers (Stripe), per operator
A guest may pay a fiat-priced room by card when its owner has opted in and
LNbits core has a fiat provider for that user — resolved through
settings.get_fiat_providers_for_user(owner), the seam lnbits#67's per-user
Stripe Connect credentials will plug into; chatelet stores no credentials.

Both rails now go through create_payment_request: Lightning unchanged
(sats, deposit_sat), card charges the same deposit share of the fiat price
in the room's currency with extra.checkout parameterising the hosted
Stripe page — success/cancel return to {frontend}/chatelet/{room}?checkout=…
&booking=<id>, customer_email, line item, metadata. frontend_url is
allow-listed against the instance's trusted origins (ported from events)
and resolved before the hold so a refused rail never leaves a dead hold.
Core settles the Stripe webhook onto the same invoice queue, so
tasks.on_invoice_paid confirms card bookings unchanged.

BookingRequestData gains payment_method / fiat_provider / frontend_url;
BookingQuote gains fiat_payment_request / fiat_provider / is_fiat and a
nullable payment_request. RPC chatelet_booking_request passes the fields
through. min_lnbits_version → 1.4.1 (events' floor for these APIs).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 12:25:31 +02:00
..
__init__.py test: booking-flow, availability, and #4 concurrency regression 2026-07-19 17:48:11 +02:00
conftest.py feat: per-operator settings — house rules + card acceptance (multi-tenant) 2026-09-16 12:16:14 +02:00
test_admin_endpoints.py test: operator admin endpoint logic (ownership, update, settings merge) 2026-07-20 00:44:10 +02:00
test_atomic_hold.py feat: card rail via LNbits fiat providers (Stripe), per operator 2026-09-16 12:25:31 +02:00
test_availability.py test: booking-flow, availability, and #4 concurrency regression 2026-07-19 17:48:11 +02:00
test_availability_endpoint.py fix(models): restore check_in/check_out on AvailabilityQuery 2026-09-16 11:42:43 +02:00
test_booking_flow.py feat: card rail via LNbits fiat providers (Stripe), per operator 2026-09-16 12:25:31 +02:00
test_events.py test: event-builder shape (30402/30078/31923/22001) 2026-07-19 18:09:35 +02:00
test_fiat_checkout.py feat: card rail via LNbits fiat providers (Stripe), per operator 2026-09-16 12:25:31 +02:00
test_frontend_root.py feat: card rail via LNbits fiat providers (Stripe), per operator 2026-09-16 12:25:31 +02:00
test_giftwrap.py test: NIP-59 gift wrap structure + crypto round-trip 2026-07-19 20:34:12 +02:00
test_migrations.py test: real-DB migration test (#14) 2026-07-20 00:10:52 +02:00
test_my_bookings.py style: ruff nits in the my-bookings slice 2026-09-16 12:18:15 +02:00
test_operator_settings.py feat: per-operator settings — house rules + card acceptance (multi-tenant) 2026-09-16 12:16:14 +02:00
test_public_endpoints.py feat: per-operator settings — house rules + card acceptance (multi-tenant) 2026-09-16 12:16:14 +02:00
test_unavailable_ranges.py feat(api): keyless unavailable-ranges feed for the guest calendar 2026-09-16 11:45:51 +02:00