From 24469fd7f4dd390f295ecc4ca3fbbcb59c019d61 Mon Sep 17 00:00:00 2001 From: Martin Varga Date: Wed, 16 Apr 2025 16:28:10 +0200 Subject: [PATCH] Fix username generation with long int suffixes --- server/mergin/auth/models.py | 4 ++-- server/mergin/tests/test_auth.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/mergin/auth/models.py b/server/mergin/auth/models.py index 31499ad3..e697c3f5 100644 --- a/server/mergin/auth/models.py +++ b/server/mergin/auth/models.py @@ -212,12 +212,12 @@ def generate_username(cls, email: str) -> Optional[str]: text( """ SELECT - replace(lower(username), :username, '0')::int AS suffix + replace(lower(username), :username, '0')::bigint AS suffix FROM "user" WHERE lower(username) = :username OR lower(username) SIMILAR TO :username_like - ORDER BY replace(lower(username), :username, '0')::int DESC + ORDER BY replace(lower(username), :username, '0')::bigint DESC LIMIT 1; """ ), diff --git a/server/mergin/tests/test_auth.py b/server/mergin/tests/test_auth.py index a5217f6a..b717b4e4 100644 --- a/server/mergin/tests/test_auth.py +++ b/server/mergin/tests/test_auth.py @@ -866,6 +866,10 @@ def test_username_generation(client): user = add_user("testuser1") assert User.generate_username("Testuser@example.com") == "testuser2" + # test username with crazy long int suffix + user = add_user("testuser13120931904") + assert User.generate_username("Testuser@example.com") == "testuser13120931905" + def test_server_usage(client): """Test server usage endpoint"""