feat: implement automatic crediting of new accounts with 1 million satoshis

- Modified the user account creation process to automatically credit new
accounts with 1,000,000 satoshis upon creation.
- Updated the `create_user_account_no_ckeck` function to include error
handling and logging for the credit operation.
- Enhanced tests to verify the balance for newly registered users,
ensuring the correct credit amount is applied.
- Documented affected account creation paths and testing instructions in
the new `AUTO_CREDIT_CHANGES.md` file.

fix: pass db connection to update_wallet_balance to prevent SQLite deadlock

The auto-credit feature was causing a deadlock on SQLite because
update_wallet_balance was opening a new database connection while
already inside a transaction. By passing conn=conn, we reuse the
existing connection and avoid the deadlock.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
padreug 2025-10-15 00:56:14 +02:00
parent 17e698b623
commit ab19685a2a
3 changed files with 105 additions and 0 deletions

View file

@ -295,6 +295,10 @@ async def test_register_ok(http_client: AsyncClient):
assert (
len(user.wallets) == 1
), f"Expected 1 default wallet, not {len(user.wallets)}."
# Check that the wallet has 1 million satoshis
wallet = user.wallets[0]
assert wallet.balance == 1_000_000, f"Expected 1,000,000 sats balance, got {wallet.balance} sats"
@pytest.mark.anyio
@ -588,6 +592,10 @@ async def test_register_nostr_ok(http_client: AsyncClient, settings: Settings):
assert (
len(user.wallets) == 1
), f"Expected 1 default wallet, not {len(user.wallets)}."
# Check that the wallet has 1 million satoshis
wallet = user.wallets[0]
assert wallet.balance == 1_000_000, f"Expected 1,000,000 sats balance, got {wallet.balance} sats"
@pytest.mark.anyio