diff --git a/aiogram_tonconnect/tonconnect/models.py b/aiogram_tonconnect/tonconnect/models.py index 8d653c9..bdf9c92 100644 --- a/aiogram_tonconnect/tonconnect/models.py +++ b/aiogram_tonconnect/tonconnect/models.py @@ -136,7 +136,7 @@ class ATCUser(BaseModel): """ id: int - language_code: str + language_code: Optional[str] = Field(default=None) app_wallet: Optional[AppWallet] = Field(default=None) info_wallet: Optional[InfoWallet] = Field(default=None) account_wallet: Optional[AccountWallet] = Field(default=None) diff --git a/test/test_middleware.py b/test/test_middleware.py new file mode 100644 index 0000000..7701429 --- /dev/null +++ b/test/test_middleware.py @@ -0,0 +1,29 @@ +from unittest.mock import MagicMock, AsyncMock + +import pytest + +from aiogram_tonconnect.middleware import AiogramTonConnectMiddleware + + +@pytest.mark.asyncio +async def test_user_with_null_language_code(): + mock_storage = MagicMock() + middleware = AiogramTonConnectMiddleware(storage=mock_storage, manifest_url='https://example.com') + dummy_handler = AsyncMock() + + class MockChat: + type = 'private' + + class MockUser: + id = 123 + is_bot = False + language_code = None + + mock_state = AsyncMock() + mock_state.get_data = AsyncMock(return_value={}) + + await middleware(handler=dummy_handler, event=MagicMock(), data={ + 'state': mock_state, + 'event_from_user': MockUser(), + 'event_chat': MockChat(), + }) diff --git a/test/test_wallet_manager.py b/test/test_wallet_manager.py index 66f54d4..85edbac 100644 --- a/test/test_wallet_manager.py +++ b/test/test_wallet_manager.py @@ -14,6 +14,6 @@ async def test_wallet_get_wallets(wallets_order, expected_wallets): wm = WalletManager(wallets_order=wallets_order) wallets = await wm.get_wallets() wallet_names = [wallet.app_name for wallet in wallets] - assert wallet_names == expected_wallets + assert wallet_names[:len(expected_wallets)] == expected_wallets