From 45f30b3e0b8f86422785848ed8080b312f441fc7 Mon Sep 17 00:00:00 2001 From: pctablet505 Date: Wed, 15 Jul 2026 11:24:53 +0000 Subject: [PATCH 1/2] fix: increase OAuth token column length to 4096 --- fastapi_users_db_sqlalchemy/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastapi_users_db_sqlalchemy/__init__.py b/fastapi_users_db_sqlalchemy/__init__.py index 467a2bf..73fac6b 100644 --- a/fastapi_users_db_sqlalchemy/__init__.py +++ b/fastapi_users_db_sqlalchemy/__init__.py @@ -69,10 +69,10 @@ class SQLAlchemyBaseOAuthAccountTable(Generic[ID]): oauth_name: Mapped[str] = mapped_column( String(length=100), index=True, nullable=False ) - access_token: Mapped[str] = mapped_column(String(length=1024), nullable=False) + access_token: Mapped[str] = mapped_column(String(length=4096), nullable=False) expires_at: Mapped[Optional[int]] = mapped_column(Integer, nullable=True) refresh_token: Mapped[Optional[str]] = mapped_column( - String(length=1024), nullable=True + String(length=4096), nullable=True ) account_id: Mapped[str] = mapped_column( String(length=320), index=True, nullable=False From 3ddff33435d30b7b7963857033179bc272b1bb08 Mon Sep 17 00:00:00 2001 From: pctablet505 Date: Wed, 15 Jul 2026 11:36:58 +0000 Subject: [PATCH 2/2] test: add regression test for >1024 char OAuth access_token --- tests/test_users.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/test_users.py b/tests/test_users.py index 4a83e39..10ef30f 100644 --- a/tests/test_users.py +++ b/tests/test_users.py @@ -219,3 +219,31 @@ async def test_queries_oauth( "foo", "bar" ) assert unknown_oauth_user is None + + +@pytest.mark.asyncio +async def test_oauth_long_access_token_roundtrip( + sqlalchemy_user_db_oauth: SQLAlchemyUserDatabase[UserOAuth, UUID_ID], +): + """A long (>1024 characters) OAuth access_token should round-trip without truncation.""" + user_create = { + "email": "lancelot@camelot.bt", + "hashed_password": "guinevere", + } + + user = await sqlalchemy_user_db_oauth.create(user_create) + long_access_token = "a" * 2048 + oauth_account = { + "oauth_name": "service1", + "access_token": long_access_token, + "expires_at": 1579000751, + "account_id": "user_oauth_long", + "account_email": "king.arthur@camelot.bt", + } + + user = await sqlalchemy_user_db_oauth.add_oauth_account(user, oauth_account) + assert user.oauth_accounts[0].access_token == long_access_token + + fetched_user = await sqlalchemy_user_db_oauth.get(user.id) + assert fetched_user is not None + assert fetched_user.oauth_accounts[0].access_token == long_access_token