70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
from datetime import date, timezone
|
|
|
|
import pytest
|
|
|
|
from lnbits.core.crud import (
|
|
create_wallet,
|
|
delete_wallet,
|
|
get_wallet,
|
|
get_wallet_for_key,
|
|
)
|
|
from lnbits.core.crud.payments import get_payment
|
|
from lnbits.core.models import CreateInvoice
|
|
from lnbits.core.services.payments import create_wallet_invoice
|
|
from lnbits.db import POSTGRES
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_date_conversion(db):
|
|
if db.type == POSTGRES:
|
|
row = await db.fetchone("SELECT now()::date as now")
|
|
assert row and isinstance(row.get("now"), date)
|
|
|
|
|
|
@pytest.mark.anyio
|
|
async def test_payment_datetime_fields_have_timezone(app, to_user):
|
|
"""Test that Payment datetime fields always have UTC timezone info."""
|
|
wallet = await create_wallet(user_id=to_user.id, wallet_name="test_tz_wallet")
|
|
invoice_data = CreateInvoice(amount=10, memo="timezone_test", out=False)
|
|
invoice = await create_wallet_invoice(wallet.id, invoice_data)
|
|
|
|
payment = await get_payment(invoice.checking_id)
|
|
assert payment is not None
|
|
|
|
# All datetime fields should have UTC timezone info
|
|
assert payment.time.tzinfo == timezone.utc
|
|
assert payment.created_at.tzinfo == timezone.utc
|
|
assert payment.updated_at.tzinfo == timezone.utc
|
|
if payment.expiry:
|
|
assert payment.expiry.tzinfo == timezone.utc
|
|
|
|
|
|
# make test to create wallet and delete wallet
|
|
@pytest.mark.anyio
|
|
async def test_create_wallet_and_delete_wallet(app, to_user):
|
|
# create wallet
|
|
wallet = await create_wallet(user_id=to_user.id, wallet_name="test_wallet_delete")
|
|
assert wallet
|
|
|
|
# delete wallet
|
|
await delete_wallet(user_id=to_user.id, wallet_id=wallet.id)
|
|
|
|
# check if wallet is deleted
|
|
del_wallet = await get_wallet(wallet.id)
|
|
assert del_wallet is None
|
|
|
|
# check if wallet is deleted
|
|
del_wallet = await get_wallet(wallet.id, False)
|
|
assert del_wallet is None
|
|
|
|
del_wallet = await get_wallet(wallet.id, None)
|
|
assert del_wallet is not None
|
|
assert del_wallet.deleted is True
|
|
|
|
del_wallet = await get_wallet(wallet.id, True)
|
|
assert del_wallet is not None
|
|
assert del_wallet.deleted is True
|
|
|
|
del_wallet = await get_wallet_for_key(wallet.inkey)
|
|
assert del_wallet is None
|